{
  "swagger": "2.0",
  "info": {
    "title": "NAKATAKU ENGINE Public API",
    "description": "ContentSpace、Asset upload、Indexing、Direct Search の公開 schema-only 契約。認証済み主体から SecurityContext を解決する処理は Gateway runtime が担う。",
    "version": "1.0"
  },
  "tags": [
    {
      "name": "ContentSpaces",
      "description": "媒体知識をまとめる ContentSpace の公開操作"
    },
    {
      "name": "Assets",
      "description": "Asset の direct upload と参照操作"
    },
    {
      "name": "Indexing",
      "description": "再構築可能な Index Projection の非同期操作"
    },
    {
      "name": "Runs",
      "description": "公開非同期 run の状態確認と取消"
    },
    {
      "name": "Search",
      "description": "ContentSpace 内の根拠付き Direct Search"
    },
    {
      "name": "PublicLifecycleService",
      "description": "PublicLifecycleService は ContentSpace、Asset direct upload、Indexing、Direct Search の公開 schema-only facade である。\n外部 request は SecurityContext の3参照を持たず、Gateway runtime が認証済み主体から解決して注入する。"
    }
  ],
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "paths": {
    "/v1.0/asset-uploads/{assetUploadId}": {
      "get": {
        "summary": "multipart upload の状態を取得する",
        "operationId": "getAssetUpload",
        "responses": {
          "200": {
            "description": "upload の現在状態を返す。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceGetAssetUploadResponse"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "Asset upload が存在しない、期限切れ、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "501": {
            "description": "schema-only のため、この operation はまだ利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "not_implemented",
                "message": "この機能はまだ利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "assetUploadId",
            "description": "asset_upload_id は取得する opaque な upload ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Assets"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/asset-uploads/{assetUploadId}:cancel": {
      "post": {
        "summary": "multipart upload を取消する",
        "operationId": "cancelAssetUpload",
        "responses": {
          "200": {
            "description": "取消後または既に到達済みの終端状態を返す。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceCancelAssetUploadResponse"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "Asset upload が存在しない、期限切れ、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "501": {
            "description": "schema-only のため、この operation はまだ利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "not_implemented",
                "message": "この機能はまだ利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "assetUploadId",
            "description": "asset_upload_id は取消対象の opaque な upload ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          },
          {
            "name": "Idempotency-Key",
            "description": "同一 upload の取消を収束させる key。visible ASCII、最大255 byte。",
            "in": "header",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Assets"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/asset-uploads/{assetUploadId}:complete-multipart": {
      "post": {
        "summary": "multipart upload の完了と非同期検証を開始する",
        "operationId": "completeMultipartAssetUpload",
        "responses": {
          "202": {
            "description": "完了を受理し、検証中の upload snapshot を返す。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceCompleteMultipartAssetUploadResponse"
            },
            "headers": {
              "Location": {
                "description": "検証中の multipart upload resource の URL",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "Asset upload が存在しない、期限切れ、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "501": {
            "description": "schema-only のため、この operation はまだ利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "not_implemented",
                "message": "この機能はまだ利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "assetUploadId",
            "description": "asset_upload_id は完了させる multipart upload の opaque な ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PublicLifecycleServiceCompleteMultipartAssetUploadBody"
            }
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          },
          {
            "name": "Idempotency-Key",
            "description": "同一 part 集合の完了受付を収束させる key。visible ASCII、最大255 byte。",
            "in": "header",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Assets"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/asset-uploads/{assetUploadId}:confirm": {
      "post": {
        "summary": "Asset upload を確定する",
        "operationId": "confirmAssetUpload",
        "responses": {
          "201": {
            "description": "digest 検証後の Asset と immutable version を確定した。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceConfirmAssetUploadResponse"
            },
            "headers": {
              "Location": {
                "description": "確定した Asset の取得 URL",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "Asset upload が存在しない、期限切れ、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "assetUploadId",
            "description": "asset_upload_id は確認する opaque な upload ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          },
          {
            "name": "Idempotency-Key",
            "description": "同一主体、version、endpoint、security workspace 内で確定を収束させる key。visible ASCII、最大255 byte。",
            "in": "header",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Assets"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/asset-uploads/{assetUploadId}:presign-parts": {
      "post": {
        "summary": "multipart part の upload URL を発行する",
        "operationId": "presignAssetUploadParts",
        "responses": {
          "200": {
            "description": "指定 part の短期 upload 条件を返す。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServicePresignAssetUploadPartsResponse"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "Asset upload が存在しない、期限切れ、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "501": {
            "description": "schema-only のため、この operation はまだ利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "not_implemented",
                "message": "この機能はまだ利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "assetUploadId",
            "description": "asset_upload_id は対象 multipart upload の opaque な ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PublicLifecycleServicePresignAssetUploadPartsBody"
            }
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          },
          {
            "name": "Idempotency-Key",
            "description": "同一 request の URL 発行を収束させる key。visible ASCII、最大255 byte。",
            "in": "header",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Assets"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/assets/{assetId}": {
      "get": {
        "summary": "Asset を取得する",
        "operationId": "getAsset",
        "responses": {
          "200": {
            "description": "Asset と immutable な現行版を返す。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceGetAssetResponse"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "Asset が存在しない、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "assetId",
            "description": "asset_id は取得する `asset_` + ULID 形式の Asset ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Assets"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/assets/{assetId}/index-status": {
      "get": {
        "summary": "Asset の index 状態を取得する",
        "operationId": "getAssetIndexStatus",
        "responses": {
          "200": {
            "description": "Index Projection の公開 snapshot を返す。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceGetAssetIndexStatusResponse"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "Asset または index 状態が存在しない、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "assetId",
            "description": "asset_id は状態を取得する `asset_` + ULID 形式の Asset ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Indexing"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/assets/{assetId}:index": {
      "post": {
        "summary": "Asset の indexing を submit する",
        "operationId": "submitAssetIndex",
        "responses": {
          "202": {
            "description": "Indexing run を受理した。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceSubmitAssetIndexResponse"
            },
            "headers": {
              "Location": {
                "description": "受理した run の状態取得 URL",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "Asset が存在しない、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "assetId",
            "description": "asset_id は indexing 対象の `asset_` + ULID 形式の Asset ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          },
          {
            "name": "Idempotency-Key",
            "description": "同一主体、version、endpoint、security workspace 内で submit を収束させる key。visible ASCII、最大255 byte。",
            "in": "header",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Indexing"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/content-spaces": {
      "get": {
        "summary": "ContentSpace の一覧を取得する",
        "operationId": "listContentSpaces",
        "responses": {
          "200": {
            "description": "ContentSpace page を返す。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceListContentSpacesResponse"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "pageSize",
            "description": "page_size は1以上100以下で、0の場合は server 既定値50を使用する。",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "pageToken",
            "description": "page_token は直前 response の opaque な継続 token であり、初回は空文字である。",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ContentSpaces"
        ],
        "x-nakataku-availability": "schema-only"
      },
      "post": {
        "summary": "ContentSpace を作成する",
        "operationId": "createContentSpace",
        "responses": {
          "201": {
            "description": "ContentSpace を作成した。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceCreateContentSpaceResponse"
            },
            "headers": {
              "Location": {
                "description": "作成した ContentSpace の取得 URL",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceCreateContentSpaceRequest"
            }
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          },
          {
            "name": "Idempotency-Key",
            "description": "同一主体、version、endpoint、security workspace 内で作成を収束させる key。visible ASCII、最大255 byte。",
            "in": "header",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "ContentSpaces"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/content-spaces/{contentSpaceId}": {
      "get": {
        "summary": "ContentSpace を取得する",
        "operationId": "getContentSpace",
        "responses": {
          "200": {
            "description": "ContentSpace を返す。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceGetContentSpaceResponse"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "ContentSpace が存在しない、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "contentSpaceId",
            "description": "content_space_id は取得する `space_` + ULID 形式の ContentSpace ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "ContentSpaces"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/content-spaces/{contentSpaceId}/asset-uploads": {
      "post": {
        "summary": "Asset upload を登録する",
        "description": "媒体本体は request body に含めず、後続の presigned URL へ直接送信する。",
        "operationId": "registerAssetUpload",
        "responses": {
          "201": {
            "description": "Asset upload resource を作成した。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceRegisterAssetUploadResponse"
            },
            "headers": {
              "Location": {
                "description": "作成した Asset upload resource の URL",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "ContentSpace が存在しない、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "contentSpaceId",
            "description": "content_space_id は Asset を登録する `space_` + ULID 形式の ContentSpace ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PublicLifecycleServiceRegisterAssetUploadBody"
            }
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          },
          {
            "name": "Idempotency-Key",
            "description": "同一主体、version、endpoint、security workspace 内で登録を収束させる key。visible ASCII、最大255 byte。",
            "in": "header",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Assets"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/content-spaces/{contentSpaceId}/assets": {
      "get": {
        "summary": "Asset の一覧を取得する",
        "operationId": "listAssets",
        "responses": {
          "200": {
            "description": "Asset page を返す。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceListAssetsResponse"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "ContentSpace が存在しない、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "contentSpaceId",
            "description": "content_space_id は一覧対象の `space_` + ULID 形式の ContentSpace ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "pageSize",
            "description": "page_size は1以上100以下で、0の場合は server 既定値50を使用する。",
            "in": "query",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "pageToken",
            "description": "page_token は直前 response の opaque な継続 token であり、初回は空文字である。",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Assets"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/content-spaces/{contentSpaceId}/multipart-asset-uploads": {
      "post": {
        "summary": "大容量媒体の multipart upload を登録する",
        "operationId": "registerMultipartAssetUpload",
        "responses": {
          "201": {
            "description": "multipart upload session を作成した。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceRegisterMultipartAssetUploadResponse"
            },
            "headers": {
              "Location": {
                "description": "作成した multipart upload resource の URL",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "ContentSpace が存在しない、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "501": {
            "description": "schema-only のため、この operation はまだ利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "not_implemented",
                "message": "この機能はまだ利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "contentSpaceId",
            "description": "content_space_id は Asset を登録する `space_` + ULID 形式の ContentSpace ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PublicLifecycleServiceRegisterMultipartAssetUploadBody"
            }
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          },
          {
            "name": "Idempotency-Key",
            "description": "同一主体、version、endpoint、security workspace 内で登録を収束させる key。visible ASCII、最大255 byte。",
            "in": "header",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Assets"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/runs/{runId}": {
      "get": {
        "summary": "非同期 run を取得する",
        "operationId": "getRun",
        "responses": {
          "200": {
            "description": "公開 run snapshot を返す。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceGetRunResponse"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "run が存在しない、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "runId",
            "description": "run_id は取得する stable な durable run ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "tags": [
          "Runs"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/runs/{runId}:cancel": {
      "post": {
        "summary": "非同期 run の取消を要求する",
        "operationId": "cancelRun",
        "responses": {
          "202": {
            "description": "取消要求を受理した。返却 state は terminal 完了を保証しない。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceCancelRunResponse"
            },
            "headers": {
              "Location": {
                "description": "取消後の run 状態取得 URL",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開 request の形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API key を検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要な challenge。値は runtime contract で定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "run が存在しない、または security workspace から参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "429": {
            "description": "rate limit または quota を超過した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "headers": {
              "Retry-After": {
                "description": "再試行までの秒数または HTTP-date",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "credential provider が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "runId",
            "description": "run_id は取消対象の stable な durable run ID である。",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          },
          {
            "name": "Idempotency-Key",
            "description": "同一主体、version、endpoint、security workspace 内で取消受付を収束させる key。visible ASCII、最大255 byte。",
            "in": "header",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Runs"
        ],
        "x-nakataku-availability": "schema-only"
      }
    },
    "/v1.0/search": {
      "post": {
        "summary": "ContentSpace を根拠付きで検索する",
        "operationId": "directSearch",
        "responses": {
          "200": {
            "description": "根拠付きMomentを返した。該当なしはresultsが空の成功responseである。",
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceDirectSearchResponse"
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "400": {
            "description": "公開requestの形式、必須項目、または範囲が不正である。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "invalid_request",
                "message": "リクエストを処理できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "401": {
            "description": "API keyを検証できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "authentication_failed",
                "message": "認証できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "Www-Authenticate": {
                "description": "認証に必要なchallenge。値はruntime contractで定義する。",
                "type": "string"
              },
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "404": {
            "description": "ContentSpaceが存在しない、またはsecurity workspaceから参照できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "resource_not_found",
                "message": "リソースが見つかりません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "409": {
            "description": "検索可能なactive routeがなく、完全な結果を返せない。部分結果は返さない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "precondition_failed",
                "message": "検索を開始できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "500": {
            "description": "予期しない内部失敗が発生した。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "internal_error",
                "message": "内部エラーが発生しました。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          },
          "503": {
            "description": "検索provider、credential provider、または検索資源が一時的に利用できない。",
            "schema": {
              "$ref": "#/definitions/v1PublicError"
            },
            "examples": {
              "application/json": {
                "code": "service_unavailable",
                "message": "サービスを一時的に利用できません。",
                "requestId": "req_..."
              }
            },
            "headers": {
              "X-Api-Version": {
                "description": "実際に処理した API version",
                "type": "string",
                "default": "1.0"
              },
              "X-Request-Id": {
                "description": "要求相関 ID",
                "type": "string"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/v1PublicLifecycleServiceDirectSearchRequest"
            }
          },
          {
            "name": "X-Request-Id",
            "description": "要求相関 ID。省略時は Gateway が生成する。",
            "in": "header",
            "required": false,
            "type": "string"
          },
          {
            "name": "Idempotency-Key",
            "description": "同一主体、version、endpoint、security workspace 内で検索とArtifact保存を収束させる key。visible ASCII、最大255 byte。",
            "in": "header",
            "required": true,
            "type": "string"
          }
        ],
        "tags": [
          "Search"
        ],
        "x-nakataku-availability": "schema-only"
      }
    }
  },
  "definitions": {
    "PublicLifecycleServiceCompleteMultipartAssetUploadBody": {
      "type": "object",
      "properties": {
        "parts": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PublicCompletedUploadPart"
          },
          "title": "parts は全 part の照合情報であり、part_number 昇順かつ欠番なしでなければならない。"
        }
      },
      "title": "PublicCompleteMultipartAssetUploadRequest は全 part の登録と非同期検証の開始を要求する。"
    },
    "PublicLifecycleServicePresignAssetUploadPartsBody": {
      "type": "object",
      "properties": {
        "partNumbers": {
          "type": "array",
          "items": {
            "type": "integer",
            "format": "int64"
          },
          "title": "part_numbers はURLを発行する1始まりの part 番号であり、重複を許さない。"
        },
        "partChecksums": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PublicUploadPartChecksum"
          },
          "title": "part_checksums はCRC32CとSHA-256をupload条件へ固定するpart条件である。"
        }
      },
      "title": "PublicPresignAssetUploadPartsRequest は指定した未完了 part の短期 URL 発行を要求する。"
    },
    "PublicLifecycleServiceRegisterAssetUploadBody": {
      "type": "object",
      "properties": {
        "displayName": {
          "type": "string",
          "title": "display_name は1文字以上200文字以下の利用者向け表示名である。"
        },
        "mediaType": {
          "$ref": "#/definitions/v1PublicMediaType",
          "title": "media_type は登録する媒体種別である。"
        },
        "digest": {
          "type": "string",
          "title": "digest は登録内容の `sha256:` + hex 形式の digest である。"
        },
        "sizeBytes": {
          "type": "string",
          "format": "uint64",
          "title": "size_bytes は登録内容の byte 単位の正のサイズである。"
        },
        "contentType": {
          "type": "string",
          "title": "content_type は媒体本体の MIME type であり、署名対象 header と一致させる。"
        }
      },
      "title": "PublicRegisterAssetUploadRequest は direct upload 前に媒体 metadata を登録する。",
      "required": [
        "displayName",
        "mediaType",
        "digest",
        "sizeBytes"
      ]
    },
    "PublicLifecycleServiceRegisterMultipartAssetUploadBody": {
      "type": "object",
      "properties": {
        "displayName": {
          "type": "string",
          "title": "display_name は1文字以上200文字以下の利用者向け表示名である。"
        },
        "mediaType": {
          "$ref": "#/definitions/v1PublicMediaType",
          "title": "media_type は登録する媒体種別である。"
        },
        "sizeBytes": {
          "type": "string",
          "format": "uint64",
          "title": "size_bytes は登録内容の byte 単位の正のサイズであり、10 GiB 以下でなければならない。"
        },
        "contentType": {
          "type": "string",
          "title": "content_type は媒体本体の MIME type であり、署名対象 header と一致させる。"
        },
        "expectedDigest": {
          "type": "string",
          "title": "expected_digest は省略可能な `sha256:` + hex 形式の期待 digest であり、空文字は未指定を表す。"
        }
      },
      "title": "PublicRegisterMultipartAssetUploadRequest は大容量 direct upload 前に媒体 metadata を登録する。",
      "required": [
        "displayName",
        "mediaType",
        "sizeBytes",
        "contentType"
      ]
    },
    "v1PublicAsset": {
      "type": "object",
      "properties": {
        "assetId": {
          "type": "string",
          "title": "asset_id は `asset_` + ULID 形式の論理 Asset ID である。"
        },
        "contentSpaceId": {
          "type": "string",
          "title": "content_space_id は Asset が属する `space_` + ULID 形式の ContentSpace ID である。"
        },
        "mediaType": {
          "$ref": "#/definitions/v1PublicMediaType",
          "title": "media_type は Asset の媒体種別である。"
        },
        "displayName": {
          "type": "string",
          "title": "display_name は利用者向け表示名であり、Asset の同一性を決めない。"
        },
        "currentVersion": {
          "$ref": "#/definitions/v1PublicAssetVersion",
          "title": "current_version は現在選択されている immutable な AssetVersion の公開 projection である。"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "title": "created_at は論理 Asset が最初に登録された UTC 時刻である。"
        }
      },
      "title": "PublicAsset は内部 Artifact と workspace 参照を含まない論理 Asset の公開 projection である。"
    },
    "v1PublicAssetUpload": {
      "type": "object",
      "properties": {
        "assetUploadId": {
          "type": "string",
          "title": "asset_upload_id は register、presign、confirm の間で安定する opaque な upload ID である。"
        },
        "assetId": {
          "type": "string",
          "title": "asset_id は upload 完了後も維持される `asset_` + ULID 形式の論理 Asset ID である。"
        },
        "contentSpaceId": {
          "type": "string",
          "title": "content_space_id は登録先の `space_` + ULID 形式の ContentSpace ID である。"
        },
        "state": {
          "$ref": "#/definitions/v1PublicAssetUploadState",
          "title": "state は direct upload の現在状態であり、CONFIRMED または EXPIRED から別の成功状態へ遷移しない。"
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time",
          "title": "expires_at は upload 登録を再作成せず利用できる期限の UTC 時刻である。"
        }
      },
      "title": "PublicAssetUpload は媒体本体を Gateway に保持しない direct upload の登録状態を表す。"
    },
    "v1PublicAssetUploadState": {
      "type": "string",
      "enum": [
        "PUBLIC_ASSET_UPLOAD_STATE_UNSPECIFIED",
        "PUBLIC_ASSET_UPLOAD_STATE_REGISTERED",
        "PUBLIC_ASSET_UPLOAD_STATE_CONFIRMED",
        "PUBLIC_ASSET_UPLOAD_STATE_EXPIRED",
        "PUBLIC_ASSET_UPLOAD_STATE_UPLOADING",
        "PUBLIC_ASSET_UPLOAD_STATE_PROCESSING",
        "PUBLIC_ASSET_UPLOAD_STATE_REJECTED",
        "PUBLIC_ASSET_UPLOAD_STATE_FAILED",
        "PUBLIC_ASSET_UPLOAD_STATE_CANCELLED"
      ],
      "default": "PUBLIC_ASSET_UPLOAD_STATE_UNSPECIFIED",
      "description": "- PUBLIC_ASSET_UPLOAD_STATE_UNSPECIFIED: PUBLIC_ASSET_UPLOAD_STATE_UNSPECIFIED は状態が未指定であり、有効な upload 状態として扱わない。\n - PUBLIC_ASSET_UPLOAD_STATE_REGISTERED: PUBLIC_ASSET_UPLOAD_STATE_REGISTERED は metadata を受理し、presigned URL を発行した状態を表す。\n - PUBLIC_ASSET_UPLOAD_STATE_CONFIRMED: PUBLIC_ASSET_UPLOAD_STATE_CONFIRMED は digest 検証後に immutable AssetVersion が確定した状態を表す。\n - PUBLIC_ASSET_UPLOAD_STATE_EXPIRED: PUBLIC_ASSET_UPLOAD_STATE_EXPIRED は upload の有効期間が終了し、再登録が必要な終端状態を表す。\n - PUBLIC_ASSET_UPLOAD_STATE_UPLOADING: PUBLIC_ASSET_UPLOAD_STATE_UPLOADING は multipart upload の part を受け付けている状態を表す。\n - PUBLIC_ASSET_UPLOAD_STATE_PROCESSING: PUBLIC_ASSET_UPLOAD_STATE_PROCESSING は multipart 完了後の検証と immutable version 確定を実行中である。\n - PUBLIC_ASSET_UPLOAD_STATE_REJECTED: PUBLIC_ASSET_UPLOAD_STATE_REJECTED は検証結果が契約条件を満たさず受理されなかった終端状態を表す。\n - PUBLIC_ASSET_UPLOAD_STATE_FAILED: PUBLIC_ASSET_UPLOAD_STATE_FAILED は内部処理が回復不能な失敗で終了した終端状態を表す。\n - PUBLIC_ASSET_UPLOAD_STATE_CANCELLED: PUBLIC_ASSET_UPLOAD_STATE_CANCELLED は利用者の取消により終了した終端状態を表す。",
      "title": "PublicAssetUploadState は direct upload の公開 lifecycle を表す。"
    },
    "v1PublicAssetVersion": {
      "type": "object",
      "properties": {
        "assetVersionId": {
          "type": "string",
          "title": "asset_version_id は Asset 内で一意な immutable version ID である。"
        },
        "digest": {
          "type": "string",
          "title": "digest は媒体内容の `sha256:` + hex 形式の digest である。"
        },
        "sizeBytes": {
          "type": "string",
          "format": "uint64",
          "title": "size_bytes は媒体本体の byte 単位の非負サイズである。"
        },
        "durationMs": {
          "type": "string",
          "format": "int64",
          "title": "duration_ms は時間媒体の長さを millisecond 単位で表し、静止画像では0である。"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "title": "created_at は immutable version が確定した UTC 時刻である。"
        }
      },
      "title": "PublicAssetVersion は immutable な媒体実体版から利用者に必要な metadata だけを投影する。"
    },
    "v1PublicCompletedUploadPart": {
      "type": "object",
      "properties": {
        "partNumber": {
          "type": "integer",
          "format": "int64",
          "title": "part_number は1から始まる session 内の part 番号である。"
        },
        "partRevisionRef": {
          "type": "string",
          "title": "part_revision_ref は storage が返した照合値を provider 非依存に扱う opaque な文字列である。"
        },
        "checksumCrc32c": {
          "type": "string",
          "title": "checksum_crc32c はclientが送信時にS3へ検証させたCRC32Cのbase64表現である。"
        }
      },
      "title": "PublicCompletedUploadPart は client が送信完了した part の照合情報を表す。"
    },
    "v1PublicContentSpace": {
      "type": "object",
      "properties": {
        "contentSpaceId": {
          "type": "string",
          "title": "content_space_id は `space_` + ULID 形式の ContentSpace ID である。"
        },
        "displayName": {
          "type": "string",
          "title": "display_name は利用者向け表示名であり、認可や分離境界の判定には使用しない。"
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "title": "created_at は ContentSpace が作成された UTC 時刻である。"
        }
      },
      "title": "PublicContentSpace は内部 workspace 参照を含まない ContentSpace の公開 projection である。"
    },
    "v1PublicDirectSearchEvidence": {
      "type": "object",
      "properties": {
        "kind": {
          "$ref": "#/definitions/v1PublicEvidenceKind",
          "title": "kind は根拠となる媒体内単位の種別である。"
        },
        "startMs": {
          "type": "string",
          "format": "int64",
          "title": "start_ms は媒体先頭からの開始位置であり、0以上かつend_msより小さい。"
        },
        "endMs": {
          "type": "string",
          "format": "int64",
          "title": "end_ms はhalf-open区間[start_ms, end_ms)の終了位置であり区間に含まれない。"
        },
        "text": {
          "type": "string",
          "title": "text はtranscript、OCR、audio、visual eventを説明する根拠本文である。"
        },
        "score": {
          "type": "number",
          "format": "double",
          "title": "score は対象Momentまたはqueryへの正規化済み寄与度であり、0以上1以下である。"
        }
      },
      "title": "PublicDirectSearchEvidence は検索結果を裏付ける公開可能な時間根拠である。"
    },
    "v1PublicDirectSearchMetrics": {
      "type": "object",
      "properties": {
        "latencyMs": {
          "type": "string",
          "format": "int64",
          "title": "latency_ms は検索開始からresponse構築までの経過時間をmillisecond単位で表す。"
        },
        "candidateCount": {
          "type": "integer",
          "format": "int64",
          "title": "candidate_count はranking前に取得した一次候補の非負件数である。"
        }
      },
      "title": "PublicDirectSearchMetrics は検索処理の観測可能な範囲を表す。"
    },
    "v1PublicDirectSearchResult": {
      "type": "object",
      "properties": {
        "assetId": {
          "type": "string",
          "title": "asset_id はMomentが属する`asset_` + ULID形式のAsset IDである。"
        },
        "startMs": {
          "type": "string",
          "format": "int64",
          "title": "start_ms は媒体先頭からの開始位置であり、0以上かつend_msより小さい。"
        },
        "endMs": {
          "type": "string",
          "format": "int64",
          "title": "end_ms はhalf-open区間[start_ms, end_ms)の終了位置であり区間に含まれない。"
        },
        "relevanceScore": {
          "type": "number",
          "format": "double",
          "title": "relevance_score は検索queryに対する正規化済み関連度であり、0以上1以下である。"
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PublicDirectSearchEvidence"
          },
          "title": "evidence はこのMomentの選定を裏付ける根拠であり、内部Artifact参照を含まない。"
        },
        "selectionReason": {
          "type": "string",
          "title": "selection_reason は根拠からこのMomentを選んだ理由を説明する。"
        }
      },
      "title": "PublicDirectSearchResult は根拠付きの公開Momentを表す。"
    },
    "v1PublicError": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "title": "code は公開 API で安定した machine-readable error code である。"
        },
        "message": {
          "type": "string",
          "title": "message は利用者向けの説明であり、resource の存在と workspace 外参照を区別しない。"
        },
        "requestId": {
          "type": "string",
          "title": "request_id は response header の X-Request-Id と同じ要求相関 ID である。"
        },
        "docsUrl": {
          "type": "string",
          "title": "docs_url は関連する公開文書が存在する場合だけ設定する URL である。"
        },
        "quotaExceeded": {
          "$ref": "#/definitions/v1PublicQuotaExceeded",
          "title": "quota_exceeded は quota 超過による拒否時だけ設定する機械可読な詳細である。"
        }
      },
      "title": "PublicError は provider や security workspace の内部情報を含まない公開 error envelope である。"
    },
    "v1PublicEvidenceKind": {
      "type": "string",
      "enum": [
        "PUBLIC_EVIDENCE_KIND_UNSPECIFIED",
        "PUBLIC_EVIDENCE_KIND_SENTENCE",
        "PUBLIC_EVIDENCE_KIND_SPEAKER_TURN",
        "PUBLIC_EVIDENCE_KIND_SHOT",
        "PUBLIC_EVIDENCE_KIND_SCENE",
        "PUBLIC_EVIDENCE_KIND_OCR_SPAN",
        "PUBLIC_EVIDENCE_KIND_AUDIO_EVENT",
        "PUBLIC_EVIDENCE_KIND_VISUAL_EVENT"
      ],
      "default": "PUBLIC_EVIDENCE_KIND_UNSPECIFIED",
      "description": "- PUBLIC_EVIDENCE_KIND_UNSPECIFIED: PUBLIC_EVIDENCE_KIND_UNSPECIFIED は根拠種別が未指定であり、有効な検索結果として扱わない。\n - PUBLIC_EVIDENCE_KIND_SENTENCE: PUBLIC_EVIDENCE_KIND_SENTENCE は transcript 上の1文を表す。\n - PUBLIC_EVIDENCE_KIND_SPEAKER_TURN: PUBLIC_EVIDENCE_KIND_SPEAKER_TURN は同一話者の連続発話区間を表す。\n - PUBLIC_EVIDENCE_KIND_SHOT: PUBLIC_EVIDENCE_KIND_SHOT は連続した撮影 shot を表す。\n - PUBLIC_EVIDENCE_KIND_SCENE: PUBLIC_EVIDENCE_KIND_SCENE は意味または場所が連続する scene を表す。\n - PUBLIC_EVIDENCE_KIND_OCR_SPAN: PUBLIC_EVIDENCE_KIND_OCR_SPAN は画面内文字が観測された区間を表す。\n - PUBLIC_EVIDENCE_KIND_AUDIO_EVENT: PUBLIC_EVIDENCE_KIND_AUDIO_EVENT は発話以外の音響 event 区間を表す。\n - PUBLIC_EVIDENCE_KIND_VISUAL_EVENT: PUBLIC_EVIDENCE_KIND_VISUAL_EVENT は視覚的な動作または状態変化の区間を表す。",
      "title": "PublicEvidenceKind は公開 Direct Search が返す根拠の媒体内単位を表す。"
    },
    "v1PublicIndexCapability": {
      "type": "string",
      "enum": [
        "PUBLIC_INDEX_CAPABILITY_UNSPECIFIED",
        "PUBLIC_INDEX_CAPABILITY_TECHNICAL_METADATA",
        "PUBLIC_INDEX_CAPABILITY_TRANSCRIPT_SEARCH",
        "PUBLIC_INDEX_CAPABILITY_SEMANTIC_SEARCH",
        "PUBLIC_INDEX_CAPABILITY_AGENT_REASONING"
      ],
      "default": "PUBLIC_INDEX_CAPABILITY_UNSPECIFIED",
      "description": "- PUBLIC_INDEX_CAPABILITY_UNSPECIFIED: PUBLIC_INDEX_CAPABILITY_UNSPECIFIED は能力が未指定であり、ready として扱わない。\n - PUBLIC_INDEX_CAPABILITY_TECHNICAL_METADATA: PUBLIC_INDEX_CAPABILITY_TECHNICAL_METADATA は技術 metadata の抽出完了を表す。\n - PUBLIC_INDEX_CAPABILITY_TRANSCRIPT_SEARCH: PUBLIC_INDEX_CAPABILITY_TRANSCRIPT_SEARCH は transcript lexical search が可能であることを表す。\n - PUBLIC_INDEX_CAPABILITY_SEMANTIC_SEARCH: PUBLIC_INDEX_CAPABILITY_SEMANTIC_SEARCH は semantic retrieval が可能であることを表す。\n - PUBLIC_INDEX_CAPABILITY_AGENT_REASONING: PUBLIC_INDEX_CAPABILITY_AGENT_REASONING は Agent が候補を確認するための根拠が利用可能であることを表す。",
      "title": "PublicIndexCapability は公開 Index Projection で利用可能な検索能力を表す。"
    },
    "v1PublicIndexStatus": {
      "type": "object",
      "properties": {
        "assetId": {
          "type": "string",
          "title": "asset_id は Index Projection の元となる `asset_` + ULID 形式の Asset ID である。"
        },
        "runId": {
          "type": "string",
          "title": "run_id はこの snapshot を構築する直近の durable run ID である。"
        },
        "state": {
          "$ref": "#/definitions/v1PublicRunState",
          "title": "state は直近 indexing run の公開 durable state である。"
        },
        "capabilities": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/v1PublicIndexCapability"
          },
          "title": "capabilities は現在の Projection で利用可能な検索能力の集合である。"
        },
        "updatedAt": {
          "type": "string",
          "format": "date-time",
          "title": "updated_at は Projection 状態を最後に反映した UTC 時刻である。"
        }
      },
      "title": "PublicIndexStatus は Artifact から再構築可能な Index Projection の公開 snapshot である。"
    },
    "v1PublicLifecycleServiceCancelAssetUploadResponse": {
      "type": "object",
      "properties": {
        "assetUpload": {
          "$ref": "#/definitions/v1PublicAssetUpload",
          "title": "asset_upload は CANCELLED または既に到達済みの終端状態を示す durable snapshot である。"
        }
      },
      "title": "PublicCancelAssetUploadResponse は取消後または再送時の現在状態を返す。"
    },
    "v1PublicLifecycleServiceCancelRunResponse": {
      "type": "object",
      "properties": {
        "run": {
          "$ref": "#/definitions/v1PublicRun",
          "title": "run は取消受付と実際の terminal state を区別できる durable snapshot である。"
        }
      },
      "title": "PublicCancelRunResponse は取消要求を受理した時点の公開 run snapshot を返す。"
    },
    "v1PublicLifecycleServiceCompleteMultipartAssetUploadResponse": {
      "type": "object",
      "properties": {
        "assetUpload": {
          "$ref": "#/definitions/v1PublicAssetUpload",
          "title": "asset_upload は PROCESSING または再送時の現在状態を示す durable snapshot である。"
        }
      },
      "title": "PublicCompleteMultipartAssetUploadResponse は非同期検証を受理した upload snapshot を返す。"
    },
    "v1PublicLifecycleServiceConfirmAssetUploadResponse": {
      "type": "object",
      "properties": {
        "asset": {
          "$ref": "#/definitions/v1PublicAsset",
          "title": "asset は内部 Artifact と workspace 参照を除いた公開 projection である。"
        }
      },
      "title": "PublicConfirmAssetUploadResponse は確定した論理 Asset と immutable な現行版を返す。"
    },
    "v1PublicLifecycleServiceCreateContentSpaceRequest": {
      "type": "object",
      "properties": {
        "displayName": {
          "type": "string",
          "title": "display_name は1文字以上200文字以下の利用者向け表示名である。"
        }
      },
      "title": "PublicCreateContentSpaceRequest は ContentSpace の公開作成要求である。",
      "required": [
        "displayName"
      ]
    },
    "v1PublicLifecycleServiceCreateContentSpaceResponse": {
      "type": "object",
      "properties": {
        "contentSpace": {
          "$ref": "#/definitions/v1PublicContentSpace",
          "title": "content_space は workspace 参照を除いた公開 projection である。"
        }
      },
      "title": "PublicCreateContentSpaceResponse は作成済み ContentSpace を返す。"
    },
    "v1PublicLifecycleServiceDirectSearchRequest": {
      "type": "object",
      "properties": {
        "contentSpaceId": {
          "type": "string",
          "title": "content_space_id は検索境界となる`space_` + ULID形式のContentSpace IDである。"
        },
        "queryText": {
          "type": "string",
          "title": "query_text は1文字以上2000文字以下の自然言語queryである。"
        },
        "maxResults": {
          "type": "integer",
          "format": "int64",
          "title": "max_results は1以上10以下で、0の場合はserver既定値10を使用する。"
        },
        "assetIds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "title": "asset_ids は対象を限定する任意filterであり、空の場合はContentSpace全体、最大50件である。"
        }
      },
      "title": "PublicLifecycleServiceDirectSearchRequest はContentSpace内のDirect Search条件を表す。",
      "required": [
        "contentSpaceId",
        "queryText"
      ]
    },
    "v1PublicLifecycleServiceDirectSearchResponse": {
      "type": "object",
      "properties": {
        "results": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PublicDirectSearchResult"
          },
          "title": "results は関連度順の0件以上10件以下の根拠付きMomentである。"
        },
        "searchArtifactId": {
          "type": "string",
          "title": "search_artifact_id は検索候補を保存した`art_` + ULID形式のArtifact IDである。"
        },
        "metrics": {
          "$ref": "#/definitions/v1PublicDirectSearchMetrics",
          "title": "metrics は検索処理のlatencyと一次候補件数である。"
        }
      },
      "title": "PublicLifecycleServiceDirectSearchResponse は根拠付きMomentと検索結果Artifactを返す。"
    },
    "v1PublicLifecycleServiceGetAssetIndexStatusResponse": {
      "type": "object",
      "properties": {
        "indexStatus": {
          "$ref": "#/definitions/v1PublicIndexStatus",
          "title": "index_status は capability と直近 run state を含む公開 snapshot である。"
        }
      },
      "title": "PublicGetAssetIndexStatusResponse は直近 run と再構築可能な Index Projection 状態を返す。"
    },
    "v1PublicLifecycleServiceGetAssetResponse": {
      "type": "object",
      "properties": {
        "asset": {
          "$ref": "#/definitions/v1PublicAsset",
          "title": "asset は内部 Artifact と workspace 参照を除いた公開 projection である。"
        }
      },
      "title": "PublicGetAssetResponse は取得した公開 Asset を返す。"
    },
    "v1PublicLifecycleServiceGetAssetUploadResponse": {
      "type": "object",
      "properties": {
        "assetUpload": {
          "$ref": "#/definitions/v1PublicAssetUpload",
          "title": "asset_upload は現在の durable upload snapshot である。"
        },
        "asset": {
          "$ref": "#/definitions/v1PublicAsset",
          "title": "asset は CONFIRMED の場合だけ設定する immutable version 付き公開 projection である。"
        }
      },
      "title": "PublicGetAssetUploadResponse は upload と、確定済みの場合だけ Asset を返す。"
    },
    "v1PublicLifecycleServiceGetContentSpaceResponse": {
      "type": "object",
      "properties": {
        "contentSpace": {
          "$ref": "#/definitions/v1PublicContentSpace",
          "title": "content_space は workspace 参照を除いた公開 projection である。"
        }
      },
      "title": "PublicGetContentSpaceResponse は取得した公開 ContentSpace を返す。"
    },
    "v1PublicLifecycleServiceGetRunResponse": {
      "type": "object",
      "properties": {
        "run": {
          "$ref": "#/definitions/v1PublicRun",
          "title": "run は node や SecurityContext を含まない公開 projection である。"
        }
      },
      "title": "PublicGetRunResponse は現在の公開 run snapshot を返す。"
    },
    "v1PublicLifecycleServiceListAssetsResponse": {
      "type": "object",
      "properties": {
        "assets": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PublicAsset"
          },
          "title": "assets は ContentSpace 内で認可済みの Asset page である。"
        },
        "nextPageToken": {
          "type": "string",
          "title": "next_page_token は次 page がある場合だけ設定する opaque な継続 token である。"
        }
      },
      "title": "PublicListAssetsResponse は作成時刻降順、同値時は Asset ID 昇順の page を返す。"
    },
    "v1PublicLifecycleServiceListContentSpacesResponse": {
      "type": "object",
      "properties": {
        "contentSpaces": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PublicContentSpace"
          },
          "title": "content_spaces は認証済み主体が参照できる ContentSpace の page である。"
        },
        "nextPageToken": {
          "type": "string",
          "title": "next_page_token は次 page がある場合だけ設定する opaque な継続 token である。"
        }
      },
      "title": "PublicListContentSpacesResponse は作成時刻降順、同値時は ContentSpace ID 昇順の page を返す。"
    },
    "v1PublicLifecycleServicePresignAssetUploadPartsResponse": {
      "type": "object",
      "properties": {
        "parts": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/definitions/v1PublicPresignedUploadPart"
          },
          "title": "parts は request の part_numbers と同じ順序で返す短期 upload 条件である。"
        }
      },
      "title": "PublicPresignAssetUploadPartsResponse は要求した part ごとの短期 URL を返す。"
    },
    "v1PublicLifecycleServiceRegisterAssetUploadResponse": {
      "type": "object",
      "properties": {
        "assetUpload": {
          "$ref": "#/definitions/v1PublicAssetUpload",
          "title": "asset_upload は presign と confirm に使用する公開 upload resource である。"
        },
        "presignedUpload": {
          "$ref": "#/definitions/v1PublicPresignedUpload",
          "title": "presigned_upload は媒体本体を Gateway を経由せず直接送る URL と署名条件を含む。"
        }
      },
      "title": "PublicRegisterAssetUploadResponse は作成した upload 登録を返す。"
    },
    "v1PublicLifecycleServiceRegisterMultipartAssetUploadResponse": {
      "type": "object",
      "properties": {
        "assetUpload": {
          "$ref": "#/definitions/v1PublicAssetUpload",
          "title": "asset_upload は状態照会、完了受付、取消に使用する公開 upload resource である。"
        },
        "multipartSession": {
          "$ref": "#/definitions/v1PublicMultipartUploadSession",
          "title": "multipart_session は client が全 part を決定論的に分割するための固定条件である。"
        }
      },
      "title": "PublicRegisterMultipartAssetUploadResponse は作成した upload と固定分割条件を返す。"
    },
    "v1PublicLifecycleServiceSubmitAssetIndexResponse": {
      "type": "object",
      "properties": {
        "run": {
          "$ref": "#/definitions/v1PublicRun",
          "title": "run は polling と取消に使用する公開 run resource である。"
        }
      },
      "title": "PublicSubmitAssetIndexResponse は受理した durable run の初期 snapshot を返す。"
    },
    "v1PublicMediaType": {
      "type": "string",
      "enum": [
        "PUBLIC_MEDIA_TYPE_UNSPECIFIED",
        "PUBLIC_MEDIA_TYPE_VIDEO",
        "PUBLIC_MEDIA_TYPE_IMAGE",
        "PUBLIC_MEDIA_TYPE_AUDIO"
      ],
      "default": "PUBLIC_MEDIA_TYPE_UNSPECIFIED",
      "description": "- PUBLIC_MEDIA_TYPE_UNSPECIFIED: PUBLIC_MEDIA_TYPE_UNSPECIFIED は媒体種別が未指定であり、有効な登録値として扱わない。\n - PUBLIC_MEDIA_TYPE_VIDEO: PUBLIC_MEDIA_TYPE_VIDEO は動画媒体を表す。\n - PUBLIC_MEDIA_TYPE_IMAGE: PUBLIC_MEDIA_TYPE_IMAGE は静止画像媒体を表す。\n - PUBLIC_MEDIA_TYPE_AUDIO: PUBLIC_MEDIA_TYPE_AUDIO は音声媒体を表す。",
      "title": "PublicMediaType は公開 API で登録できる媒体種別を表す。"
    },
    "v1PublicMultipartUploadSession": {
      "type": "object",
      "properties": {
        "assetUploadId": {
          "type": "string",
          "title": "asset_upload_id は multipart 操作の間で安定する opaque な upload ID である。"
        },
        "partSizeBytes": {
          "type": "string",
          "format": "uint64",
          "title": "part_size_bytes は最終 part を除く各 part に要求する byte 単位のサイズである。"
        },
        "partCount": {
          "type": "integer",
          "format": "int64",
          "title": "part_count は媒体全体を送信するために必要な part 数である。"
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time",
          "title": "expires_at は session を再作成せず利用できる期限の UTC 時刻である。"
        }
      },
      "title": "PublicMultipartUploadSession は大容量媒体を分割して直接送信するための固定条件を表す。"
    },
    "v1PublicPresignedUpload": {
      "type": "object",
      "properties": {
        "assetUploadId": {
          "type": "string",
          "title": "asset_upload_id は対象 upload 登録の opaque な ID である。"
        },
        "uploadUrl": {
          "type": "string",
          "title": "upload_url は最大15分で失効する bearer capability であり、ログや永続保存へ出してはならない。"
        },
        "httpMethod": {
          "type": "string",
          "title": "http_method は upload_url に媒体本体を送る HTTP method であり、初期値は `PUT` である。"
        },
        "requiredHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "title": "required_headers は署名検証に必要な header だけを返し、長期 credential を含めない。"
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time",
          "title": "expires_at は upload_url が失効する UTC 時刻である。"
        }
      },
      "title": "PublicPresignedUpload は client が媒体本体を storage へ直接送る短期 URL を表す。"
    },
    "v1PublicPresignedUploadPart": {
      "type": "object",
      "properties": {
        "partNumber": {
          "type": "integer",
          "format": "int64",
          "title": "part_number は1から始まる session 内の part 番号である。"
        },
        "uploadUrl": {
          "type": "string",
          "title": "upload_url は最大15分で失効する bearer capability であり、ログや永続保存へ出してはならない。"
        },
        "httpMethod": {
          "type": "string",
          "title": "http_method は upload_url へ part 本体を送る HTTP method であり、初期値は `PUT` である。"
        },
        "requiredHeaders": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "title": "required_headers は署名検証に必要な header だけを返し、長期 credential を含めない。"
        },
        "expiresAt": {
          "type": "string",
          "format": "date-time",
          "title": "expires_at は upload_url が失効する UTC 時刻である。"
        }
      },
      "title": "PublicPresignedUploadPart は1つの multipart part を storage へ直接送る短期 URL を表す。"
    },
    "v1PublicQuotaExceeded": {
      "type": "object",
      "properties": {
        "limitKind": {
          "type": "string",
          "title": "limit_kind は `max_assets` 等の quota 軸を識別する安定した machine-readable 値である。"
        },
        "limit": {
          "type": "string",
          "format": "int64",
          "title": "limit は `_seconds` 軸では秒、その他の数値軸では件数の上限であり、無制限または read-only 軸では未設定である。"
        },
        "current": {
          "type": "string",
          "format": "int64",
          "title": "current は拒否した要求の増分を加える前の値であり、`_seconds` 軸では秒、その他の数値軸では件数、read-only 軸では0または1である。"
        },
        "nextResetAt": {
          "type": "string",
          "format": "date-time",
          "title": "next_reset_at は quota 軸が次にリセットされる UTC 時刻であり、リセットしない軸では未設定である。"
        }
      },
      "title": "PublicQuotaExceeded は公開 API の quota 超過理由を provider 非依存に表す。"
    },
    "v1PublicRun": {
      "type": "object",
      "properties": {
        "runId": {
          "type": "string",
          "title": "run_id は状態取得と取消に使用する stable な durable run ID である。"
        },
        "kind": {
          "$ref": "#/definitions/v1PublicRunKind",
          "title": "kind は公開面で開始された非同期処理の種別である。"
        },
        "state": {
          "$ref": "#/definitions/v1PublicRunState",
          "title": "state は run の現在状態であり、終端状態から別の成功状態へ遷移しない。"
        },
        "resourceId": {
          "type": "string",
          "title": "resource_id は run の対象 resource ID であり、ASSET_INDEX では Asset ID である。"
        },
        "submittedAt": {
          "type": "string",
          "format": "date-time",
          "title": "submitted_at は run を受理した UTC 時刻である。"
        },
        "endedAt": {
          "type": "string",
          "format": "date-time",
          "title": "ended_at は終端状態へ遷移した UTC 時刻であり、進行中は設定しない。"
        }
      },
      "title": "PublicRun は node や SecurityContext を含まない非同期実行の公開 snapshot である。"
    },
    "v1PublicRunKind": {
      "type": "string",
      "enum": [
        "PUBLIC_RUN_KIND_UNSPECIFIED",
        "PUBLIC_RUN_KIND_ASSET_INDEX"
      ],
      "default": "PUBLIC_RUN_KIND_UNSPECIFIED",
      "description": "- PUBLIC_RUN_KIND_UNSPECIFIED: PUBLIC_RUN_KIND_UNSPECIFIED は種別が未指定であり、有効な run として扱わない。\n - PUBLIC_RUN_KIND_ASSET_INDEX: PUBLIC_RUN_KIND_ASSET_INDEX は Asset の Index Projection 構築を表す。",
      "title": "PublicRunKind は公開 facade が扱う非同期処理の種別を表す。"
    },
    "v1PublicRunState": {
      "type": "string",
      "enum": [
        "PUBLIC_RUN_STATE_UNSPECIFIED",
        "PUBLIC_RUN_STATE_ACCEPTED",
        "PUBLIC_RUN_STATE_RUNNING",
        "PUBLIC_RUN_STATE_SUCCEEDED",
        "PUBLIC_RUN_STATE_FAILED",
        "PUBLIC_RUN_STATE_CANCELLED"
      ],
      "default": "PUBLIC_RUN_STATE_UNSPECIFIED",
      "description": "- PUBLIC_RUN_STATE_UNSPECIFIED: PUBLIC_RUN_STATE_UNSPECIFIED は状態が未指定であり、有効な run 状態として扱わない。\n - PUBLIC_RUN_STATE_ACCEPTED: PUBLIC_RUN_STATE_ACCEPTED は run を受理し、実行待ちまたは検証中であることを表す。\n - PUBLIC_RUN_STATE_RUNNING: PUBLIC_RUN_STATE_RUNNING は run が進行中であることを表す。\n - PUBLIC_RUN_STATE_SUCCEEDED: PUBLIC_RUN_STATE_SUCCEEDED は run が成功した終端状態を表す。\n - PUBLIC_RUN_STATE_FAILED: PUBLIC_RUN_STATE_FAILED は run が失敗した終端状態を表す。\n - PUBLIC_RUN_STATE_CANCELLED: PUBLIC_RUN_STATE_CANCELLED は取消により終了した終端状態を表す。",
      "title": "PublicRunState は公開非同期 run の durable state を利用者向けに投影する。"
    },
    "v1PublicUploadPartChecksum": {
      "type": "object",
      "properties": {
        "partNumber": {
          "type": "integer",
          "format": "int64",
          "title": "part_number は1から始まるsession内のpart番号である。"
        },
        "checksumCrc32c": {
          "type": "string",
          "title": "checksum_crc32c は4byte CRC32Cのbase64表現である。"
        },
        "checksumSha256": {
          "type": "string",
          "title": "checksum_sha256 はpart本体のSHA-256を表すlowercase hex 64桁である。"
        }
      },
      "title": "PublicUploadPartChecksum はpresign前にclientが計算したpart checksumを表す。"
    }
  },
  "securityDefinitions": {
    "ApiKeyAuth": {
      "type": "apiKey",
      "description": "P0 の公開 API key。credential は Gateway edge で消費し、backend へ転送しない。",
      "name": "X-Api-Key",
      "in": "header"
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ]
}
