{
  "components": {
    "schemas": {
      "AlphaAnalysisRunDetailDto": {
        "properties": {
          "analysis_profile_snapshot_id": {
            "description": "Opaque analysis profile snapshot identifier. Returned with expand[]=snapshots.",
            "type": "string"
          },
          "answer_references": {
            "items": {
              "$ref": "#/components/schemas/AlphaAnswerReferenceDto"
            },
            "type": "array"
          },
          "error": {
            "$ref": "#/components/schemas/AlphaAsyncErrorDto"
          },
          "error_message": {
            "deprecated": true,
            "description": "Deprecated curated detail retained during migration. Use error instead.",
            "type": "string"
          },
          "execution_profile_ref": {
            "description": "Execution profile reference in name@version form. Accepted values are `premium-analysis@1`, `balanced-analysis@1`, and `economy-analysis@1`.\n\nname@version形式のexecution profile参照です。受け付ける値は`premium-analysis@1`、`balanced-analysis@1`、`economy-analysis@1`です。",
            "enum": [
              "premium-analysis@1",
              "balanced-analysis@1",
              "economy-analysis@1"
            ],
            "example": "premium-analysis@1",
            "examples": [
              "premium-analysis@1"
            ],
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*@[0-9]+(?:\\.[0-9]+)*$",
            "type": "string"
          },
          "input_snapshot_id": {
            "description": "Opaque input snapshot identifier. Returned with expand[]=snapshots.",
            "type": "string"
          },
          "limitations": {
            "description": "Limitation that qualifies an answer or report:\n- budget_exhausted: processing budget limited the result.\n- execution_failed: execution failed while producing the result.\n- required_evidence_not_extracted: required evidence was not available.\nUnknown internal limitation text is omitted.",
            "items": {
              "enum": [
                "budget_exhausted",
                "execution_failed",
                "required_evidence_not_extracted"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "locale": {
            "type": "string"
          },
          "output_snapshot_id": {
            "description": "Opaque output snapshot identifier. Returned with expand[]=snapshots.",
            "type": "string"
          },
          "profile_id": {
            "example": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "profile_version": {
            "example": 1,
            "examples": [
              1
            ],
            "minimum": 1,
            "type": "number"
          },
          "provenance": {
            "$ref": "#/components/schemas/AlphaPublicProvenanceDto"
          },
          "reason_code": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "result_id": {
            "type": "string"
          },
          "result_state": {
            "description": "Trust state for a claim or answer:\n- found: the requested condition is supported by the available evidence.\n- not_found: the requested condition is not supported by the available evidence.\n- uncertain: the evidence is insufficient or conflicting.\n- not_checked: the system did not inspect the required evidence.\n- error: execution failed before a trustworthy analysis result was available.",
            "enum": [
              "found",
              "not_found",
              "uncertain",
              "not_checked",
              "error"
            ],
            "type": "string"
          },
          "source_ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sub_state": {
            "description": "Detailed state for an analysis run:\n- accepted: the request passed admission and is queued.\n- running: analysis is executing.\n- completed: analysis finished successfully.\n- failed: analysis ended with an error.\n- canceled: analysis was stopped before completion.",
            "enum": [
              "accepted",
              "running",
              "completed",
              "failed",
              "canceled"
            ],
            "type": "string"
          }
        },
        "required": [
          "source_ids",
          "execution_profile_ref",
          "locale",
          "sub_state"
        ],
        "type": "object"
      },
      "AlphaAnalysisRunDto": {
        "properties": {
          "analysis": {
            "$ref": "#/components/schemas/AlphaAnalysisRunDetailDto"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "kind": {
            "description": "Run kind for a stored analysis profile execution. This resource does not represent a workflow run.",
            "enum": [
              "analysis"
            ],
            "type": "string"
          },
          "status": {
            "description": "Coarse processing status for a run:\n- queued: accepted and waiting to start.\n- processing: work is in progress.\n- completed: processing finished and the result can be read.\n- failed: processing ended without a usable result.\n- canceled: processing was stopped before completion.",
            "enum": [
              "queued",
              "processing",
              "completed",
              "failed",
              "canceled"
            ],
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "kind",
          "status",
          "analysis",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "AlphaAnswerAttributeDto": {
        "properties": {
          "evidence": {
            "items": {
              "$ref": "#/components/schemas/AlphaEvidenceRefDto"
            },
            "type": "array"
          },
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "unit": {
            "type": "string"
          },
          "value": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ]
          }
        },
        "required": [
          "key",
          "label"
        ],
        "type": "object"
      },
      "AlphaAnswerCoverageSummaryDto": {
        "properties": {
          "scope": {
            "type": "string"
          },
          "state": {
            "type": "string"
          }
        },
        "required": [
          "state",
          "scope"
        ],
        "type": "object"
      },
      "AlphaAnswerDto": {
        "properties": {
          "answer_payload": {
            "$ref": "#/components/schemas/AlphaAnswerPayloadDto"
          },
          "coverage": {
            "$ref": "#/components/schemas/AlphaAnswerCoverageSummaryDto"
          },
          "event_count": {
            "minimum": 0,
            "type": "number"
          },
          "evidence_count": {
            "minimum": 0,
            "type": "number"
          },
          "id": {
            "example": "ans_0190b5d4-timeline",
            "examples": [
              "ans_0190b5d4-timeline"
            ],
            "type": "string"
          },
          "key": {
            "example": "inspection_timeline",
            "examples": [
              "inspection_timeline"
            ],
            "type": "string"
          },
          "provenance": {
            "$ref": "#/components/schemas/AlphaPublicProvenanceDto"
          },
          "reason_code": {
            "type": "string"
          },
          "result_state": {
            "description": "Trust state for a claim or answer:\n- found: the requested condition is supported by the available evidence.\n- not_found: the requested condition is not supported by the available evidence.\n- uncertain: the evidence is insufficient or conflicting.\n- not_checked: the system did not inspect the required evidence.",
            "enum": [
              "found",
              "not_found",
              "uncertain",
              "not_checked"
            ],
            "type": "string"
          },
          "type": {
            "description": "Semantic shape of an answer:\n- verdict: one decision or classification.\n- measurement: one numeric or measured value.\n- enumeration: a set of named values.\n- timeline: time-ordered events with semantic intervals.\n- comparison: values compared between two scopes.\n- retrieval: ranked evidence matches.\n- synthesis: a narrative or structured summary.",
            "enum": [
              "verdict",
              "measurement",
              "enumeration",
              "timeline",
              "comparison",
              "retrieval",
              "synthesis"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "key",
          "type",
          "result_state",
          "coverage",
          "event_count",
          "evidence_count"
        ],
        "type": "object"
      },
      "AlphaAnswerEvidenceDto": {
        "properties": {
          "contributing_count": {
            "minimum": 0,
            "type": "number"
          },
          "drill_down_path": {
            "type": "string"
          },
          "precision": {
            "description": "Evidence precision: exact is a direct match, limited is partial or approximate, and unknown is not assessed.",
            "enum": [
              "exact",
              "limited",
              "unknown"
            ],
            "type": "string"
          },
          "representative": {
            "items": {
              "$ref": "#/components/schemas/AlphaEvidenceRefDto"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "AlphaAnswerItemDto": {
        "properties": {
          "attributes": {
            "items": {
              "$ref": "#/components/schemas/AlphaAnswerAttributeDto"
            },
            "type": "array"
          },
          "evidence": {
            "items": {
              "$ref": "#/components/schemas/AlphaEvidenceRefDto"
            },
            "type": "array"
          },
          "item_id": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "result_state": {
            "description": "Trust state for a claim or answer:\n- found: the requested condition is supported by the available evidence.\n- not_found: the requested condition is not supported by the available evidence.\n- uncertain: the evidence is insufficient or conflicting.\n- not_checked: the system did not inspect the required evidence.",
            "enum": [
              "found",
              "not_found",
              "uncertain",
              "not_checked"
            ],
            "type": "string"
          },
          "value": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ]
          }
        },
        "required": [
          "item_id",
          "label",
          "result_state"
        ],
        "type": "object"
      },
      "AlphaAnswerPageDto": {
        "properties": {
          "data": {
            "description": "Resources returned in this page. The array may be empty.\n\nこのpageで返すresourceです。配列が空の場合があります。",
            "items": {
              "$ref": "#/components/schemas/AlphaAnswerDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaAnswerPayloadDto": {
        "properties": {
          "aggregation_level": {
            "type": "string"
          },
          "answer_type": {
            "description": "Semantic shape of an answer:\n- verdict: one decision or classification.\n- measurement: one numeric or measured value.\n- enumeration: a set of named values.\n- timeline: time-ordered events with semantic intervals.\n- comparison: values compared between two scopes.\n- retrieval: ranked evidence matches.\n- synthesis: a narrative or structured summary.",
            "enum": [
              "verdict",
              "measurement",
              "enumeration",
              "timeline",
              "comparison",
              "retrieval",
              "synthesis"
            ],
            "type": "string"
          },
          "certainty_score": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          },
          "compare_to": {
            "$ref": "#/components/schemas/AlphaCompareToDto"
          },
          "confidence": {
            "$ref": "#/components/schemas/AlphaConfidenceDto"
          },
          "coverage": {
            "$ref": "#/components/schemas/AlphaCoverageDto"
          },
          "events": {
            "items": {
              "$ref": "#/components/schemas/AlphaTimelineEventDto"
            },
            "type": "array"
          },
          "evidence": {
            "$ref": "#/components/schemas/AlphaAnswerEvidenceDto"
          },
          "group_by": {
            "type": "string"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/AlphaAnswerItemDto"
            },
            "type": "array"
          },
          "limitations": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "narrative": {
            "type": "string"
          },
          "presentation_version": {
            "minimum": 1,
            "type": "number"
          },
          "provenance": {
            "$ref": "#/components/schemas/AlphaPublicProvenanceDto"
          },
          "ranked_clips": {
            "items": {
              "$ref": "#/components/schemas/AlphaRankedClipDto"
            },
            "type": "array"
          },
          "reason_code": {
            "type": "string"
          },
          "result_state": {
            "description": "Trust state for a claim or answer:\n- found: the requested condition is supported by the available evidence.\n- not_found: the requested condition is not supported by the available evidence.\n- uncertain: the evidence is insufficient or conflicting.\n- not_checked: the system did not inspect the required evidence.",
            "enum": [
              "found",
              "not_found",
              "uncertain",
              "not_checked"
            ],
            "type": "string"
          },
          "review_status": {
            "type": "string"
          },
          "series": {
            "items": {
              "$ref": "#/components/schemas/AlphaAnswerSeriesDto"
            },
            "type": "array"
          },
          "values": {
            "items": {
              "$ref": "#/components/schemas/AlphaAnswerValueDto"
            },
            "type": "array"
          }
        },
        "required": [
          "answer_type",
          "evidence",
          "result_state"
        ],
        "type": "object"
      },
      "AlphaAnswerReferenceDto": {
        "properties": {
          "answer_id": {
            "type": "string"
          },
          "answer_key": {
            "type": "string"
          },
          "answer_type": {
            "description": "Semantic answer shape recorded for this named answer. Current alpha admitted values are timeline and synthesis; this is not the run kind or a report-block type.",
            "type": "string"
          }
        },
        "required": [
          "answer_key",
          "answer_type",
          "answer_id"
        ],
        "type": "object"
      },
      "AlphaAnswerSeriesDto": {
        "properties": {
          "evidence": {
            "items": {
              "$ref": "#/components/schemas/AlphaEvidenceRefDto"
            },
            "type": "array"
          },
          "label": {
            "type": "string"
          },
          "points": {
            "items": {
              "$ref": "#/components/schemas/AlphaAnswerSeriesPointDto"
            },
            "type": "array"
          },
          "series_id": {
            "type": "string"
          }
        },
        "required": [
          "series_id",
          "label"
        ],
        "type": "object"
      },
      "AlphaAnswerSeriesPointDto": {
        "properties": {
          "evidence": {
            "items": {
              "$ref": "#/components/schemas/AlphaEvidenceRefDto"
            },
            "type": "array"
          },
          "unit": {
            "type": "string"
          },
          "x": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              }
            ]
          },
          "y": {
            "type": "number"
          }
        },
        "required": [
          "x"
        ],
        "type": "object"
      },
      "AlphaAnswerValueDto": {
        "properties": {
          "evidence": {
            "items": {
              "$ref": "#/components/schemas/AlphaEvidenceRefDto"
            },
            "type": "array"
          },
          "group": {
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "unit": {
            "type": "string"
          },
          "value": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ]
          }
        },
        "required": [
          "key",
          "label"
        ],
        "type": "object"
      },
      "AlphaAsyncErrorDto": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "description": "Stable public code for an asynchronous failure:\n- budget_exhausted: the operation reached its processing budget.\n- execution_failed: asynchronous execution failed.\n- execution_timeout: asynchronous execution took too long.\n- internal_error: no more specific public failure code is available.\n- profile_acceptance_conflict: the analysis profile acceptance record is invalid for this workspace request.\n- processing_failed: video processing failed.\n- processing_timeout: video processing took too long.\n- required_evidence_not_extracted: required evidence was not available.\n- service_unavailable: the asynchronous service is temporarily unavailable.",
            "enum": [
              "budget_exhausted",
              "execution_failed",
              "execution_timeout",
              "internal_error",
              "profile_acceptance_conflict",
              "processing_failed",
              "processing_timeout",
              "required_evidence_not_extracted",
              "service_unavailable"
            ],
            "type": "string"
          },
          "detail": {
            "type": "string"
          },
          "next_action": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "code",
          "title",
          "detail",
          "next_action"
        ],
        "type": "object"
      },
      "AlphaCompareToDto": {
        "properties": {
          "baseline": {
            "$ref": "#/components/schemas/AlphaComparisonPointDto"
          },
          "candidate": {
            "$ref": "#/components/schemas/AlphaComparisonPointDto"
          }
        },
        "required": [
          "baseline",
          "candidate"
        ],
        "type": "object"
      },
      "AlphaComparisonPointDto": {
        "properties": {
          "evidence": {
            "items": {
              "$ref": "#/components/schemas/AlphaEvidenceRefDto"
            },
            "type": "array"
          },
          "key": {
            "type": "string"
          },
          "label": {
            "type": "string"
          },
          "value": {
            "oneOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              }
            ]
          }
        },
        "required": [
          "key",
          "label"
        ],
        "type": "object"
      },
      "AlphaConfidenceDto": {
        "properties": {
          "cohort": {
            "type": "string"
          },
          "dataset_version": {
            "type": "string"
          },
          "last_validated_at": {
            "format": "date-time",
            "type": "string"
          },
          "method": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "sample_size": {
            "minimum": 0,
            "type": "number"
          },
          "score": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "score",
          "method",
          "note"
        ],
        "type": "object"
      },
      "AlphaCoverageDto": {
        "properties": {
          "coverage_ref": {
            "description": "Opaque coverage manifest reference.",
            "type": "string"
          },
          "gaps": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "scope": {
            "type": "string"
          },
          "spans": {
            "items": {
              "$ref": "#/components/schemas/AlphaCoverageSpanDto"
            },
            "type": "array"
          },
          "state": {
            "type": "string"
          }
        },
        "required": [
          "state"
        ],
        "type": "object"
      },
      "AlphaCoverageSpanDto": {
        "properties": {
          "clip_index": {
            "minimum": 0,
            "type": "number"
          },
          "end_ms": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "start_ms": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "video_id": {
            "type": "string"
          }
        },
        "required": [
          "video_id",
          "start_ms",
          "end_ms"
        ],
        "type": "object"
      },
      "AlphaEvidenceDto": {
        "properties": {
          "clip_url": {
            "description": "Reviewable signed clip URL covering the evidence interval, when available. Signed while this response is built and valid for one hour.\n\n利用可能な場合に返る、evidence区間を含む確認用signed clip URLです。この応答の生成時にsignされ、1時間有効です。",
            "example": "https://cdn.example.test/media/vid_0190b5d4/clip-42.mp4",
            "examples": [
              "https://cdn.example.test/media/vid_0190b5d4/clip-42.mp4"
            ],
            "type": "string"
          },
          "end_time": {
            "description": "Evidence end offset in the video, in seconds.\n\n動画内のevidence終了offset（秒）です。",
            "example": 49.75,
            "examples": [
              49.75
            ],
            "type": "number"
          },
          "finding_id": {
            "description": "Finding identifier to which this evidence belongs.\n\nこのevidenceが属するfinding識別子です。",
            "example": "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "id": {
            "description": "Evidence identifier referenced by the finding.\n\nfindingから参照されるevidence識別子です。",
            "example": "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AlphaFindingMetadataDto"
              }
            ],
            "description": "Typed evidence metadata. Unknown internal fields are not returned.\n\n型付きのevidence metadataです。internal fieldは返しません。"
          },
          "ocr_span": {
            "description": "OCR text supporting the finding, when available.\n\n利用可能な場合に返る、findingを裏付けるOCR textです。",
            "example": "AUTHORIZED PERSONNEL ONLY",
            "examples": [
              "AUTHORIZED PERSONNEL ONLY"
            ],
            "type": "string"
          },
          "provenance": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AlphaPublicProvenanceDto"
              }
            ],
            "description": "Curated public provenance only. Implementation-identity detail (vendor models, prompts, skills, components, plans, and steps) is not exposed in any public artifact; full detail remains in a server-side provenance record.\n\n公開するprovenanceはcuratedされたものだけです。実装identityの詳細（vendor model、prompt、skill、component、plan、step）はpublic artifactのどこにも公開せず、完全な詳細はserver-side provenance recordに保持します。"
          },
          "scene_description": {
            "description": "Scene description supporting the finding, when available.\n\n利用可能な場合に返る、findingを裏付けるscene descriptionです。",
            "example": "A person enters the restricted area through the north door.",
            "examples": [
              "A person enters the restricted area through the north door."
            ],
            "type": "string"
          },
          "start_time": {
            "description": "Evidence start offset in the video, in seconds.\n\n動画内のevidence開始offset（秒）です。",
            "example": 42.25,
            "examples": [
              42.25
            ],
            "type": "number"
          },
          "thumbnail_url": {
            "description": "Reviewable signed thumbnail URL for the evidence frame, when available. Signed while this response is built and valid for one hour.\n\n利用可能な場合に返る、evidence frame確認用のsigned thumbnail URLです。この応答の生成時にsignされ、1時間有効です。",
            "example": "https://cdn.example.test/media/vid_0190b5d4/frame-42.jpg",
            "examples": [
              "https://cdn.example.test/media/vid_0190b5d4/frame-42.jpg"
            ],
            "type": "string"
          },
          "transcript_span": {
            "description": "Transcript text supporting the finding, when available.\n\n利用可能な場合に返る、findingを裏付けるtranscript textです。",
            "example": "The operator enters the restricted area.",
            "examples": [
              "The operator enters the restricted area."
            ],
            "type": "string"
          },
          "video_id": {
            "description": "Video identifier containing this evidence.\n\nこのevidenceを含む動画の識別子です。",
            "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "finding_id",
          "video_id",
          "start_time",
          "end_time"
        ],
        "type": "object"
      },
      "AlphaEvidenceRefDto": {
        "properties": {
          "end_ms": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "id": {
            "example": "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "offset_end_ms": {
            "description": "Clip-relative evidence end offset in milliseconds. The wire field is offset_end_ms.",
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "offset_start_ms": {
            "description": "Clip-relative evidence start offset in milliseconds. The wire field is offset_start_ms.",
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "start_ms": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "url": {
            "example": "https://media.example.test/evidence/evidence_0190b5d4",
            "examples": [
              "https://media.example.test/evidence/evidence_0190b5d4"
            ],
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "AlphaFindingDto": {
        "properties": {
          "created_at": {
            "description": "Creation timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式の作成時刻です。",
            "example": "2026-08-08T10:05:00.000Z",
            "examples": [
              "2026-08-08T10:05:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Human-readable description of the claim represented by the finding.\n\nfindingが表すclaimの人間向けdescriptionです。",
            "example": "A person entered the restricted area without a visible authorization badge.",
            "examples": [
              "A person entered the restricted area without a visible authorization badge."
            ],
            "type": "string"
          },
          "evidence": {
            "description": "Evidence attached to this finding. At least one reviewable evidence path may be present depending on the analysis output.\n\nこのfindingに付いたevidenceです。分析結果に応じて、少なくとも1つの確認可能なevidence pathが含まれる場合があります。",
            "example": [
              {
                "clip_url": "https://cdn.example.test/media/vid_0190b5d4/clip-42.mp4",
                "end_time": 49.75,
                "finding_id": "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                "id": "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                "start_time": 42.25,
                "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              }
            ],
            "examples": [
              [
                {
                  "clip_url": "https://cdn.example.test/media/vid_0190b5d4/clip-42.mp4",
                  "end_time": 49.75,
                  "finding_id": "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                  "id": "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                  "start_time": 42.25,
                  "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                }
              ]
            ],
            "items": {
              "$ref": "#/components/schemas/AlphaEvidenceDto"
            },
            "type": "array"
          },
          "evidence_ids": {
            "description": "Evidence identifiers attached to this finding. Use evidence for reviewable timestamps and URLs.\n\nこのfindingに付いたevidence識別子です。確認可能なtimestampとURLはevidenceで確認してください。",
            "example": [
              "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "examples": [
              [
                "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ]
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "Public finding identifier used to retrieve this finding.\n\nこのfindingを取得するために使うpublicな検出結果（Finding）識別子です。",
            "example": "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "metadata": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AlphaFindingMetadataDto"
              }
            ],
            "description": "Typed finding metadata. Limitations are preserved when present.\n\nfinding metadataです。存在するlimitationsを保持します。"
          },
          "result_state": {
            "description": "Trust state for a claim or answer:\n- found: the requested condition is supported by the available evidence.\n- not_found: the requested condition is not supported by the available evidence.\n- uncertain: the evidence is insufficient or conflicting.\n- not_checked: the system did not inspect the required evidence.\nuncertain and not_checked are not clean passes.",
            "enum": [
              "found",
              "not_found",
              "uncertain",
              "not_checked"
            ],
            "example": "uncertain",
            "examples": [
              "uncertain"
            ],
            "type": "string"
          },
          "reviewed_at": {
            "description": "RFC 3339 UTC date-time at which the finding was reviewed, when available.\n\nfindingがreviewされたRFC 3339 UTC date-timeです。利用可能な場合に返ります。",
            "example": "2026-08-08T10:08:45.000Z",
            "examples": [
              "2026-08-08T10:08:45.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "reviewed_by": {
            "description": "Identifier of the human reviewer who changed review state, when available.\n\nreview stateを変更したhuman reviewerの識別子です。利用可能な場合に返ります。",
            "example": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "rule_id": {
            "description": "Rule identifier that produced or governed the finding, when available.\n\n利用可能な場合に返る、このfindingを生成または統制したrule識別子です。",
            "example": "rule_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "rule_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "rule_reference": {
            "description": "Human-readable rule reference retained for audit and review.\n\n監査とreviewのために保持する、人間が読めるrule referenceです。",
            "example": "SEC-04",
            "examples": [
              "SEC-04"
            ],
            "type": "string"
          },
          "run_id": {
            "description": "Analysis-run identifier that produced this finding.\n\nこのfindingを生成した分析ラン（Run）の識別子です。",
            "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "severity": {
            "description": "Finding severity assigned by the workflow.\n\nworkflowが付与したfinding severityです。",
            "example": "high",
            "examples": [
              "high"
            ],
            "type": "string"
          },
          "status": {
            "description": "Current human-review status for the finding.\n\nfindingの現在のhuman review statusです。",
            "example": "open",
            "examples": [
              "open"
            ],
            "type": "string"
          },
          "title": {
            "description": "Short human-readable finding title.\n\n人間が読める短いfinding titleです。",
            "example": "Restricted area entry detected",
            "examples": [
              "Restricted area entry detected"
            ],
            "type": "string"
          },
          "type": {
            "description": "Machine-readable finding type from the workflow rule or analysis.\n\nworkflow ruleまたは分析が返すmachine-readableなfinding typeです。",
            "example": "restricted_area_entry",
            "examples": [
              "restricted_area_entry"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "Last update timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式の最終更新時刻です。",
            "example": "2026-08-08T10:08:45.000Z",
            "examples": [
              "2026-08-08T10:08:45.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "video_id": {
            "description": "Video identifier when the finding is scoped to one video.\n\nfindingが1本の動画に紐づく場合の動画識別子です。",
            "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "workflow_id": {
            "description": "Workflow identifier used by the analysis run.\n\n分析ランが使ったworkflowの識別子です。",
            "example": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "run_id",
          "workflow_id",
          "type",
          "severity",
          "title",
          "description",
          "evidence_ids",
          "result_state",
          "status",
          "evidence",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "AlphaFindingMetadataDto": {
        "properties": {
          "extraction_method": {
            "type": "string"
          },
          "frame_number": {
            "format": "int32",
            "minimum": 0,
            "type": "number"
          },
          "limitations": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "quality": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "AlphaFindingPageDto": {
        "properties": {
          "data": {
            "description": "Findings returned in this page. The array may be empty.\n\nこのpageで返す検出結果（Finding）です。配列が空の場合があります。",
            "example": [
              {
                "created_at": "2026-08-08T10:05:00.000Z",
                "description": "A person entered the restricted area without a visible authorization badge.",
                "evidence": [],
                "evidence_ids": [
                  "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                ],
                "id": "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                "result_state": "uncertain",
                "run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                "severity": "high",
                "status": "open",
                "title": "Restricted area entry detected",
                "type": "restricted_area_entry",
                "updated_at": "2026-08-08T10:08:45.000Z",
                "workflow_id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              }
            ],
            "examples": [
              [
                {
                  "created_at": "2026-08-08T10:05:00.000Z",
                  "description": "A person entered the restricted area without a visible authorization badge.",
                  "evidence": [],
                  "evidence_ids": [
                    "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                  ],
                  "id": "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                  "result_state": "uncertain",
                  "run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                  "severity": "high",
                  "status": "open",
                  "title": "Restricted area entry detected",
                  "type": "restricted_area_entry",
                  "updated_at": "2026-08-08T10:08:45.000Z",
                  "workflow_id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                }
              ]
            ],
            "items": {
              "$ref": "#/components/schemas/AlphaFindingDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaProfileDto": {
        "properties": {
          "anonymous": {
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "created_at": {
            "example": "2026-08-22T10:00:00.000Z",
            "examples": [
              "2026-08-22T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "created_by": {
            "example": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "description": {
            "example": "Reusable profile for safety reviews.",
            "examples": [
              "Reusable profile for safety reviews."
            ],
            "type": "string"
          },
          "id": {
            "example": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "latest_version": {
            "example": 3,
            "examples": [
              3
            ],
            "minimum": 1,
            "type": "number"
          },
          "name": {
            "example": "Warehouse safety profile",
            "examples": [
              "Warehouse safety profile"
            ],
            "type": "string"
          },
          "status": {
            "description": "Resource status: active can be selected by new runs; archived remains available for history but is not selected as the current resource.",
            "enum": [
              "active",
              "archived"
            ],
            "example": "active",
            "examples": [
              "active"
            ],
            "type": "string"
          },
          "updated_at": {
            "example": "2026-08-22T10:00:00.000Z",
            "examples": [
              "2026-08-22T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "updated_by": {
            "example": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "latest_version",
          "status",
          "anonymous",
          "created_by",
          "updated_by",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "AlphaProfilePageDto": {
        "properties": {
          "data": {
            "description": "Resources returned in this page. The array may be empty.\n\nこのpageで返すresourceです。配列が空の場合があります。",
            "items": {
              "$ref": "#/components/schemas/AlphaProfileDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaProfileVersionDto": {
        "properties": {
          "answer_specs": {
            "items": {
              "$ref": "#/components/schemas/AnalysisAnswerSpecDto"
            },
            "type": "array"
          },
          "created_at": {
            "example": "2026-08-22T10:00:00.000Z",
            "examples": [
              "2026-08-22T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "created_by": {
            "example": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "instructions": {
            "maxLength": 12000,
            "type": "string"
          },
          "profile_id": {
            "example": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "version": {
            "example": 1,
            "examples": [
              1
            ],
            "minimum": 1,
            "type": "number"
          }
        },
        "required": [
          "profile_id",
          "version",
          "instructions",
          "answer_specs",
          "created_by",
          "created_at"
        ],
        "type": "object"
      },
      "AlphaProfileVersionPageDto": {
        "properties": {
          "data": {
            "description": "Resources returned in this page. The array may be empty.\n\nこのpageで返すresourceです。配列が空の場合があります。",
            "items": {
              "$ref": "#/components/schemas/AlphaProfileVersionDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaPublicProvenanceDto": {
        "properties": {
          "execution_profile": {
            "description": "DeepFrame execution profile that produced the response. Vendor model identities stay internal.",
            "example": "premium-analysis@1",
            "examples": [
              "premium-analysis@1"
            ],
            "type": "string"
          },
          "provenance_ref": {
            "description": "Opaque reference that resolves to the full trust manifest detail.",
            "example": "prov_0190b5d4-analysis",
            "examples": [
              "prov_0190b5d4-analysis"
            ],
            "type": "string"
          },
          "request_id": {
            "description": "Request correlation identifier for support and audit lookup.",
            "example": "0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "usage": {
            "$ref": "#/components/schemas/AlphaUsageDto"
          }
        },
        "required": [
          "provenance_ref"
        ],
        "type": "object"
      },
      "AlphaQueryCitationDto": {
        "properties": {
          "caption": {
            "description": "Stored citation caption, when available.\n\n利用可能な場合の保存済みcitation captionです。",
            "example": "The north door opens.",
            "examples": [
              "The north door opens."
            ],
            "type": "string"
          },
          "clip_id": {
            "description": "Stored evidence clip identifier, when available.\n\n利用可能な場合の保存済みevidence clip識別子です。",
            "example": "clip-1",
            "examples": [
              "clip-1"
            ],
            "type": "string"
          },
          "clip_url": {
            "description": "Reviewable evidence clip URL, when stored.\n\n保存されている場合の確認用evidence clip URLです。",
            "example": "/api/videos/vid_0190b5d4/clip-1",
            "examples": [
              "/api/videos/vid_0190b5d4/clip-1"
            ],
            "type": "string"
          },
          "confidence": {
            "description": "Stored citation confidence, when available.\n\n利用可能な場合の保存済みcitation confidenceです。",
            "example": 0.94,
            "examples": [
              0.94
            ],
            "type": "number"
          },
          "end_time": {
            "description": "Citation end time in seconds.\n\ncitationの終了時刻を秒で返します。",
            "example": 48,
            "examples": [
              48
            ],
            "type": "number"
          },
          "ref_number": {
            "description": "Stored source reference number, when available.\n\n利用可能な場合の保存済みsource reference番号です。",
            "example": 1,
            "examples": [
              1
            ],
            "type": "number"
          },
          "start_time": {
            "description": "Citation start time in seconds.\n\ncitationの開始時刻を秒で返します。",
            "example": 42,
            "examples": [
              42
            ],
            "type": "number"
          },
          "thumbnail_url": {
            "description": "Reviewable evidence thumbnail URL, when stored.\n\n保存されている場合の確認用evidence thumbnail URLです。",
            "example": "/api/videos/vid_0190b5d4/frame-1",
            "examples": [
              "/api/videos/vid_0190b5d4/frame-1"
            ],
            "type": "string"
          },
          "video_id": {
            "description": "Video identifier containing this citation.\n\nこのcitationを含む動画識別子です。",
            "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          }
        },
        "required": [
          "video_id",
          "start_time",
          "end_time"
        ],
        "type": "object"
      },
      "AlphaQueryDto": {
        "properties": {
          "answer": {
            "description": "Persisted answer text after completion.\n\ncompletion後の保存済みanswer textです。",
            "example": "The north door opens at 42 seconds.",
            "examples": [
              "The north door opens at 42 seconds."
            ],
            "type": "string"
          },
          "citations": {
            "description": "Citations stored with the completed turn.\n\ncompleted turnとともに保存されたcitationです。",
            "items": {
              "$ref": "#/components/schemas/AlphaQueryCitationDto"
            },
            "type": "array"
          },
          "completed_at": {
            "description": "Completion timestamp in RFC 3339 UTC format, when the turn is persisted.\n\nturnが保存された場合のRFC 3339 UTC形式のcompletion時刻です。",
            "example": "2026-08-08T10:00:03.000Z",
            "examples": [
              "2026-08-08T10:00:03.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "created_at": {
            "description": "Query creation timestamp in RFC 3339 UTC format.\n\nRFC 3339 UTC形式のquery作成時刻です。",
            "example": "2026-08-08T10:00:00.000Z",
            "examples": [
              "2026-08-08T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Opaque query identifier used by the polling path.\n\n状態確認の URL で使う、不透明なクエリ ID です。",
            "example": "qry_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "qry_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "query": {
            "description": "Question submitted for this query.\n\nこのqueryで送信した質問です。",
            "example": "What changed after the north door opened?",
            "examples": [
              "What changed after the north door opened?"
            ],
            "type": "string"
          },
          "reason": {
            "description": "Stable reason for a failed query.\n\nfailed queryのstableなreasonです。",
            "example": "query_age_exceeded",
            "examples": [
              "query_age_exceeded"
            ],
            "type": "string"
          },
          "session_id": {
            "description": "Public session identifier containing this query.\n\nこのqueryを含むpublicなsession識別子です。",
            "example": "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "status": {
            "description": "Query status: processing is running; completed has a persisted answer; failed ended without a usable answer.",
            "enum": [
              "processing",
              "completed",
              "failed"
            ],
            "example": "processing",
            "examples": [
              "processing"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "Query last state-change timestamp in RFC 3339 UTC format.\n\nRFC 3339 UTC形式のquery最終状態変更時刻です。",
            "example": "2026-08-08T10:00:03.000Z",
            "examples": [
              "2026-08-08T10:00:03.000Z"
            ],
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "session_id",
          "status",
          "query",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "AlphaQueryPageDto": {
        "properties": {
          "data": {
            "description": "Queries returned in this page. The array may be empty.\n\nこのpageで返すqueryです。配列が空の場合があります。",
            "items": {
              "$ref": "#/components/schemas/AlphaQueryDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaRankedClipDto": {
        "properties": {
          "evidence": {
            "$ref": "#/components/schemas/AlphaEvidenceRefDto"
          },
          "score": {
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "evidence",
          "score"
        ],
        "type": "object"
      },
      "AlphaReportTemplateDto": {
        "properties": {
          "anonymous": {
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "created_at": {
            "example": "2026-08-22T10:00:00.000Z",
            "examples": [
              "2026-08-22T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "created_by": {
            "example": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "description": {
            "example": "Reusable report presentation.",
            "examples": [
              "Reusable report presentation."
            ],
            "type": "string"
          },
          "id": {
            "example": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "latest_version": {
            "example": 3,
            "examples": [
              3
            ],
            "minimum": 1,
            "type": "number"
          },
          "name": {
            "example": "Warehouse safety report",
            "examples": [
              "Warehouse safety report"
            ],
            "type": "string"
          },
          "status": {
            "description": "Resource status: active can be selected by new runs; archived remains available for history but is not selected as the current resource.",
            "enum": [
              "active",
              "archived"
            ],
            "example": "active",
            "examples": [
              "active"
            ],
            "type": "string"
          },
          "updated_at": {
            "example": "2026-08-22T10:00:00.000Z",
            "examples": [
              "2026-08-22T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "updated_by": {
            "example": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "latest_version",
          "status",
          "anonymous",
          "created_by",
          "updated_by",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "AlphaReportTemplatePageDto": {
        "properties": {
          "data": {
            "description": "Resources returned in this page. The array may be empty.\n\nこのpageで返すresourceです。配列が空の場合があります。",
            "items": {
              "$ref": "#/components/schemas/AlphaReportTemplateDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaReportTemplateVersionDto": {
        "properties": {
          "blocks": {
            "items": {
              "$ref": "#/components/schemas/ReportTemplateBlockDto"
            },
            "type": "array"
          },
          "created_at": {
            "example": "2026-08-22T10:00:00.000Z",
            "examples": [
              "2026-08-22T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "created_by": {
            "example": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "language": {
            "example": "ja",
            "examples": [
              "ja"
            ],
            "maxLength": 16,
            "type": "string"
          },
          "report_template_id": {
            "example": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "version": {
            "example": 1,
            "examples": [
              1
            ],
            "minimum": 1,
            "type": "number"
          }
        },
        "required": [
          "report_template_id",
          "version",
          "language",
          "blocks",
          "created_by",
          "created_at"
        ],
        "type": "object"
      },
      "AlphaReportTemplateVersionPageDto": {
        "properties": {
          "data": {
            "description": "Resources returned in this page. The array may be empty.\n\nこのpageで返すresourceです。配列が空の場合があります。",
            "items": {
              "$ref": "#/components/schemas/AlphaReportTemplateVersionDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaRulebookCsvColumnStatsDto": {
        "properties": {
          "name": {
            "example": "Requirement",
            "examples": [
              "Requirement"
            ],
            "type": "string"
          },
          "non_empty_count": {
            "example": 10,
            "examples": [
              10
            ],
            "type": "number"
          },
          "samples": {
            "example": [
              "Exit is clear."
            ],
            "examples": [
              [
                "Exit is clear."
              ]
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "unique_count": {
            "example": 8,
            "examples": [
              8
            ],
            "type": "number"
          }
        },
        "required": [
          "name",
          "non_empty_count",
          "unique_count",
          "samples"
        ],
        "type": "object"
      },
      "AlphaRulebookCsvImportResultDto": {
        "properties": {
          "created_count": {
            "example": 2,
            "examples": [
              2
            ],
            "type": "number"
          },
          "rulebooks": {
            "items": {
              "$ref": "#/components/schemas/AlphaRulebookDto"
            },
            "type": "array"
          }
        },
        "required": [
          "created_count",
          "rulebooks"
        ],
        "type": "object"
      },
      "AlphaRulebookCsvMappingDto": {
        "properties": {
          "additional_description_columns": {
            "example": [
              "Notes"
            ],
            "examples": [
              [
                "Notes"
              ]
            ],
            "items": {
              "type": "string"
            },
            "maxItems": 10,
            "type": "array"
          },
          "rule_description": {
            "example": "Details",
            "examples": [
              "Details"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "rule_id": {
            "example": "Rule ID",
            "examples": [
              "Rule ID"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "rule_title": {
            "example": "Requirement",
            "examples": [
              "Requirement"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "rulebook_name": {
            "example": "Section",
            "examples": [
              "Section"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "AlphaRulebookCsvMappingResponseDto": {
        "properties": {
          "additional_description_columns": {
            "example": [],
            "examples": [
              []
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "rule_description": {
            "example": "Details",
            "examples": [
              "Details"
            ],
            "type": "string"
          },
          "rule_id": {
            "example": "Rule ID",
            "examples": [
              "Rule ID"
            ],
            "type": "string"
          },
          "rule_title": {
            "example": "Requirement",
            "examples": [
              "Requirement"
            ],
            "type": "string"
          },
          "rulebook_name": {
            "example": "Section",
            "examples": [
              "Section"
            ],
            "type": "string"
          }
        },
        "required": [
          "additional_description_columns"
        ],
        "type": "object"
      },
      "AlphaRulebookCsvPreviewDto": {
        "properties": {
          "column_stats": {
            "items": {
              "$ref": "#/components/schemas/AlphaRulebookCsvColumnStatsDto"
            },
            "type": "array"
          },
          "expires_at": {
            "description": "RFC 3339 UTC date-time at which this preview expires. Import before this time.\n\nこのpreviewが失効するRFC 3339 UTC date-timeです。この時刻までにimportしてください。",
            "example": "2026-08-10T11:05:00.000Z",
            "examples": [
              "2026-08-10T11:05:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "filename": {
            "example": "warehouse-rules.csv",
            "examples": [
              "warehouse-rules.csv"
            ],
            "type": "string"
          },
          "mapping": {
            "$ref": "#/components/schemas/AlphaRulebookCsvMappingResponseDto"
          },
          "mapping_confidence": {
            "example": 0.95,
            "examples": [
              0.95
            ],
            "type": "number"
          },
          "mapping_source": {
            "example": "heuristic",
            "examples": [
              "heuristic"
            ],
            "type": "string"
          },
          "row_count": {
            "example": 10,
            "examples": [
              10
            ],
            "type": "number"
          },
          "rulebook_count": {
            "example": 2,
            "examples": [
              2
            ],
            "type": "number"
          },
          "rulebooks": {
            "items": {
              "$ref": "#/components/schemas/AlphaRulebookCsvRulebookPreviewDto"
            },
            "type": "array"
          },
          "session_id": {
            "example": "rbi_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "rbi_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "skipped_row_count": {
            "example": 1,
            "examples": [
              1
            ],
            "type": "number"
          },
          "total_rule_count": {
            "example": 10,
            "examples": [
              10
            ],
            "type": "number"
          },
          "warnings": {
            "example": [],
            "examples": [
              []
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "session_id",
          "filename",
          "row_count",
          "skipped_row_count",
          "rulebook_count",
          "total_rule_count",
          "column_stats",
          "mapping",
          "mapping_source",
          "mapping_confidence",
          "warnings",
          "rulebooks",
          "expires_at"
        ],
        "type": "object"
      },
      "AlphaRulebookCsvRulePreviewDto": {
        "properties": {
          "description": {
            "example": "The exit remains unobstructed.",
            "examples": [
              "The exit remains unobstructed."
            ],
            "type": "string"
          },
          "id": {
            "example": "R1",
            "examples": [
              "R1"
            ],
            "type": "string"
          },
          "source_row_number": {
            "example": 2,
            "examples": [
              2
            ],
            "type": "number"
          },
          "title": {
            "example": "Emergency exit is clear.",
            "examples": [
              "Emergency exit is clear."
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "description",
          "source_row_number"
        ],
        "type": "object"
      },
      "AlphaRulebookCsvRulebookPreviewDto": {
        "properties": {
          "name": {
            "example": "Warehouse Safety",
            "examples": [
              "Warehouse Safety"
            ],
            "type": "string"
          },
          "rule_count": {
            "example": 10,
            "examples": [
              10
            ],
            "type": "number"
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/AlphaRulebookCsvRulePreviewDto"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "rule_count",
          "rules"
        ],
        "type": "object"
      },
      "AlphaRulebookDto": {
        "properties": {
          "can_delete": {
            "example": true,
            "examples": [
              true
            ],
            "type": "boolean"
          },
          "can_edit": {
            "example": true,
            "examples": [
              true
            ],
            "type": "boolean"
          },
          "content": {
            "example": "Inspect every emergency exit.",
            "examples": [
              "Inspect every emergency exit."
            ],
            "type": "string"
          },
          "created_at": {
            "description": "Creation timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式の作成時刻です。",
            "example": "2026-08-10T10:05:00.000Z",
            "examples": [
              "2026-08-10T10:05:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "created_by": {
            "example": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "has_active_workflow_run": {
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "id": {
            "example": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "is_template": {
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "name": {
            "example": "Warehouse Safety",
            "examples": [
              "Warehouse Safety"
            ],
            "type": "string"
          },
          "owner_id": {
            "example": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/AlphaRulebookRuleDto"
            },
            "type": "array"
          },
          "template_key": {
            "example": "template_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "template_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "Last update timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式の最終更新時刻です。",
            "example": "2026-08-10T10:06:00.000Z",
            "examples": [
              "2026-08-10T10:06:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "updated_by": {
            "example": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "created_by",
          "updated_by",
          "name",
          "content",
          "rules",
          "is_template",
          "can_edit",
          "can_delete",
          "has_active_workflow_run",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "AlphaRulebookPageDto": {
        "properties": {
          "data": {
            "description": "Resources returned in this page. The array may be empty.\n\nこのpageで返すresourceです。配列が空の場合があります。",
            "items": {
              "$ref": "#/components/schemas/AlphaRulebookDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaRulebookRuleDto": {
        "properties": {
          "description": {
            "example": "The exit remains unobstructed.",
            "examples": [
              "The exit remains unobstructed."
            ],
            "type": "string"
          },
          "id": {
            "example": "SEC-04",
            "examples": [
              "SEC-04"
            ],
            "type": "string"
          },
          "title": {
            "example": "Emergency exit is clear.",
            "examples": [
              "Emergency exit is clear."
            ],
            "type": "string"
          },
          "version": {
            "example": 2,
            "examples": [
              2
            ],
            "type": "number"
          }
        },
        "required": [
          "id",
          "title",
          "description",
          "version"
        ],
        "type": "object"
      },
      "AlphaRulebookRuleInputDto": {
        "properties": {
          "description": {
            "description": "What the rule asks DeepFrame to check for in a video.\n\nこのruleが動画で確認する内容です。",
            "example": "The exit remains unobstructed.",
            "examples": [
              "The exit remains unobstructed."
            ],
            "type": "string"
          },
          "id": {
            "description": "Identifier for this rule inside the rulebook. Treat it as opaque.\n\nrulebook内でこのruleを示す識別子です。内容は解釈せずそのまま扱ってください。",
            "example": "SEC-04",
            "examples": [
              "SEC-04"
            ],
            "type": "string"
          },
          "title": {
            "description": "Short name for the rule, shown with any finding it produces.\n\nruleの短い名称です。このruleによる検出結果に表示されます。",
            "example": "Emergency exit is clear.",
            "examples": [
              "Emergency exit is clear."
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "title"
        ],
        "type": "object"
      },
      "AlphaRulebookUsageDto": {
        "properties": {
          "findings_total": {
            "example": 3,
            "examples": [
              3
            ],
            "type": "number"
          },
          "has_active_workflow_run": {
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "projects": {
            "items": {
              "$ref": "#/components/schemas/AlphaRulebookUsageProjectDto"
            },
            "type": "array"
          },
          "rulebook_id": {
            "example": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "workflow_count": {
            "example": 1,
            "examples": [
              1
            ],
            "type": "number"
          }
        },
        "required": [
          "rulebook_id",
          "findings_total",
          "workflow_count",
          "has_active_workflow_run",
          "projects"
        ],
        "type": "object"
      },
      "AlphaRulebookUsageProjectDto": {
        "properties": {
          "finding_count": {
            "example": 3,
            "examples": [
              3
            ],
            "type": "number"
          },
          "name": {
            "example": "warehouse-shift-01.mp4",
            "examples": [
              "warehouse-shift-01.mp4"
            ],
            "type": "string"
          },
          "source_id": {
            "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          }
        },
        "required": [
          "source_id",
          "name",
          "finding_count"
        ],
        "type": "object"
      },
      "AlphaRunDto": {
        "properties": {
          "created_at": {
            "example": "2026-08-08T10:00:00.000Z",
            "examples": [
              "2026-08-08T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "kind": {
            "description": "Run kind for a stored rulebook workflow execution. This resource does not represent a direct analysis run.",
            "enum": [
              "workflow"
            ],
            "type": "string"
          },
          "status": {
            "description": "Coarse processing status for a run:\n- queued: accepted and waiting to start.\n- processing: work is in progress.\n- completed: processing finished and the result can be read.\n- failed: processing ended without a usable result.\n- canceled: processing was stopped before completion.",
            "enum": [
              "queued",
              "processing",
              "completed",
              "failed",
              "canceled"
            ],
            "type": "string"
          },
          "updated_at": {
            "example": "2026-08-08T10:07:30.000Z",
            "examples": [
              "2026-08-08T10:07:30.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "workflow": {
            "$ref": "#/components/schemas/AlphaWorkflowRunDetailDto"
          }
        },
        "required": [
          "id",
          "kind",
          "status",
          "workflow",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "AlphaRunPageDto": {
        "properties": {
          "data": {
            "description": "Runs returned in this page. Each item is discriminated by kind and may be a workflow or analysis run. The array may be empty.\n\nこのpageで返すrunです。各itemはkindでworkflowまたはanalysisに判別できます。配列が空の場合があります。",
            "example": [
              {
                "created_at": "2026-08-08T10:00:00.000Z",
                "id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                "kind": "workflow",
                "status": "processing",
                "updated_at": "2026-08-08T10:07:30.000Z",
                "workflow": {
                  "workflow_id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                }
              }
            ],
            "examples": [
              [
                {
                  "created_at": "2026-08-08T10:00:00.000Z",
                  "id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                  "kind": "workflow",
                  "status": "processing",
                  "updated_at": "2026-08-08T10:07:30.000Z",
                  "workflow": {
                    "workflow_id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                  }
                }
              ]
            ],
            "items": {
              "discriminator": {
                "mapping": {
                  "analysis": "#/components/schemas/AlphaAnalysisRunDto",
                  "workflow": "#/components/schemas/AlphaRunDto"
                },
                "propertyName": "kind"
              },
              "oneOf": [
                {
                  "$ref": "#/components/schemas/AlphaRunDto"
                },
                {
                  "$ref": "#/components/schemas/AlphaAnalysisRunDto"
                }
              ]
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaSearchResponseDto": {
        "properties": {
          "data": {
            "description": "Ranked search results. The array may be empty when no indexed evidence meets threshold.\n\nranked search resultです。thresholdを満たすindex済みevidenceがない場合は配列が空になります。",
            "example": [
              {
                "id": "vid_0190b5d4_frame_0042",
                "image": "https://cdn.example.test/media/vid_0190b5d4/frame-0042.jpg",
                "scene_description": "A person enters through the north door.",
                "score": 0.94,
                "tags": [
                  "person",
                  "north door"
                ],
                "time_position": 222000,
                "title": "warehouse-inspection-2026-08-08.mp4",
                "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                "video_url": "https://cdn.example.test/media/vid_0190b5d4/video.mp4"
              }
            ],
            "examples": [
              [
                {
                  "id": "vid_0190b5d4_frame_0042",
                  "image": "https://cdn.example.test/media/vid_0190b5d4/frame-0042.jpg",
                  "scene_description": "A person enters through the north door.",
                  "score": 0.94,
                  "tags": [
                    "person",
                    "north door"
                  ],
                  "time_position": 222000,
                  "title": "warehouse-inspection-2026-08-08.mp4",
                  "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                  "video_url": "https://cdn.example.test/media/vid_0190b5d4/video.mp4"
                }
              ]
            ],
            "items": {
              "$ref": "#/components/schemas/AlphaSearchResultDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaSearchResultDto": {
        "properties": {
          "id": {
            "description": "Identifier for the matched frame or clip result.\n\n一致したframeまたはclip resultの識別子です。",
            "example": "vid_0190b5d4_frame_0042",
            "examples": [
              "vid_0190b5d4_frame_0042"
            ],
            "type": "string"
          },
          "image": {
            "description": "Reviewable signed frame URL when one is available. Signed while this response is built and valid for one hour.\n\n利用可能な場合に返す確認用のsigned frame URLです。この応答の生成時にsignされ、1時間有効です。",
            "example": "https://cdn.example.test/media/vid_0190b5d4/frame-0042.jpg",
            "examples": [
              "https://cdn.example.test/media/vid_0190b5d4/frame-0042.jpg"
            ],
            "type": "string"
          },
          "scene_description": {
            "description": "Current scene description for the matched evidence.\n\n一致したevidenceに対応する現在のscene descriptionです。",
            "example": "A person enters through the north door and walks toward the restricted area.",
            "examples": [
              "A person enters through the north door and walks toward the restricted area."
            ],
            "type": "string"
          },
          "score": {
            "description": "Ranked similarity score for this result.\n\nこのresultのranked similarity scoreです。",
            "example": 0.94,
            "examples": [
              0.94
            ],
            "type": "number"
          },
          "tags": {
            "description": "Search tags associated with the result.\n\nresultに関連付けられたsearch tagです。",
            "example": [
              "person",
              "north door",
              "restricted area"
            ],
            "examples": [
              [
                "person",
                "north door",
                "restricted area"
              ]
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "time_position": {
            "description": "Matched timestamp in milliseconds from the start of the video.\n\n動画開始からの一致timestampをmillisecondで返します。",
            "example": 222000,
            "examples": [
              222000
            ],
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "title": {
            "description": "Video title or original filename for display.\n\n表示用の動画titleまたは元のfilenameです。",
            "example": "warehouse-inspection-2026-08-08.mp4",
            "examples": [
              "warehouse-inspection-2026-08-08.mp4"
            ],
            "type": "string"
          },
          "video_id": {
            "description": "Video identifier containing the matched evidence.\n\n一致したevidenceを含む動画の識別子です。",
            "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "video_url": {
            "description": "Reviewable signed playback URL when one is available. Signed while this response is built and valid for one hour.\n\n利用可能な場合に返す確認用のsigned playback URLです。この応答の生成時にsignされ、1時間有効です。",
            "example": "https://cdn.example.test/media/vid_0190b5d4/video.mp4",
            "examples": [
              "https://cdn.example.test/media/vid_0190b5d4/video.mp4"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "video_id",
          "title",
          "time_position",
          "score",
          "tags",
          "scene_description"
        ],
        "type": "object"
      },
      "AlphaSessionDto": {
        "properties": {
          "created_at": {
            "description": "Session creation timestamp in RFC 3339 UTC format.\n\nRFC 3339 UTC形式のsession作成時刻です。",
            "example": "2026-08-08T10:00:00.000Z",
            "examples": [
              "2026-08-08T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "expires_at": {
            "description": "Time when the session expires after its last activity, in RFC 3339 UTC format. The default idle period is 24 hours.\n\n最後のactivityからsessionがexpireする時刻です。RFC 3339 UTC形式で返します。既定のidle期間は24時間です。",
            "example": "2026-08-09T10:00:00.000Z",
            "examples": [
              "2026-08-09T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Opaque session identifier. Use it in nested query paths.\n\nクエリの URL で使う、不透明なセッション ID です。",
            "example": "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "last_message": {
            "description": "Preview of the latest persisted turn, when one exists.\n\n保存済みの最新turnがある場合のpreviewです。",
            "example": "The north door remains clear.",
            "examples": [
              "The north door remains clear."
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "Session last-activity timestamp in RFC 3339 UTC format.\n\nRFC 3339 UTC形式のsession最終activity時刻です。",
            "example": "2026-08-08T10:00:00.000Z",
            "examples": [
              "2026-08-08T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "video_ids": {
            "description": "Video identifiers bound to this session. The server keeps this scope for every query.\n\nこのsessionに紐づく動画識別子です。サーバーはすべてのqueryでこの範囲を保持します。",
            "example": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "examples": [
              [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ]
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "id",
          "video_ids",
          "expires_at",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "AlphaSessionPageDto": {
        "properties": {
          "data": {
            "description": "Sessions returned in this page. The array may be empty.\n\nこのpageで返すsessionです。配列が空の場合があります。",
            "items": {
              "$ref": "#/components/schemas/AlphaSessionDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaSourceSnapshotDto": {
        "properties": {
          "source_ids": {
            "description": "Video identifiers frozen into the workflow source snapshot.\n\nworkflow source snapshotに固定する動画識別子です。",
            "example": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "examples": [
              [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ]
            ],
            "items": {
              "type": "string"
            },
            "maxItems": 32,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "source_ids"
        ],
        "type": "object"
      },
      "AlphaTimelineEventDto": {
        "properties": {
          "attributes": {
            "items": {
              "$ref": "#/components/schemas/AlphaAnswerAttributeDto"
            },
            "type": "array"
          },
          "end_ms": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "event_id": {
            "type": "string"
          },
          "evidence": {
            "items": {
              "$ref": "#/components/schemas/AlphaEvidenceRefDto"
            },
            "type": "array"
          },
          "label": {
            "type": "string"
          },
          "result_state": {
            "description": "Trust state for a claim or answer:\n- found: the requested condition is supported by the available evidence.\n- not_found: the requested condition is not supported by the available evidence.\n- uncertain: the evidence is insufficient or conflicting.\n- not_checked: the system did not inspect the required evidence.",
            "enum": [
              "found",
              "not_found",
              "uncertain",
              "not_checked"
            ],
            "type": "string"
          },
          "start_ms": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "event_id",
          "label",
          "start_ms",
          "result_state"
        ],
        "type": "object"
      },
      "AlphaUsageDto": {
        "properties": {
          "cached_input_tokens": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "input_tokens": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "media_seconds": {
            "minimum": 0,
            "type": "number"
          },
          "output_tokens": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "provider_returned_cost": {
            "type": "string"
          },
          "total_tokens": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          }
        },
        "type": "object"
      },
      "AlphaVideoDto": {
        "properties": {
          "created_at": {
            "description": "Creation timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式の作成時刻です。",
            "example": "2026-08-08T10:00:00.000Z",
            "examples": [
              "2026-08-08T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "duration": {
            "description": "Detected video duration in seconds, when available.\n\n利用可能な場合に返る、検出された動画長（秒）です。",
            "example": 183.75,
            "examples": [
              183.75
            ],
            "type": "number"
          },
          "error": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AlphaAsyncErrorDto"
              }
            ],
            "description": "Curated asynchronous failure details, when processing failed."
          },
          "error_message": {
            "deprecated": true,
            "description": "Deprecated curated detail retained during migration. Use error instead.",
            "example": "The video could not be processed.",
            "examples": [
              "The video could not be processed."
            ],
            "type": "string"
          },
          "filename": {
            "description": "Original filename recorded for the video.\n\n動画に記録された元のファイル名です。",
            "example": "warehouse-inspection-2026-08-08.mp4",
            "examples": [
              "warehouse-inspection-2026-08-08.mp4"
            ],
            "type": "string"
          },
          "frame_count": {
            "description": "Number of frames indexed for this video, when available.\n\n利用可能な場合に返る、この動画でindexされたframe数です。",
            "example": 4410,
            "examples": [
              4410
            ],
            "type": "number"
          },
          "id": {
            "description": "Public video identifier used by alpha paths, filters, and source snapshots. The raw database identifier is never returned.\n\nalphaのpath、filter、source snapshotで使うpublic video identifierです。raw database identifierは返しません。",
            "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "progress": {
            "description": "Best-effort processing progress from 0 to 100.\n\n0から100までの処理進捗です。目安の値であり、厳密な完了時刻を表しません。",
            "example": 100,
            "examples": [
              100
            ],
            "type": "number"
          },
          "source": {
            "description": "Video source: user was uploaded by a caller; demo is a platform-provided sample; url was imported from a source URL.",
            "enum": [
              "user",
              "demo",
              "url"
            ],
            "example": "user",
            "examples": [
              "user"
            ],
            "type": "string"
          },
          "status": {
            "description": "Coarse processing status: queued is waiting to start; processing is extracting, analyzing, or indexing; completed is searchable; failed ended with an error. Use progress for more detail.",
            "enum": [
              "queued",
              "processing",
              "completed",
              "failed"
            ],
            "example": "completed",
            "examples": [
              "completed"
            ],
            "type": "string"
          },
          "thumbnail_url": {
            "description": "Reviewable signed thumbnail URL, when one is available. Signed while this response is built and valid for one hour.\n\n利用可能な場合に返る、確認用のsigned thumbnail URLです。この応答の生成時にsignされ、1時間有効です。",
            "example": "https://cdn.example.test/media/vid_0190b5d4/thumbnail.jpg",
            "examples": [
              "https://cdn.example.test/media/vid_0190b5d4/thumbnail.jpg"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "Last update timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式の最終更新時刻です。",
            "example": "2026-08-08T10:06:12.000Z",
            "examples": [
              "2026-08-08T10:06:12.000Z"
            ],
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "filename",
          "status",
          "source",
          "progress",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "AlphaVideoPageDto": {
        "properties": {
          "data": {
            "description": "Videos returned in this page. The array may be empty.\n\nこのpageで返す動画です。配列が空の場合があります。",
            "example": [
              {
                "created_at": "2026-08-08T10:00:00.000Z",
                "duration": 183.75,
                "filename": "warehouse-inspection-2026-08-08.mp4",
                "frame_count": 4410,
                "id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                "progress": 100,
                "source": "user",
                "status": "completed",
                "updated_at": "2026-08-08T10:06:12.000Z"
              }
            ],
            "examples": [
              [
                {
                  "created_at": "2026-08-08T10:00:00.000Z",
                  "duration": 183.75,
                  "filename": "warehouse-inspection-2026-08-08.mp4",
                  "frame_count": 4410,
                  "id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                  "progress": 100,
                  "source": "user",
                  "status": "completed",
                  "updated_at": "2026-08-08T10:06:12.000Z"
                }
              ]
            ],
            "items": {
              "$ref": "#/components/schemas/AlphaVideoDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaWebhookEventEnvelopeDto": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "example": "2026-08-08T10:05:00.000Z",
            "format": "date-time",
            "type": "string"
          },
          "data": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/AlphaWebhookVideoIndexedDataDto"
              },
              {
                "$ref": "#/components/schemas/AlphaWebhookVideoFailedDataDto"
              },
              {
                "$ref": "#/components/schemas/AlphaWebhookRunCompletedDataDto"
              },
              {
                "$ref": "#/components/schemas/AlphaWebhookRunFailedDataDto"
              },
              {
                "$ref": "#/components/schemas/AlphaWebhookRunCanceledDataDto"
              }
            ]
          },
          "id": {
            "example": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^evt_",
            "type": "string"
          },
          "type": {
            "description": "Event that can be delivered to the endpoint:\n- video.indexed: a video finished indexing and is searchable.\n- video.failed: video processing failed.\n- run.completed: a run finished successfully.\n- run.failed: a run finished with an error.\n- run.canceled: a run was canceled before completion.",
            "enum": [
              "video.indexed",
              "video.failed",
              "run.completed",
              "run.failed",
              "run.canceled"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "created_at",
          "data"
        ],
        "type": "object"
      },
      "AlphaWebhookRunCanceledDataDto": {
        "additionalProperties": false,
        "properties": {
          "run_id": {
            "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^run_",
            "type": "string"
          },
          "status": {
            "const": "cancelled",
            "type": "string"
          },
          "workflow_id": {
            "example": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^wf_",
            "type": "string"
          }
        },
        "required": [
          "run_id",
          "status"
        ],
        "type": "object"
      },
      "AlphaWebhookRunCanceledEventDto": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "example": "2026-08-08T10:05:00.000Z",
            "format": "date-time",
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/AlphaWebhookRunCanceledDataDto"
          },
          "id": {
            "example": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^evt_",
            "type": "string"
          },
          "type": {
            "const": "run.canceled",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "created_at",
          "data"
        ],
        "type": "object"
      },
      "AlphaWebhookRunCompletedDataDto": {
        "additionalProperties": false,
        "properties": {
          "case_id": {
            "pattern": "^case_",
            "type": "string"
          },
          "reason_code": {
            "type": "string"
          },
          "report_id": {
            "pattern": "^rep_",
            "type": "string"
          },
          "result_state": {
            "description": "Trust state for a claim or answer:\n- found: the requested condition is supported by the available evidence.\n- not_found: the requested condition is not supported by the available evidence.\n- uncertain: the evidence is insufficient or conflicting.\n- not_checked: the system did not inspect the required evidence.\n- error: execution failed before a trustworthy answer was available.",
            "enum": [
              "found",
              "not_found",
              "uncertain",
              "not_checked",
              "error"
            ],
            "type": "string"
          },
          "run_id": {
            "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^run_",
            "type": "string"
          },
          "status": {
            "const": "completed",
            "type": "string"
          },
          "summary": {
            "type": "string"
          },
          "workflow_id": {
            "example": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^wf_",
            "type": "string"
          }
        },
        "required": [
          "run_id",
          "status"
        ],
        "type": "object"
      },
      "AlphaWebhookRunCompletedEventDto": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "example": "2026-08-08T10:05:00.000Z",
            "format": "date-time",
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/AlphaWebhookRunCompletedDataDto"
          },
          "id": {
            "example": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^evt_",
            "type": "string"
          },
          "type": {
            "const": "run.completed",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "created_at",
          "data"
        ],
        "type": "object"
      },
      "AlphaWebhookRunFailedDataDto": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "$ref": "#/components/schemas/AlphaAsyncErrorDto"
          },
          "error_message": {
            "deprecated": true,
            "type": "string"
          },
          "reason_code": {
            "type": "string"
          },
          "result_state": {
            "description": "Trust state for a claim or answer:\n- found: the requested condition is supported by the available evidence.\n- not_found: the requested condition is not supported by the available evidence.\n- uncertain: the evidence is insufficient or conflicting.\n- not_checked: the system did not inspect the required evidence.\n- error: execution failed before a trustworthy answer was available.",
            "enum": [
              "found",
              "not_found",
              "uncertain",
              "not_checked",
              "error"
            ],
            "type": "string"
          },
          "run_id": {
            "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^run_",
            "type": "string"
          },
          "status": {
            "const": "failed",
            "type": "string"
          },
          "workflow_id": {
            "example": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^wf_",
            "type": "string"
          }
        },
        "required": [
          "run_id",
          "status",
          "error"
        ],
        "type": "object"
      },
      "AlphaWebhookRunFailedEventDto": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "example": "2026-08-08T10:05:00.000Z",
            "format": "date-time",
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/AlphaWebhookRunFailedDataDto"
          },
          "id": {
            "example": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^evt_",
            "type": "string"
          },
          "type": {
            "const": "run.failed",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "created_at",
          "data"
        ],
        "type": "object"
      },
      "AlphaWebhookVideoFailedDataDto": {
        "additionalProperties": false,
        "properties": {
          "error": {
            "$ref": "#/components/schemas/AlphaAsyncErrorDto"
          },
          "error_message": {
            "deprecated": true,
            "type": "string"
          },
          "status": {
            "const": "failed",
            "type": "string"
          },
          "video_id": {
            "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^vid_",
            "type": "string"
          }
        },
        "required": [
          "video_id",
          "status",
          "error"
        ],
        "type": "object"
      },
      "AlphaWebhookVideoFailedEventDto": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "example": "2026-08-08T10:05:00.000Z",
            "format": "date-time",
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/AlphaWebhookVideoFailedDataDto"
          },
          "id": {
            "example": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^evt_",
            "type": "string"
          },
          "type": {
            "const": "video.failed",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "created_at",
          "data"
        ],
        "type": "object"
      },
      "AlphaWebhookVideoIndexedDataDto": {
        "additionalProperties": false,
        "properties": {
          "status": {
            "const": "completed",
            "type": "string"
          },
          "video_id": {
            "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^vid_",
            "type": "string"
          }
        },
        "required": [
          "video_id",
          "status"
        ],
        "type": "object"
      },
      "AlphaWebhookVideoIndexedEventDto": {
        "additionalProperties": false,
        "properties": {
          "created_at": {
            "example": "2026-08-08T10:05:00.000Z",
            "format": "date-time",
            "type": "string"
          },
          "data": {
            "$ref": "#/components/schemas/AlphaWebhookVideoIndexedDataDto"
          },
          "id": {
            "example": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "pattern": "^evt_",
            "type": "string"
          },
          "type": {
            "const": "video.indexed",
            "type": "string"
          }
        },
        "required": [
          "id",
          "type",
          "created_at",
          "data"
        ],
        "type": "object"
      },
      "AlphaWorkflowDto": {
        "properties": {
          "created_at": {
            "description": "Creation timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式の作成時刻です。",
            "example": "2026-08-10T10:05:00.000Z",
            "examples": [
              "2026-08-10T10:05:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "created_by": {
            "example": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "id": {
            "example": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "latest_run_id": {
            "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "name": {
            "example": "Warehouse safety review",
            "examples": [
              "Warehouse safety review"
            ],
            "type": "string"
          },
          "output_modes": {
            "description": "Output requested from a workflow run:\n- case: a grouped review case.\n- report: a rendered report.\n- evidence_bundle: an evidence bundle for downstream review.",
            "example": [
              "report"
            ],
            "examples": [
              [
                "report"
              ]
            ],
            "items": {
              "enum": [
                "case",
                "report",
                "evidence_bundle"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "playbook": {
            "example": "Review every indexed scene.",
            "examples": [
              "Review every indexed scene."
            ],
            "type": "string"
          },
          "rule_set_version_id": {
            "description": "Identifies the set of rules this workflow would apply if you started a run now. It changes whenever the rulebook changes, so it describes what will happen next, not what happened before. To find out which rules produced a past finding, read `rule_set_version_id` on that run.\n\n今runを開始した場合に、このworkflowが適用するruleの集合を示します。rulebookが変わるたびに値も変わるため、過去ではなく次回の内容を表します。過去の検出結果に使われたruleを確認するには、そのrunの `rule_set_version_id` を参照してください。",
            "example": "snap_7ef3a4b2c1d0",
            "examples": [
              "snap_7ef3a4b2c1d0"
            ],
            "type": "string"
          },
          "rulebook_id": {
            "description": "The rulebook this workflow applies.\n\nこのworkflowが適用するrulebookです。",
            "example": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "source_ids": {
            "example": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "examples": [
              [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ]
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "status": {
            "description": "Current workflow state:\n- draft: being defined and not ready to run.\n- ready: valid and ready for a run.\n- running: a run is active.\n- completed: the latest workflow run completed.\n- failed: the latest workflow run failed.\n- archived: retained for history and not available for new runs.",
            "enum": [
              "draft",
              "ready",
              "running",
              "completed",
              "failed",
              "archived"
            ],
            "example": "draft",
            "examples": [
              "draft"
            ],
            "type": "string"
          },
          "template_type": {
            "description": "Workflow domain template:\n- media_review: review visual or audio evidence from media.\n- content_review: review media content against content requirements.\n- retail_store_operations: review store operations and observed work conditions.",
            "enum": [
              "media_review",
              "content_review",
              "retail_store_operations"
            ],
            "example": "media_review",
            "examples": [
              "media_review"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "Last update timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式の最終更新時刻です。",
            "example": "2026-08-10T10:06:00.000Z",
            "examples": [
              "2026-08-10T10:06:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "template_type",
          "source_ids",
          "output_modes",
          "status",
          "created_by",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "AlphaWorkflowPageDto": {
        "properties": {
          "data": {
            "description": "Resources returned in this page. The array may be empty.\n\nこのpageで返すresourceです。配列が空の場合があります。",
            "items": {
              "$ref": "#/components/schemas/AlphaWorkflowDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AlphaWorkflowRunDetailDto": {
        "properties": {
          "case_id": {
            "example": "case_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "case_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "error": {
            "$ref": "#/components/schemas/AlphaAsyncErrorDto"
          },
          "error_message": {
            "deprecated": true,
            "description": "Deprecated curated detail retained during migration. Use error instead.",
            "type": "string"
          },
          "provenance": {
            "$ref": "#/components/schemas/AlphaPublicProvenanceDto"
          },
          "reason_code": {
            "type": "string"
          },
          "report_id": {
            "example": "rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "rule_set_version_id": {
            "example": "snap_7ef3a4b2c1d0",
            "examples": [
              "snap_7ef3a4b2c1d0"
            ],
            "type": "string"
          },
          "rulebook_id": {
            "example": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "source_snapshot": {
            "$ref": "#/components/schemas/AlphaSourceSnapshotDto"
          },
          "summary": {
            "example": "Workflow execution is evaluating indexed evidence.",
            "examples": [
              "Workflow execution is evaluating indexed evidence."
            ],
            "type": "string"
          },
          "workflow_id": {
            "example": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          }
        },
        "required": [
          "workflow_id"
        ],
        "type": "object"
      },
      "AnalysisAnswerFieldDto": {
        "properties": {
          "description": {
            "maxLength": 2000,
            "type": "string"
          },
          "key": {
            "description": "Stable semantic field key declared in the answer specification and referenced by report blocks.",
            "maxLength": 128,
            "type": "string"
          },
          "label": {
            "description": "Human-readable label for the semantic answer field.",
            "maxLength": 256,
            "type": "string"
          },
          "required": {
            "default": true,
            "type": "boolean"
          },
          "type": {
            "description": "Value type for a declared answer field:\n- string: text.\n- integer: a whole number.\n- number: a number that may contain a fractional part.\n- boolean: true or false.\nOnly string fields are currently admitted by the timeline and synthesis capabilities; the other values are reserved until a capability admits them.",
            "enum": [
              "string",
              "integer",
              "number",
              "boolean"
            ],
            "example": "string",
            "examples": [
              "string"
            ],
            "type": "string"
          }
        },
        "required": [
          "key",
          "label",
          "type",
          "description"
        ],
        "type": "object"
      },
      "AnalysisAnswerSpecDto": {
        "properties": {
          "aggregation_level": {
            "default": "video",
            "description": "Scope at which answer values are combined:\n- occurrence: one observed occurrence.\n- video: one video.\n- run: all sources in one analysis run.\n- project: all sources in one project.",
            "enum": [
              "occurrence",
              "video",
              "run",
              "project"
            ],
            "example": "video",
            "examples": [
              "video"
            ],
            "type": "string"
          },
          "answer_key": {
            "description": "Stable name of one semantic answer produced by the profile and referenced by report blocks.",
            "maxLength": 128,
            "type": "string"
          },
          "answer_type": {
            "description": "Semantic shape of an answer:\n- verdict: one decision or classification.\n- measurement: one numeric or measured value.\n- enumeration: a set of named values.\n- timeline: time-ordered events with semantic intervals.\n- comparison: values compared between two scopes.\n- retrieval: ranked evidence matches.\n- synthesis: a narrative or structured summary.\nCurrent alpha admission accepts timeline and synthesis. The other values are schema vocabulary only and are not currently admitted.",
            "enum": [
              "verdict",
              "measurement",
              "enumeration",
              "timeline",
              "comparison",
              "retrieval",
              "synthesis"
            ],
            "example": "timeline",
            "examples": [
              "timeline"
            ],
            "type": "string"
          },
          "coverage": {
            "default": "complete",
            "description": "Evidence coverage used for the answer:\n- retrieved_evidence: only evidence returned by retrieval.\n- selected_range: the caller-selected time range.\n- representative: a representative sample of the available scope.\n- complete: the full admitted scope was inspected.\nCoverage is separate from answer_type and must be preserved when results are rendered.",
            "enum": [
              "retrieved_evidence",
              "selected_range",
              "representative",
              "complete"
            ],
            "example": "complete",
            "examples": [
              "complete"
            ],
            "type": "string"
          },
          "evidence": {
            "$ref": "#/components/schemas/AnalysisEvidenceDto"
          },
          "fields": {
            "items": {
              "$ref": "#/components/schemas/AnalysisAnswerFieldDto"
            },
            "maxItems": 64,
            "type": "array"
          },
          "temporal_granularity": {
            "description": "Time unit of answer values:\n- instant: one time point.\n- window: a time interval selected by the analysis.\n- semantic_segment: a meaningful event interval selected from the instruction and evidence.",
            "enum": [
              "instant",
              "window",
              "semantic_segment"
            ],
            "example": "semantic_segment",
            "examples": [
              "semantic_segment"
            ],
            "type": "string"
          },
          "temporal_scope": {
            "description": "Time scope of an answer:\n- instantaneous: applies at one point in time.\n- windowed: applies to a time interval.\n- cumulative: accumulates across the inspected scope.\n- terminal: describes the final state of the inspected scope.",
            "enum": [
              "instantaneous",
              "windowed",
              "cumulative",
              "terminal"
            ],
            "example": "windowed",
            "examples": [
              "windowed"
            ],
            "type": "string"
          }
        },
        "required": [
          "answer_key",
          "answer_type",
          "fields",
          "evidence"
        ],
        "type": "object"
      },
      "AnalysisEvidenceDto": {
        "properties": {
          "accepted_types": {
            "description": "Evidence form that can support an answer:\n- clip: a reviewable video interval.\n- frame: a reviewable video frame.\n- ocr_span: text read from video imagery.\n- transcript_span: spoken text aligned to the video.\n- scene_description: a description of visible scene content.",
            "example": [
              "clip"
            ],
            "examples": [
              [
                "clip"
              ]
            ],
            "items": {
              "enum": [
                "clip",
                "frame",
                "ocr_span",
                "transcript_span",
                "scene_description"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "per_field": {
            "default": true,
            "type": "boolean"
          },
          "required": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "accepted_types"
        ],
        "type": "object"
      },
      "AnalysisReportArtifactBindingDto": {
        "properties": {
          "answer_ref": {
            "description": "Opaque identifier of the named answer that supplies this report value.",
            "type": "string"
          },
          "coverage_ref": {
            "description": "Opaque coverage snapshot reference for the bound value.",
            "type": "string"
          },
          "evidence_refs": {
            "description": "Opaque evidence identifiers supporting this value.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "evidence_spans": {
            "description": "Evidence spans and clip-relative offsets. The wire fields are evidence_spans, offset_start_ms, and offset_end_ms.",
            "items": {
              "$ref": "#/components/schemas/AnalysisReportArtifactEvidenceSpanDto"
            },
            "type": "array"
          },
          "evidence_urls": {
            "description": "Reviewable product or signed media URLs for the supporting evidence.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "evidence_urls_expire_at": {
            "description": "ISO 8601 expiry time shared by the signed evidence URLs in this binding, when URLs are present.",
            "format": "date-time",
            "type": "string"
          },
          "limitations": {
            "description": "Limitations that qualify this value or its evidence.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "provenance_refs": {
            "description": "Opaque provenance references for the bound value.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "reason_code": {
            "description": "Stable reason for the result state, or null when no reason code is assigned.",
            "oneOf": [
              {
                "description": "Reason for a report result or binding:\n- manifest_unavailable: the source trust manifest was not available.\n- tenant_context_invalid: the tenant context was invalid.\n- not_applicable: the report value does not apply to this scope.\n- no_required_evidence: required evidence was not available.\n- requirements_satisfied: the requested requirements were satisfied.\n- required_evidence_backfill: required evidence was backfilled.\n- backfill_capability_unavailable: the backfill capability was unavailable.\n- backfill_not_authorized: backfill was not authorized.\n- budget_exhausted: processing budget limited the result.\n- execution_failed: execution failed while producing the result.\n- required_evidence_not_extracted: required evidence was not extracted.\n- optional_evidence_unavailable: optional evidence was not available.\n- coverage_state_invalid: the coverage state was invalid.\n- present: the requested value is present.\n- index_profile_incomplete: the index profile was incomplete.\n- conflicting_evidence: available evidence conflicts.\n- capability_not_implemented: the requested capability is not implemented.",
                "enum": [
                  "manifest_unavailable",
                  "tenant_context_invalid",
                  "not_applicable",
                  "no_required_evidence",
                  "requirements_satisfied",
                  "required_evidence_backfill",
                  "backfill_capability_unavailable",
                  "backfill_not_authorized",
                  "budget_exhausted",
                  "execution_failed",
                  "required_evidence_not_extracted",
                  "optional_evidence_unavailable",
                  "coverage_state_invalid",
                  "present",
                  "index_profile_incomplete",
                  "conflicting_evidence",
                  "capability_not_implemented"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "report_path": {
            "description": "Presentation path in the rendered report where this binding appears. It is not a storage path.",
            "type": "string"
          },
          "result_state": {
            "description": "Trust state for a claim or answer:\n- found: the requested condition is supported by the available evidence.\n- not_found: the requested condition is not supported by the available evidence.\n- uncertain: the evidence is insufficient or conflicting.\n- not_checked: the system did not inspect the required evidence.\n- error: execution failed before a trustworthy answer was available.",
            "enum": [
              "found",
              "not_found",
              "uncertain",
              "not_checked",
              "error"
            ],
            "type": "string"
          },
          "semantic_field": {
            "description": "Projector-emitted logical answer-field identifier for traceability, such as narrative/summary, rows/..., or values/.... It is not a storage path and does not create a field.",
            "type": "string"
          }
        },
        "required": [
          "report_path",
          "answer_ref",
          "semantic_field",
          "result_state",
          "reason_code",
          "limitations",
          "evidence_refs",
          "evidence_urls",
          "coverage_ref",
          "provenance_refs"
        ],
        "type": "object"
      },
      "AnalysisReportArtifactDto": {
        "properties": {
          "analysis_profile_ref": {
            "description": "Opaque analysis profile snapshot identifier.",
            "type": "string"
          },
          "content": {
            "description": "Rendered JSON or Markdown artifact content. Request with expand[]=content.",
            "type": "string"
          },
          "content_identity": {
            "description": "Opaque content snapshot identifier for the deterministic stored artifact body. A Markdown read may substitute fresh signed URLs into content; contentIdentity still identifies the stored placeholder body.",
            "type": "string"
          },
          "content_ref": {
            "type": "string"
          },
          "content_type": {
            "description": "Media type of report artifact content:\n- application/json: structured report content.\n- text/markdown: Markdown report content.",
            "enum": [
              "application/json",
              "text/markdown"
            ],
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "format": {
            "description": "Report artifact format:\n- json: structured machine-readable report content.\n- markdown: human-readable Markdown report content.",
            "enum": [
              "json",
              "markdown"
            ],
            "type": "string"
          },
          "id": {
            "description": "Report artifact identifier minted for this immutable artifact.",
            "example": "rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "manifest": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AnalysisReportArtifactManifestDto"
              }
            ],
            "description": "Trust bindings with fresh signed evidence URLs. Request with expand[]=manifest."
          },
          "output_identity": {
            "description": "Opaque output snapshot identifier.",
            "type": "string"
          },
          "report_template_ref": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "run_id": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "run_id",
          "format",
          "content_type",
          "content_ref",
          "report_template_ref",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "AnalysisReportArtifactEvidenceSpanDto": {
        "properties": {
          "end_ms": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "id": {
            "description": "Opaque evidence identifier for the span.",
            "type": "string"
          },
          "offset_end_ms": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "offset_start_ms": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          },
          "start_ms": {
            "format": "int64",
            "minimum": 0,
            "type": "number"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "AnalysisReportArtifactManifestDto": {
        "properties": {
          "analysis_profile_ref": {
            "type": "string"
          },
          "artifact_id": {
            "type": "string"
          },
          "bindings": {
            "items": {
              "$ref": "#/components/schemas/AnalysisReportArtifactBindingDto"
            },
            "type": "array"
          },
          "content_ref": {
            "type": "string"
          },
          "content_type": {
            "description": "Media type of report artifact content:\n- application/json: structured report content.\n- text/markdown: Markdown report content.",
            "enum": [
              "application/json",
              "text/markdown"
            ],
            "type": "string"
          },
          "evidence_urls_expire_at": {
            "description": "ISO 8601 expiry time for signed evidence URLs in this manifest, when URLs are present.",
            "format": "date-time",
            "type": "string"
          },
          "report_template_ref": {
            "type": "string"
          },
          "run_id": {
            "type": "string"
          },
          "schema_version": {
            "description": "Trust manifest schema version. report-trust-manifest/1 contains report bindings, result states, limitations, evidence, coverage, and provenance references.",
            "enum": [
              "report-trust-manifest/1"
            ],
            "type": "string"
          }
        },
        "required": [
          "schema_version",
          "artifact_id",
          "run_id",
          "content_type",
          "content_ref",
          "analysis_profile_ref",
          "report_template_ref",
          "bindings"
        ],
        "type": "object"
      },
      "AnalysisReportArtifactMetadataDto": {
        "properties": {
          "analysis_profile_ref": {
            "description": "Opaque analysis profile snapshot identifier.",
            "type": "string"
          },
          "content_identity": {
            "description": "Opaque content snapshot identifier for the deterministic stored artifact body. A Markdown read may substitute fresh signed URLs into content; contentIdentity still identifies the stored placeholder body.",
            "type": "string"
          },
          "content_ref": {
            "type": "string"
          },
          "content_type": {
            "description": "Media type of report artifact content:\n- application/json: structured report content.\n- text/markdown: Markdown report content.",
            "enum": [
              "application/json",
              "text/markdown"
            ],
            "type": "string"
          },
          "created_at": {
            "format": "date-time",
            "type": "string"
          },
          "format": {
            "description": "Report artifact format:\n- json: structured machine-readable report content.\n- markdown: human-readable Markdown report content.",
            "enum": [
              "json",
              "markdown"
            ],
            "type": "string"
          },
          "id": {
            "description": "Report artifact identifier minted for this immutable artifact.",
            "example": "rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "manifest": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AnalysisReportArtifactManifestDto"
              }
            ],
            "description": "Trust bindings with fresh signed evidence URLs. Request with expand[]=manifest."
          },
          "output_identity": {
            "description": "Opaque output snapshot identifier.",
            "type": "string"
          },
          "report_template_ref": {
            "type": "string"
          },
          "request_id": {
            "type": "string"
          },
          "run_id": {
            "type": "string"
          },
          "updated_at": {
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "id",
          "run_id",
          "format",
          "content_type",
          "content_ref",
          "report_template_ref",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "AnalysisReportArtifactPageDto": {
        "properties": {
          "data": {
            "description": "Resources returned in this page. The array may be empty.\n\nこのpageで返すresourceです。配列が空の場合があります。",
            "items": {
              "$ref": "#/components/schemas/AnalysisReportArtifactMetadataDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "AnalysisReportArtifactRenderResponseDto": {
        "properties": {
          "data": {
            "description": "Resources returned in this page. The array may be empty.\n\nこのpageで返すresourceです。配列が空の場合があります。",
            "items": {
              "$ref": "#/components/schemas/AnalysisReportArtifactMetadataDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "CompleteVideoUploadDto": {
        "properties": {},
        "type": "object"
      },
      "ConfirmAlphaRulebookCsvImportDto": {
        "properties": {
          "default_rulebook_name": {
            "example": "Imported Safety Rules",
            "examples": [
              "Imported Safety Rules"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "mapping": {
            "$ref": "#/components/schemas/AlphaRulebookCsvMappingDto"
          },
          "session_id": {
            "example": "rbi_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "rbi_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          }
        },
        "required": [
          "session_id",
          "mapping"
        ],
        "type": "object"
      },
      "CreateAlphaProfileDto": {
        "properties": {
          "answer_specs": {
            "items": {
              "$ref": "#/components/schemas/AnalysisAnswerSpecDto"
            },
            "maxItems": 16,
            "type": "array"
          },
          "description": {
            "example": "Reusable profile for safety reviews.",
            "examples": [
              "Reusable profile for safety reviews."
            ],
            "maxLength": 2000,
            "type": "string"
          },
          "instructions": {
            "maxLength": 12000,
            "type": "string"
          },
          "name": {
            "example": "Warehouse safety profile",
            "examples": [
              "Warehouse safety profile"
            ],
            "maxLength": 256,
            "type": "string"
          }
        },
        "required": [
          "instructions",
          "answer_specs",
          "name"
        ],
        "type": "object"
      },
      "CreateAlphaProfileVersionDto": {
        "properties": {
          "answer_specs": {
            "items": {
              "$ref": "#/components/schemas/AnalysisAnswerSpecDto"
            },
            "maxItems": 16,
            "type": "array"
          },
          "instructions": {
            "maxLength": 12000,
            "type": "string"
          }
        },
        "required": [
          "instructions",
          "answer_specs"
        ],
        "type": "object"
      },
      "CreateAlphaReportTemplateDto": {
        "properties": {
          "blocks": {
            "items": {
              "$ref": "#/components/schemas/ReportTemplateBlockDto"
            },
            "maxItems": 32,
            "type": "array"
          },
          "description": {
            "example": "Reusable report presentation.",
            "examples": [
              "Reusable report presentation."
            ],
            "maxLength": 2000,
            "type": "string"
          },
          "language": {
            "example": "ja",
            "examples": [
              "ja"
            ],
            "maxLength": 16,
            "type": "string"
          },
          "name": {
            "example": "Warehouse safety report",
            "examples": [
              "Warehouse safety report"
            ],
            "maxLength": 256,
            "type": "string"
          }
        },
        "required": [
          "language",
          "blocks",
          "name"
        ],
        "type": "object"
      },
      "CreateAlphaReportTemplateVersionDto": {
        "properties": {
          "blocks": {
            "items": {
              "$ref": "#/components/schemas/ReportTemplateBlockDto"
            },
            "maxItems": 32,
            "type": "array"
          },
          "language": {
            "example": "ja",
            "examples": [
              "ja"
            ],
            "maxLength": 16,
            "type": "string"
          }
        },
        "required": [
          "language",
          "blocks"
        ],
        "type": "object"
      },
      "CreateAlphaRulebookDto": {
        "properties": {
          "content": {
            "description": "The rulebook written out as text. Use `rules` for a structured rule list.\n\nrulebookをテキストで記述したものです。構造化されたruleの一覧には `rules` を使います。",
            "example": "Inspect every emergency exit.",
            "examples": [
              "Inspect every emergency exit."
            ],
            "type": "string"
          },
          "name": {
            "description": "Name for the rulebook, shown wherever it is listed.\n\nrulebookの名称です。一覧などに表示されます。",
            "example": "Warehouse Safety",
            "examples": [
              "Warehouse Safety"
            ],
            "type": "string"
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/AlphaRulebookRuleInputDto"
            },
            "type": "array"
          }
        },
        "required": [
          "name",
          "content",
          "rules"
        ],
        "type": "object"
      },
      "CreateAlphaWorkflowDto": {
        "properties": {
          "name": {
            "description": "Name for the workflow, shown wherever it is listed.\n\nworkflowの名称です。一覧などに表示されます。",
            "example": "Warehouse safety review",
            "examples": [
              "Warehouse safety review"
            ],
            "type": "string"
          },
          "output_modes": {
            "description": "Output requested from a workflow run:\n- case: a grouped review case.\n- report: a rendered report.\n- evidence_bundle: an evidence bundle for downstream review.",
            "example": [
              "report"
            ],
            "examples": [
              [
                "report"
              ]
            ],
            "items": {
              "enum": [
                "case",
                "report",
                "evidence_bundle"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "playbook": {
            "description": "Free-text instructions carried with the workflow, alongside its rules.\n\nruleとあわせてworkflowに保持される、自由記述の指示です。",
            "example": "Review every indexed scene.",
            "examples": [
              "Review every indexed scene."
            ],
            "type": "string"
          },
          "rulebook_id": {
            "description": "The rulebook every run of this workflow applies. It must be one this API key can reach.\n\nこのworkflowのrunが適用するrulebookです。このAPI keyが参照できるものを指定します。",
            "example": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "source_ids": {
            "description": "Videos this workflow covers. You can leave it empty and name the source when you start a run instead.\n\nこのworkflowが対象とする動画です。空のままにして、run開始時に対象を指定することもできます。",
            "example": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "examples": [
              [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ]
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "status": {
            "description": "Current workflow state:\n- draft: being defined and not ready to run.\n- ready: valid and ready for a run.\n- running: a run is active.\n- completed: the latest workflow run completed.\n- failed: the latest workflow run failed.\n- archived: retained for history and not available for new runs.",
            "enum": [
              "draft",
              "ready",
              "running",
              "completed",
              "failed",
              "archived"
            ],
            "example": "draft",
            "examples": [
              "draft"
            ],
            "type": "string"
          },
          "template_type": {
            "description": "Workflow domain template:\n- media_review: review visual or audio evidence from media.\n- content_review: review media content against content requirements.\n- retail_store_operations: review store operations and observed work conditions.",
            "enum": [
              "media_review",
              "content_review",
              "retail_store_operations"
            ],
            "example": "media_review",
            "examples": [
              "media_review"
            ],
            "type": "string"
          }
        },
        "required": [
          "name",
          "rulebook_id",
          "template_type"
        ],
        "type": "object"
      },
      "CreateQueryDto": {
        "properties": {
          "query": {
            "description": "Natural-language question for the session. The server supplies the session videos and stored history to the query engine.\n\nこのsessionへの自然言語の質問です。サーバーがsessionの動画と保存済みhistoryをquery engineに渡します。",
            "example": "What changed after the north door opened?",
            "examples": [
              "What changed after the north door opened?"
            ],
            "maxLength": 2000,
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "CreateRunDto": {
        "properties": {
          "execute_now": {
            "default": true,
            "description": "Whether to start execution asynchronously. The alpha default is true.\n\n非同期実行を開始するかどうかです。alphaでの既定値はtrueです。",
            "example": true,
            "examples": [
              true
            ],
            "type": "boolean"
          },
          "execution_profile_ref": {
            "description": "Execution profile reference in name@version form. Accepted values are `premium-analysis@1`, `balanced-analysis@1`, and `economy-analysis@1`.\n\nname@version形式のexecution profile参照です。受け付ける値は`premium-analysis@1`、`balanced-analysis@1`、`economy-analysis@1`です。",
            "enum": [
              "premium-analysis@1",
              "balanced-analysis@1",
              "economy-analysis@1"
            ],
            "example": "premium-analysis@1",
            "examples": [
              "premium-analysis@1"
            ],
            "maxLength": 128,
            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*@[0-9]+(?:\\.[0-9]+)*$",
            "type": "string"
          },
          "formats": {
            "description": "Report artifact format:\n- json: structured machine-readable report content.\n- markdown: human-readable Markdown report content.",
            "items": {
              "enum": [
                "json",
                "markdown"
              ],
              "type": "string"
            },
            "maxItems": 2,
            "type": "array"
          },
          "kind": {
            "description": "Run processing-mode discriminator. workflow applies a stored rulebook; analysis applies a stored analysis profile and report template. audit is planned and is not accepted by this contract.",
            "enum": [
              "workflow",
              "analysis"
            ],
            "type": "string"
          },
          "profile_id": {
            "description": "Stored analysis profile identifier used by the run. The latest version is used when profile_version is omitted.\n\nrunで使う保存済みanalysis profileの識別子です。profile_versionを省略するとlatestを使います。",
            "example": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "profile_version": {
            "description": "Immutable stored profile version. Omit to resolve latest.",
            "minimum": 1,
            "type": "number"
          },
          "report_template_id": {
            "description": "Stored report-template identifier used by the run. The latest version is used when report_template_version is omitted.\n\nrunで使う保存済みreport templateの識別子です。report_template_versionを省略するとlatestを使います。",
            "example": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "report_template_version": {
            "description": "Immutable stored report-template version. Omit to resolve latest.",
            "minimum": 1,
            "type": "number"
          },
          "source_ids": {
            "description": "Video identifiers evaluated by an analysis run.\n\n分析ランで評価する動画識別子です。",
            "example": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "examples": [
              [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ]
            ],
            "items": {
              "type": "string"
            },
            "maxItems": 32,
            "type": "array"
          },
          "source_snapshot": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AlphaSourceSnapshotDto"
              }
            ],
            "description": "Immutable source snapshot passed to the workflow service. The public object contains the selected video identifiers.\n\nworkflow serviceへ渡すimmutableなsource snapshotです。public objectには選択した動画識別子を含めます。"
          },
          "summary": {
            "description": "Optional summary stored with the run and shown while it executes.\n\nrunに保存し、実行中に表示する任意のsummaryです。",
            "example": "Warehouse safety review - August 2026",
            "examples": [
              "Warehouse safety review - August 2026"
            ],
            "type": "string"
          },
          "workflow_id": {
            "description": "Workflow identifier created by POST /api/v1alpha1/workflows and visible to the authenticated workspace.\n\nPOST /api/v1alpha1/workflowsで作成し、認証済みワークスペースから見えるworkflowの識別子です。",
            "example": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          }
        },
        "required": [
          "kind"
        ],
        "type": "object"
      },
      "CreateSessionDto": {
        "properties": {
          "video_ids": {
            "description": "Video identifiers held by this conversation. Every identifier must be visible to the API key creator in the active workspace.\n\nこの会話で使用する動画識別子です。すべての識別子が、active workspaceでAPI keyの作成者から見える必要があります。",
            "example": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "examples": [
              [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ]
            ],
            "items": {
              "type": "string"
            },
            "maxItems": 100,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "video_ids"
        ],
        "type": "object"
      },
      "CreateVideoIntentDto": {
        "properties": {
          "file_size": {
            "description": "Exact video size in bytes. The server verifies the stored object against this value before processing.\n\n動画の正確なサイズ（bytes）です。processing前に、サーバーはstorage上のobjectとこの値を比較します。",
            "example": 157286400,
            "examples": [
              157286400
            ],
            "format": "int64",
            "maximum": 10737418240,
            "minimum": 1,
            "type": "integer"
          },
          "filename": {
            "description": "Original filename stored with the upload session. Include the file extension when it is known.\n\nアップロードセッションに保存する元のファイル名です。分かっている場合は拡張子を含めてください。",
            "example": "warehouse-inspection-2026-08-08.mp4",
            "examples": [
              "warehouse-inspection-2026-08-08.mp4"
            ],
            "type": "string"
          }
        },
        "required": [
          "filename",
          "file_size"
        ],
        "type": "object"
      },
      "CreateWebhookDto": {
        "properties": {
          "description": {
            "description": "Optional human-readable description for operators.\n\n運用者向けの任意の説明文です。",
            "example": "Warehouse review pipeline",
            "examples": [
              "Warehouse review pipeline"
            ],
            "type": "string"
          },
          "events": {
            "description": "Event type: video.indexed means a video is searchable; video.failed means video processing failed; run.completed means a run finished; run.failed means a run failed; run.canceled means a run was canceled.",
            "example": [
              "video.indexed",
              "run.completed"
            ],
            "examples": [
              [
                "video.indexed",
                "run.completed"
              ]
            ],
            "items": {
              "enum": [
                "video.indexed",
                "video.failed",
                "run.completed",
                "run.failed",
                "run.canceled"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "url": {
            "description": "Public HTTPS Webhook endpoint. The API rejects credentials, private, loopback, link-local, and unique-local destinations at registration and delivery time.\n\npublicなHTTPS Webhook endpointです。APIは登録時とdelivery時に、credential付き、private、loopback、link-local、unique-localのdestinationを拒否します。",
            "example": "https://hooks.example.com/deepframe",
            "examples": [
              "https://hooks.example.com/deepframe"
            ],
            "type": "string"
          }
        },
        "required": [
          "url",
          "events"
        ],
        "type": "object"
      },
      "CreatedWebhookEndpointDto": {
        "properties": {
          "created_at": {
            "description": "Endpoint creation timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式のendpoint作成時刻です。",
            "example": "2026-08-08T10:00:00.000Z",
            "examples": [
              "2026-08-08T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Human-readable endpoint description, when supplied.\n\n指定されている場合の、人間が読めるendpoint説明文です。",
            "example": "Warehouse review pipeline",
            "examples": [
              "Warehouse review pipeline"
            ],
            "type": "string"
          },
          "enabled": {
            "description": "Whether new delivery attempts are enabled.\n\n新しいdelivery attemptが有効かどうかです。",
            "example": true,
            "examples": [
              true
            ],
            "type": "boolean"
          },
          "events": {
            "description": "Event type: video.indexed means a video is searchable; video.failed means video processing failed; run.completed means a run finished; run.failed means a run failed; run.canceled means a run was canceled. These are the event types currently enabled for delivery.",
            "example": [
              "video.indexed",
              "run.completed"
            ],
            "examples": [
              [
                "video.indexed",
                "run.completed"
              ]
            ],
            "items": {
              "enum": [
                "video.indexed",
                "video.failed",
                "run.completed",
                "run.failed",
                "run.canceled"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "Webhook endpoint identifier used in endpoint and delivery-history paths.\n\nendpointとdelivery historyのpathで使うWebhook endpoint識別子です。",
            "example": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "secret": {
            "description": "Signing secret for Standard Webhooks verification. Returned only in the create response; store it securely and never log it.\n\nStandard Webhooks検証に使うsigning secretです。create応答でのみ返し、安全に保存してlogには出さないでください。",
            "example": "whsec_c2RrX3Rlc3Q",
            "examples": [
              "whsec_c2RrX3Rlc3Q"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "Endpoint last-update timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式のendpoint最終更新時刻です。",
            "example": "2026-08-08T10:09:00.000Z",
            "examples": [
              "2026-08-08T10:09:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "url": {
            "description": "Registered public HTTPS URL. The signing secret is never included in list, get, or update responses.\n\n登録済みのpublic HTTPS URLです。signing secretはlist、get、updateの応答には含まれません。",
            "example": "https://hooks.example.com/deepframe",
            "examples": [
              "https://hooks.example.com/deepframe"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "url",
          "events",
          "enabled",
          "created_at",
          "updated_at",
          "secret"
        ],
        "type": "object"
      },
      "PreviewAlphaRulebookCsvImportDto": {
        "properties": {
          "csv_text": {
            "example": "Rule ID,Requirement\nR1,Exit is clear",
            "examples": [
              "Rule ID,Requirement\nR1,Exit is clear"
            ],
            "maxLength": 2000000,
            "type": "string"
          },
          "default_rulebook_name": {
            "example": "Imported Safety Rules",
            "examples": [
              "Imported Safety Rules"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "filename": {
            "example": "warehouse-rules.csv",
            "examples": [
              "warehouse-rules.csv"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "mapping": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AlphaRulebookCsvMappingDto"
              }
            ],
            "type": [
              "object",
              "null"
            ]
          }
        },
        "required": [
          "csv_text"
        ],
        "type": "object"
      },
      "ProblemDetailsDto": {
        "properties": {
          "admission_constant": {
            "description": "Stable problem extension member identifying the admission capability constant that rejected the request.\n\nリクエストを拒否したadmission capability constantを示す、安定したproblem extension memberです。",
            "example": "ANALYSIS_ADMISSION_CAPABILITIES.timeline.coverage",
            "examples": [
              "ANALYSIS_ADMISSION_CAPABILITIES.timeline.coverage"
            ],
            "type": "string"
          },
          "admitted_values": {
            "description": "Values admitted by the named capability, when available.\n\n指定されたcapabilityでadmissionされる値です。利用可能な場合に返ります。",
            "example": [
              "complete"
            ],
            "examples": [
              [
                "complete"
              ]
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "answer_key": {
            "description": "Answer key for the analysis answer specification that failed admission, when available.\n\nadmissionに失敗したanalysis answer specificationのanswer keyです。利用可能な場合に返ります。",
            "example": "timeline",
            "examples": [
              "timeline"
            ],
            "type": "string"
          },
          "detail": {
            "description": "Explanation of this particular occurrence, for a person to read. The wording can change at any time, so do not branch on it.\n\n今回の発生内容を人間向けに説明する文です。文面は予告なく変わるため、この値で分岐しないでください。",
            "example": "No finding matches that id in this workspace.",
            "examples": [
              "No finding matches that id in this workspace."
            ],
            "type": "string"
          },
          "errors": {
            "description": "Validation errors for individual request fields, when available.\n\n利用可能な場合に、個別のrequest fieldに対するvalidation errorです。",
            "example": [
              "video_id must be a string"
            ],
            "examples": [
              [
                "video_id must be a string"
              ]
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "instance": {
            "description": "Request target that produced this problem, with sensitive query values redacted.\n\nこのproblemを発生させたrequest targetです。機密性のあるquery valueはredactされます。",
            "example": "/api/v1alpha1/videos/vid_0190b5d4",
            "examples": [
              "/api/v1alpha1/videos/vid_0190b5d4"
            ],
            "type": "string"
          },
          "quota_dimension": {
            "description": "Stable problem extension member identifying the exceeded quota dimension.\n\n超過したquota dimensionを示す、安定したproblem extension memberです。",
            "example": "indexing_hours",
            "examples": [
              "indexing_hours"
            ],
            "type": "string"
          },
          "received": {
            "description": "Value that failed semantic admission, when available.\n\nsemantic admissionに失敗した値です。利用可能な場合に返ります。",
            "example": "retrieved_evidence",
            "examples": [
              "retrieved_evidence"
            ],
            "type": "string"
          },
          "request_id": {
            "description": "Correlation identifier for the request. Use it when contacting support.\n\nリクエストのcorrelation identifierです。サポートへの問い合わせ時に使用してください。",
            "example": "0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "status": {
            "description": "HTTP status code for this problem.\n\nこのproblemに対応するHTTP status codeです。",
            "example": 404,
            "examples": [
              404
            ],
            "type": "number"
          },
          "title": {
            "description": "Short, human-readable summary of the problem.\n\n問題を人間向けに要約した短いtitleです。",
            "example": "Resource not found",
            "examples": [
              "Resource not found"
            ],
            "type": "string"
          },
          "type": {
            "description": "Stable URI identifying what went wrong. Branch on this rather than on `detail`, and open it to read the documentation for that error.\n\n何が起きたかを示す安定したURIです。`detail`ではなくこの値で分岐してください。URIを開くと、そのエラーの説明を読めます。",
            "example": "https://developers.deepframe.cloud/errors/resource-not-found",
            "examples": [
              "https://developers.deepframe.cloud/errors/resource-not-found"
            ],
            "type": "string"
          }
        },
        "required": [
          "type",
          "title",
          "status",
          "detail",
          "request_id",
          "instance"
        ],
        "type": "object"
      },
      "RecordVideoUploadPartDto": {
        "properties": {
          "etag": {
            "description": "ETag returned by direct storage. Preserve the value exactly, including quotes when present.\n\n直接storageが返したETagです。quoteを含む場合も含め、値をそのまま保持してください。",
            "example": "\"etag-part-1\"",
            "examples": [
              "\"etag-part-1\""
            ],
            "type": "string"
          },
          "part_number": {
            "description": "One-based multipart part number.\n\n1から始まるmultipart part番号です。",
            "example": 1,
            "examples": [
              1
            ],
            "format": "int32",
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "part_number",
          "etag"
        ],
        "type": "object"
      },
      "RecordVideoUploadPartsDto": {
        "properties": {
          "parts": {
            "description": "Part receipts to record. Repeating a receipt with the same ETag is safe; a different ETag for one part is rejected.\n\n記録するpart receiptです。同じETagのreceiptの再送は安全ですが、同じpartの異なるETagは拒否します。",
            "example": [
              {
                "etag": "\"etag-part-1\"",
                "part_number": 1
              }
            ],
            "examples": [
              [
                {
                  "etag": "\"etag-part-1\"",
                  "part_number": 1
                }
              ]
            ],
            "items": {
              "$ref": "#/components/schemas/RecordVideoUploadPartDto"
            },
            "maxItems": 10000,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "parts"
        ],
        "type": "object"
      },
      "RenderAnalysisReportsDto": {
        "properties": {
          "formats": {
            "description": "Report artifact format:\n- json: structured machine-readable report content.\n- markdown: human-readable Markdown report content.",
            "items": {
              "enum": [
                "json",
                "markdown"
              ],
              "type": "string"
            },
            "maxItems": 2,
            "minItems": 1,
            "type": "array"
          },
          "report_template": {
            "$ref": "#/components/schemas/ReportTemplateDto"
          }
        },
        "required": [
          "report_template",
          "formats"
        ],
        "type": "object"
      },
      "ReportTemplateBlockDto": {
        "properties": {
          "answer_key": {
            "description": "Stable answer key produced by the selected analysis profile and rendered by this block.",
            "maxLength": 128,
            "type": "string"
          },
          "columns": {
            "description": "Canonical output columns for timeline, table, or value blocks. Each key must reference an existing field in the selected answer. Do not provide field_labels with columns; field_labels is a legacy timeline-only fallback. Prefer columns for new templates.",
            "items": {
              "$ref": "#/components/schemas/ReportTemplateFieldLabelDto"
            },
            "maxItems": 64,
            "type": "array"
          },
          "field_labels": {
            "description": "Legacy timeline-only alias and fallback for columns. When columns is absent, it selects and relabels existing timeline attributes by key. It cannot be combined with columns or create semantic fields. Prefer columns for new templates.",
            "items": {
              "$ref": "#/components/schemas/ReportTemplateFieldLabelDto"
            },
            "maxItems": 64,
            "type": "array"
          },
          "group_by": {
            "description": "Existing answer field key used to group rows or timeline events. It does not create a semantic field.",
            "maxLength": 128,
            "type": "string"
          },
          "label": {
            "description": "Optional presentation label for this report block.",
            "maxLength": 256,
            "type": "string"
          },
          "mapping": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Safe JSON output path to answer path mapping. Internal provenance and stage paths are not allowed.\n\n安全なJSON出力pathからanswer pathへのmappingです。内部のprovenanceとstage pathは使用できません。",
            "type": "object"
          },
          "sort_by": {
            "description": "Existing answer field key used for stable sorting. It does not create a semantic field.",
            "maxLength": 128,
            "type": "string"
          },
          "sort_direction": {
            "default": "asc",
            "description": "Sort direction applied to sort_by: asc orders from low to high or earliest to latest; desc reverses that order.",
            "enum": [
              "asc",
              "desc"
            ],
            "type": "string"
          },
          "type": {
            "description": "Presentation shape for a report block:\n- timeline: render time-ordered events and their selected fields.\n- narrative: render text such as a summary or explanation.\n- table: render repeated rows and selected columns.\n- value: render one selected value or compact value set.\n- json: render the selected answer data as JSON.",
            "enum": [
              "timeline",
              "narrative",
              "table",
              "value",
              "json"
            ],
            "type": "string"
          }
        },
        "required": [
          "type",
          "answer_key"
        ],
        "type": "object"
      },
      "ReportTemplateDto": {
        "properties": {
          "blocks": {
            "items": {
              "$ref": "#/components/schemas/ReportTemplateBlockDto"
            },
            "maxItems": 32,
            "type": "array"
          },
          "id": {
            "example": "procedure-report-ja",
            "examples": [
              "procedure-report-ja"
            ],
            "maxLength": 128,
            "type": "string"
          },
          "language": {
            "example": "ja",
            "examples": [
              "ja"
            ],
            "maxLength": 16,
            "type": "string"
          },
          "version": {
            "example": 1,
            "examples": [
              1
            ],
            "minimum": 1,
            "type": "number"
          }
        },
        "required": [
          "language",
          "blocks"
        ],
        "type": "object"
      },
      "ReportTemplateFieldLabelDto": {
        "properties": {
          "key": {
            "description": "Existing semantic answer-field key selected for presentation. This reference must match a field declared by the answer and cannot create a new field.",
            "maxLength": 128,
            "type": "string"
          },
          "label": {
            "description": "Presentation label for the selected answer field. It changes display text only and does not rename the semantic field.",
            "maxLength": 256,
            "type": "string"
          }
        },
        "required": [
          "key",
          "label"
        ],
        "type": "object"
      },
      "RequestVideoUploadTargetsDto": {
        "properties": {
          "part_numbers": {
            "description": "One-based multipart part numbers for which to mint fresh targets. If omitted, the server returns the initial target batch.\n\nfresh targetを発行する1から始まるmultipart part番号です。省略すると、サーバーは初期target batchを返します。",
            "example": [
              1,
              2,
              3
            ],
            "examples": [
              [
                1,
                2,
                3
              ]
            ],
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "maxItems": 100,
            "type": "array"
          }
        },
        "type": "object"
      },
      "SearchAlphaDto": {
        "properties": {
          "limit": {
            "default": 25,
            "description": "Maximum number of ranked results to return. The default is 25 and the accepted range is 1-100.\n\n返すranked resultの最大数です。既定値は25で、1から100まで指定できます。",
            "example": 10,
            "examples": [
              10
            ],
            "format": "int32",
            "maximum": 100,
            "minimum": 1,
            "type": "number"
          },
          "query": {
            "description": "Natural-language query matched against indexed video evidence.\n\nindex済み動画のevidenceに対して照合する自然言語queryです。",
            "example": "person entering through the north door",
            "examples": [
              "person entering through the north door"
            ],
            "maxLength": 2000,
            "type": "string"
          },
          "threshold": {
            "default": 0.7,
            "description": "Minimum similarity score accepted for a result. The default is 0.7 and the accepted range is 0-1.\n\nresultとして受け付ける最小similarity scoreです。既定値は0.7で、0から1まで指定できます。",
            "example": 0.82,
            "examples": [
              0.82
            ],
            "maximum": 1,
            "minimum": 0,
            "type": "number"
          },
          "video_ids": {
            "description": "Restrict search to video identifiers owned by the authenticated API key workspace. Every requested id must be visible.\n\n認証済みAPI keyのワークスペースが所有する動画識別子に検索を限定します。指定したすべてのidが見える必要があります。",
            "example": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "examples": [
              [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ]
            ],
            "items": {
              "type": "string"
            },
            "maxItems": 100,
            "type": "array"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "UpdateAlphaRulebookDto": {
        "properties": {
          "content": {
            "description": "New text for the rulebook. Omit to leave it unchanged.\n\nrulebookの新しいテキストです。省略すると変更しません。",
            "example": "Inspect all exits.",
            "examples": [
              "Inspect all exits."
            ],
            "type": "string"
          },
          "name": {
            "description": "New name for the rulebook. Omit to leave it unchanged.\n\nrulebookの新しい名称です。省略すると変更しません。",
            "example": "Updated Warehouse Safety",
            "examples": [
              "Updated Warehouse Safety"
            ],
            "type": "string"
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/AlphaRulebookRuleInputDto"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "UpdateWebhookDto": {
        "properties": {
          "description": {
            "description": "Replacement human-readable endpoint description.\n\n置き換える人間向けのendpoint説明文です。",
            "example": "Warehouse staging review pipeline",
            "examples": [
              "Warehouse staging review pipeline"
            ],
            "type": "string"
          },
          "enabled": {
            "description": "Whether new deliveries are enabled for this endpoint.\n\nこのendpointへの新しいdeliveryを有効にするかどうかです。",
            "example": true,
            "examples": [
              true
            ],
            "type": "boolean"
          },
          "events": {
            "description": "Event type: video.indexed means a video is searchable; video.failed means video processing failed; run.completed means a run finished; run.failed means a run failed; run.canceled means a run was canceled. Supplying this list replaces the complete current list.",
            "example": [
              "video.failed",
              "run.completed"
            ],
            "examples": [
              [
                "video.failed",
                "run.completed"
              ]
            ],
            "items": {
              "enum": [
                "video.indexed",
                "video.failed",
                "run.completed",
                "run.failed",
                "run.canceled"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "url": {
            "description": "Replacement public HTTPS Webhook endpoint. It is checked against the same SSRF policy before storage.\n\n置き換えるpublicなHTTPS Webhook endpointです。保存前に同じSSRF policyで検査します。",
            "example": "https://hooks.example.com/deepframe-v2",
            "examples": [
              "https://hooks.example.com/deepframe-v2"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "UploadTargetDto": {
        "properties": {
          "expires_at": {
            "description": "RFC 3339 UTC date-time at which this target expires.\n\nこのtargetが失効するRFC 3339 UTC date-timeです。",
            "example": "2026-08-08T10:15:00.000Z",
            "examples": [
              "2026-08-08T10:15:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Headers that must be sent with the PUT. These values are already covered by the signed target.\n\nPUT時に送る必要があるheadersです。これらの値はtargetの署名に含まれています。",
            "type": "object"
          },
          "method": {
            "description": "HTTP method for the direct-to-storage request. The only value is put, which means upload the object with an HTTP PUT request.",
            "enum": [
              "put"
            ],
            "example": "put",
            "examples": [
              "put"
            ],
            "type": "string"
          },
          "part_number": {
            "description": "One-based multipart part number. It is absent for the single direct target.\n\nmultipart part番号です。1回のdirect targetでは省略されます。",
            "example": 2,
            "examples": [
              2
            ],
            "format": "int32",
            "type": "integer"
          },
          "url": {
            "description": "Short-lived target for a direct-to-storage PUT.\n\n直接storage PUTに使う短時間有効なtargetです。",
            "example": "https://s3.example.test/upload",
            "examples": [
              "https://s3.example.test/upload"
            ],
            "type": "string"
          }
        },
        "required": [
          "method",
          "url",
          "expires_at"
        ],
        "type": "object"
      },
      "VideoUploadSessionDto": {
        "properties": {
          "chunk_size": {
            "example": 10485760,
            "examples": [
              10485760
            ],
            "format": "int64",
            "type": "integer"
          },
          "completed_parts": {
            "description": "Number of completed multipart parts represented by persisted receipts.\n\n永続化したreceiptが表す完了済みmultipart part数です。",
            "example": 2,
            "examples": [
              2
            ],
            "format": "int32",
            "type": "integer"
          },
          "expires_at": {
            "description": "RFC 3339 UTC date-time at which this upload session expires.\n\nこのupload sessionが失効するRFC 3339 UTC date-timeです。",
            "example": "2026-08-08T10:15:00.000Z",
            "examples": [
              "2026-08-08T10:15:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "file_size": {
            "description": "Exact video size in bytes that completion must verify.\n\ncompletionで検証する正確な動画サイズ（bytes）です。",
            "example": 157286400,
            "examples": [
              157286400
            ],
            "format": "int64",
            "type": "integer"
          },
          "received_parts": {
            "description": "Sorted multipart part numbers represented by persisted receipts.\n\n永続化したreceiptが表すsortedなmultipart part番号です。",
            "example": [
              1,
              3
            ],
            "examples": [
              [
                1,
                3
              ]
            ],
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "type": "array"
          },
          "reported_bytes": {
            "description": "Bytes represented by persisted upload receipts.\n\n永続化したupload receiptが表すbytesです。",
            "example": 20971520,
            "examples": [
              20971520
            ],
            "format": "int64",
            "type": "integer"
          },
          "state": {
            "description": "Upload-session state: open accepts uploads; completed was finalized; aborted was stopped by the caller; expired passed its expiry time. This is separate from video processing status.",
            "enum": [
              "open",
              "completed",
              "aborted",
              "expired"
            ],
            "example": "open",
            "examples": [
              "open"
            ],
            "type": "string"
          },
          "strategy": {
            "description": "Server-selected upload strategy: direct uses one storage request; multipart splits a large video into storage parts.",
            "enum": [
              "direct",
              "multipart"
            ],
            "example": "direct",
            "examples": [
              "direct"
            ],
            "type": "string"
          },
          "target": {
            "$ref": "#/components/schemas/UploadTargetDto"
          },
          "targets": {
            "items": {
              "$ref": "#/components/schemas/UploadTargetDto"
            },
            "type": "array"
          },
          "total_chunks": {
            "example": 16,
            "examples": [
              16
            ],
            "format": "int32",
            "type": "integer"
          },
          "uploaded_bytes": {
            "description": "Bytes observed in persisted storage progress.\n\n永続化したstorage progressで観測したbytesです。",
            "example": 10485760,
            "examples": [
              10485760
            ],
            "format": "int64",
            "type": "integer"
          },
          "verified_bytes": {
            "description": "Bytes verified by completion storage checks.\n\ncompletionのstorage検証で確認したbytesです。",
            "example": 0,
            "examples": [
              0
            ],
            "format": "int64",
            "type": "integer"
          },
          "video_id": {
            "description": "DeepFrame video identifier for this upload session.\n\nこのupload sessionのDeepFrame video identifierです。",
            "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          }
        },
        "required": [
          "video_id",
          "strategy",
          "file_size",
          "expires_at",
          "state",
          "uploaded_bytes",
          "received_parts",
          "reported_bytes",
          "verified_bytes",
          "completed_parts"
        ],
        "type": "object"
      },
      "WebhookDeliveryDto": {
        "properties": {
          "attempts": {
            "description": "Number of delivery attempts made so far.\n\nこれまでに実行したdelivery attempt数です。",
            "example": 2,
            "examples": [
              2
            ],
            "type": "number"
          },
          "created_at": {
            "description": "Delivery creation timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式のdelivery作成時刻です。",
            "example": "2026-08-08T10:00:01.000Z",
            "examples": [
              "2026-08-08T10:00:01.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "endpoint_id": {
            "description": "Webhook endpoint identifier that owns this delivery.\n\nこのdeliveryを所有するWebhook endpoint識別子です。",
            "example": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "event_id": {
            "description": "Stable event identifier used as the Standard Webhooks webhook-id and for delivery deduplication.\n\nStandard Webhooksのwebhook-idとdelivery重複排除に使うstable event identifierです。",
            "example": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "event_type": {
            "description": "Event type: video.indexed means a video is searchable; video.failed means video processing failed; run.completed means a run finished; run.failed means a run failed; run.canceled means a run was canceled.",
            "enum": [
              "video.indexed",
              "video.failed",
              "run.completed",
              "run.failed",
              "run.canceled"
            ],
            "example": "video.indexed",
            "examples": [
              "video.indexed"
            ],
            "type": "string"
          },
          "id": {
            "description": "Stored public delivery identifier used for redelivery. It is minted for this record and never contains the database identifier.\n\nredeliveryに使う保存済みのpublic delivery identifierです。このrecord用に発行され、database identifierは含みません。",
            "example": "delivery_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "delivery_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "next_attempt_at": {
            "description": "RFC 3339 UTC date-time at or after which the pending delivery may be attempted again.\n\npending deliveryを再試行できるRFC 3339 UTC date-timeです。",
            "example": "2026-08-08T10:10:00.000Z",
            "examples": [
              "2026-08-08T10:10:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "response_status": {
            "description": "Last HTTP response status received from the endpoint, when available.\n\n利用可能な場合に返る、endpointから受け取った直近のHTTP response statusです。",
            "example": 202,
            "examples": [
              202
            ],
            "type": "number"
          },
          "status": {
            "description": "Delivery status: pending is waiting for delivery; delivering is in progress; delivered was accepted by the endpoint; failed may be retried; dead_lettered reached the retry limit.",
            "enum": [
              "pending",
              "delivering",
              "delivered",
              "failed",
              "dead_lettered"
            ],
            "example": "delivered",
            "examples": [
              "delivered"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "endpoint_id",
          "event_id",
          "event_type",
          "status",
          "attempts",
          "created_at"
        ],
        "type": "object"
      },
      "WebhookDeliveryPageDto": {
        "properties": {
          "data": {
            "description": "Webhook delivery records returned in this page. The array may be empty.\n\nこのpageで返すWebhook delivery recordです。配列が空の場合があります。",
            "example": [
              {
                "attempts": 1,
                "created_at": "2026-08-08T10:00:01.000Z",
                "endpoint_id": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                "event_id": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                "event_type": "video.indexed",
                "id": "delivery_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                "next_attempt_at": "2026-08-08T10:05:00.000Z",
                "response_status": 200,
                "status": "delivered"
              }
            ],
            "examples": [
              [
                {
                  "attempts": 1,
                  "created_at": "2026-08-08T10:00:01.000Z",
                  "endpoint_id": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                  "event_id": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                  "event_type": "video.indexed",
                  "id": "delivery_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                  "next_attempt_at": "2026-08-08T10:05:00.000Z",
                  "response_status": 200,
                  "status": "delivered"
                }
              ]
            ],
            "items": {
              "$ref": "#/components/schemas/WebhookDeliveryDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      },
      "WebhookEndpointDto": {
        "properties": {
          "created_at": {
            "description": "Endpoint creation timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式のendpoint作成時刻です。",
            "example": "2026-08-08T10:00:00.000Z",
            "examples": [
              "2026-08-08T10:00:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "Human-readable endpoint description, when supplied.\n\n指定されている場合の、人間が読めるendpoint説明文です。",
            "example": "Warehouse review pipeline",
            "examples": [
              "Warehouse review pipeline"
            ],
            "type": "string"
          },
          "enabled": {
            "description": "Whether new delivery attempts are enabled.\n\n新しいdelivery attemptが有効かどうかです。",
            "example": true,
            "examples": [
              true
            ],
            "type": "boolean"
          },
          "events": {
            "description": "Event type: video.indexed means a video is searchable; video.failed means video processing failed; run.completed means a run finished; run.failed means a run failed; run.canceled means a run was canceled. These are the event types currently enabled for delivery.",
            "example": [
              "video.indexed",
              "run.completed"
            ],
            "examples": [
              [
                "video.indexed",
                "run.completed"
              ]
            ],
            "items": {
              "enum": [
                "video.indexed",
                "video.failed",
                "run.completed",
                "run.failed",
                "run.canceled"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "Webhook endpoint identifier used in endpoint and delivery-history paths.\n\nendpointとdelivery historyのpathで使うWebhook endpoint識別子です。",
            "example": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
            "examples": [
              "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
            ],
            "type": "string"
          },
          "updated_at": {
            "description": "Endpoint last-update timestamp in RFC 3339 UTC date-time format.\n\nRFC 3339 UTC date-time形式のendpoint最終更新時刻です。",
            "example": "2026-08-08T10:09:00.000Z",
            "examples": [
              "2026-08-08T10:09:00.000Z"
            ],
            "format": "date-time",
            "type": "string"
          },
          "url": {
            "description": "Registered public HTTPS URL. The signing secret is never included in list, get, or update responses.\n\n登録済みのpublic HTTPS URLです。signing secretはlist、get、updateの応答には含まれません。",
            "example": "https://hooks.example.com/deepframe",
            "examples": [
              "https://hooks.example.com/deepframe"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "url",
          "events",
          "enabled",
          "created_at",
          "updated_at"
        ],
        "type": "object"
      },
      "WebhookEndpointPageDto": {
        "properties": {
          "data": {
            "description": "Webhook endpoints returned in this page. The array may be empty.\n\nこのpageで返すWebhook endpointです。配列が空の場合があります。",
            "example": [
              {
                "created_at": "2026-08-08T10:00:00.000Z",
                "enabled": true,
                "events": [
                  "video.indexed",
                  "run.completed"
                ],
                "id": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                "updated_at": "2026-08-08T10:09:00.000Z",
                "url": "https://hooks.example.com/deepframe"
              }
            ],
            "examples": [
              [
                {
                  "created_at": "2026-08-08T10:00:00.000Z",
                  "enabled": true,
                  "events": [
                    "video.indexed",
                    "run.completed"
                  ],
                  "id": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                  "updated_at": "2026-08-08T10:09:00.000Z",
                  "url": "https://hooks.example.com/deepframe"
                }
              ]
            ],
            "items": {
              "$ref": "#/components/schemas/WebhookEndpointDto"
            },
            "type": "array"
          },
          "has_more": {
            "description": "Whether another page is available. This is false exactly when next_cursor is null.\n\n次のpageがあるかどうかです。next_cursorがnullの場合は必ずfalseです。",
            "example": false,
            "examples": [
              false
            ],
            "type": "boolean"
          },
          "next_cursor": {
            "description": "Opaque cursor for the next page, or null when this is the last page. Pass it unchanged as cursor.\n\n次ページ用のopaqueなcursorです。最後のpageではnullになります。値を変更せずcursorとして渡してください。",
            "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
            "examples": [
              "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "data",
          "next_cursor",
          "has_more"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "apiKey": {
        "bearerFormat": "DeepFrame API key",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "contact": {},
    "description": "The DeepFrame v1alpha1 public API. Alpha access requires a Public API Alpha key or an existing operator-issued alpha key.\n\n### API keys\nAuthenticate with the `Authorization: Bearer <API key>` header. The key must be active, must belong to your organization, and must have alpha access enabled. A workspace admin can create a Public API Alpha key in the DeepFrame developer settings after accepting the current API Terms. The workspace must be explicitly opted in by a platform admin before alpha traffic is allowed.\n\n### Versioning\nThis alpha revision has no compatibility promise. Breaking changes ship as `v1alpha2`, and a prior alpha revision may receive a 30-day sunset through the `Deprecation` and `Sunset` headers.\n\n### Errors\nSynchronous HTTP errors use RFC 9457 `application/problem+json` responses with stable `type` URIs. HTTP 200 asynchronous resources use a nested `error` object with `code`, `title`, `detail`, and `next_action`; that object has no HTTP status member.\n\n### Date-times\nDate-times in request and response bodies are RFC 3339 UTC strings with an explicit offset, for example `2026-08-08T10:15:00.000Z`. The exceptions are HTTP headers that carry their own date formats (`Retry-After`, `Sunset`) and the webhook `webhook-timestamp` header, which is a Unix timestamp in seconds.\n\n### Pagination\nList endpoints use an opaque cursor envelope with a default limit of 25 and a maximum of 100. Pass `next_cursor` unchanged as `cursor`.\n\n### Idempotency\nMutating POST endpoints accept `Idempotency-Key`. A key is remembered for 24 hours, scoped to your workspace and to the route you sent it to. Reusing it with a different request body or path is rejected rather than replayed.\n\n### Rate limits\nAuthenticated responses include `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset`. The server-owned Public API Alpha budget is 10,000 requests per hour for the workspace, shared by all alpha keys. `X-RateLimit-Limit` reports the effective per-key limit and `X-RateLimit-Remaining` is also constrained by the shared workspace budget. An existing operator-issued key may have a lower per-key limit. Exhausted budgets return 429 with `Retry-After`.\n\n### Webhooks\nAn authenticated workspace can register HTTPS endpoints for `video.indexed`, `video.failed`, `run.completed`, `run.failed`, and `run.canceled` events, inspect delivery history, and request redelivery.\n\nDeepFrame v1alpha1 public APIです。alphaアクセスにはPublic API Alpha keyまたは既存のoperator発行alpha keyが必要です。\n\n### APIキー\n認証では `Authorization: Bearer <API key>` ヘッダーを使用します。API キーは有効化されており、自身の organization に属し、かつ alpha アクセス権限を持っている必要があります。ワークスペースの管理者は、最新の API 利用規約（Terms）に同意した後、DeepFrame の developer settings で Public API Alpha キーを作成できます。alphaトラフィックを許可するには、プラットフォーム管理者が先にワークスペースを明示的にオプトインする必要があります。\n\n### バージョニング\nこの alpha リビジョンでは互換性を保証しません。破壊的変更（breaking change）は `v1alpha2` として提供されます。旧 alpha リビジョンには 30 日間の廃止（Sunset）期間が設けられ、`Deprecation` ヘッダーおよび `Sunset` ヘッダーによってレスポンス上で通知される場合があります。\n\n### エラー\nSynchronous HTTP errors use RFC 9457 `application/problem+json`. HTTP 200 asynchronous resources use a nested `error` object with `code`, `title`, `detail`, and `next_action`; that object has no HTTP status member.\n\n### 日時\nリクエストおよびレスポンスのボディに含まれる日時は、明示的なオフセットを持つ RFC 3339 形式の UTC 文字列です（例: `2026-08-08T10:15:00.000Z`）。例外として、独自の日付形式を使用する HTTP ヘッダー（`Retry-After` や `Sunset`）と、秒単位の Unix タイムスタンプを使用する Webhook の `webhook-timestamp` ヘッダーがあります。\n\n### ページネーション\nリストを取得するエンドポイントでは、不透明（opaque）なカーソルを用いたページネーションを使用します。limit の既定値は 25、最大値は 100 です。取得した `next_cursor` の値は変更せずに、次のリクエストの `cursor` パラメータとして渡してください。\n\n### べき等性\n変更を行う POST エンドポイントは `Idempotency-Key` を受け付けます。キーは 24 時間保持され、ワークスペースおよび送信先のルートごとにスコープが限定されます。異なるリクエストボディやパスで同じキーを再利用した場合は、再送ではなく拒否されます。\n\n### レート制限\n認証済みレスポンスには `X-RateLimit-Limit`、`X-RateLimit-Remaining`、`X-RateLimit-Reset` が含まれます。Public API Alpha におけるサーバー側の制限（バジェット）は、ワークスペース全体で 1 時間あたり 10,000 リクエストです。この制限はすべての alpha キーで共有されます。`X-RateLimit-Limit` はキーごとの実効バジェットを示し、`X-RateLimit-Remaining` はワークスペース全体の共有バジェットによっても制限されます。既存の operator が発行したキーには、これよりも厳しいキーごとの制限（per-key limit）が設定される場合があります。バジェットを使い切ると `Retry-After` を付けた 429 を返します。\n\n### Webhook\n認証済みワークスペースは、`video.indexed`、`video.failed`、`run.completed`、`run.failed`、`run.canceled` イベント用の HTTPS エンドポイントを登録し、配信履歴を確認し、再配信を要求できます。",
    "title": "DeepFrame Public API Alpha",
    "version": "1alpha1"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/v1alpha1/evidence/{evidence_id}": {
      "get": {
        "description": "Redirects to a freshly signed media URL for one tenant-scoped evidence item.",
        "operationId": "get-evidence",
        "parameters": [
          {
            "description": "Stable evidence identifier returned in an answer or report manifest.",
            "in": "path",
            "name": "evidence_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "302": {
            "description": "Redirects to a freshly signed media URL. The response is not cacheable.",
            "headers": {
              "Cache-Control": {
                "description": "Prevents clients and shared caches from storing the redirect.",
                "schema": {
                  "example": "no-store",
                  "type": "string"
                }
              },
              "Location": {
                "description": "Freshly signed media URL.",
                "schema": {
                  "format": "uri",
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Resolve one evidence item",
        "tags": [
          "Evidence"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/evidence/{evidence_id}\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/evidence/{evidence_id}\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/evidence/{evidence_id}');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/evidence/{evidence_id}')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/findings": {
      "get": {
        "description": "Returns the findings in your workspace, newest first, each with its evidence attached.\n\n- **Access:** an alpha-enabled API key with the `VIEW_INSIGHTS` permission.\n- **Filters:** `run_id`, `video_id`, `result_state`.\n- **Paging:** `limit` defaults to 25, maximum 100. Pass `next_cursor` back unchanged as `cursor`.\n- **Result states:** `found`, `not_found`, `uncertain` and `not_checked` are kept as they are, so an uncertain check is never reported as a pass.\n\nOnce a run has findings, call this with its `run_id`, then open the evidence URLs or fetch a single finding with `GET /api/v1alpha1/findings/{finding_id}`.\n\nワークスペース内の検出結果を、新しい順にevidence付きで返します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`VIEW_INSIGHTS`権限。\n- **フィルター:** `run_id`、`video_id`、`result_state`。\n- **ページング:** `limit`の既定値は25、最大は100。`next_cursor`をそのまま`cursor`として渡します。\n- **結果の状態:** `found`、`not_found`、`uncertain`、`not_checked`をそのまま保持し、不確実な判定をpassに変換しません。\n\nrunの検出結果が揃ったら`run_id`を指定して呼び出し、evidence URLを開くか、`GET /api/v1alpha1/findings/{finding_id}`で1件だけ取得してください。",
        "operationId": "list-findings",
        "parameters": [
          {
            "description": "Opaque cursor returned as next_cursor by the previous response. Pass it byte-for-byte as cursor; do not decode, edit, or construct it.\n\n前の応答のnext_cursorとして返されたopaqueなcursorです。decode、編集、組み立てをせず、そのままcursorとして渡してください。",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
              "examples": [
                "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of resources to return in one page. The default is 25 and the accepted range is 1-100.\n\n1ページで返すresource数です。既定値は25で、1から100まで指定できます。",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "example": 25,
              "examples": [
                25
              ],
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "description": "Return only findings associated with this analysis-run identifier.\n\nこの分析ラン（Run）識別子に関連するfindingだけを返します。",
            "in": "query",
            "name": "run_id",
            "required": false,
            "schema": {
              "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Return only findings associated with this video identifier.\n\nこの動画識別子に関連するfindingだけを返します。",
            "in": "query",
            "name": "video_id",
            "required": false,
            "schema": {
              "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Trust state for a claim or answer:\n- found: the requested condition is supported by the available evidence.\n- not_found: the requested condition is not supported by the available evidence.\n- uncertain: the evidence is insufficient or conflicting.\n- not_checked: the system did not inspect the required evidence.\nUse this field to filter findings by result state.",
            "in": "query",
            "name": "result_state",
            "required": false,
            "schema": {
              "enum": [
                "found",
                "not_found",
                "uncertain",
                "not_checked"
              ],
              "example": "uncertain",
              "examples": [
                "uncertain"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "data": [
                        {
                          "created_at": "2026-08-08T10:05:00.000Z",
                          "description": "A person entered the restricted area without a visible authorization badge.",
                          "evidence": [],
                          "evidence_ids": [
                            "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                          ],
                          "id": "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "result_state": "uncertain",
                          "run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "severity": "high",
                          "status": "open",
                          "title": "Restricted area entry detected",
                          "type": "restricted_area_entry",
                          "updated_at": "2026-08-08T10:08:45.000Z",
                          "workflow_id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaFindingPageDto"
                }
              }
            },
            "description": "Findings returned in a cursor envelope with attached evidence.\n\n検出結果をevidence付きのcursor envelopeで返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List findings\n\n検出結果を一覧表示",
        "tags": [
          "Findings"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/findings\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/findings\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/findings');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/findings')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/findings/{finding_id}": {
      "get": {
        "description": "Returns one finding together with all of its evidence.\n\n- **Access:** an alpha-enabled API key with the `VIEW_INSIGHTS` permission.\n- **Response:** keeps `result_state`, the rule the finding came from, any limitations recorded in `metadata`, and the review fields when they are set.\n- **Evidence:** may include a clip URL, a thumbnail URL, a transcript span, an OCR span, or a scene description.\n- **Not found:** a finding in another workspace is deliberately indistinguishable from one that does not exist.\n\nUse the evidence to check the claim before you accept, dismiss or escalate it in your own product.\n\n1件の検出結果を、そのevidenceとあわせて返します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`VIEW_INSIGHTS`権限。\n- **応答:** `result_state`、検出のもとになったルール、`metadata`に記録されたlimitations、設定されている場合はreview fieldを保持します。\n- **evidence:** clip URL、thumbnail URL、transcript span、OCR span、scene descriptionを含む場合があります。\n- **見つからない場合:** 他のワークスペースの検出結果は、存在しない場合と意図的に区別できません。\n\n利用側のproductでaccept、dismiss、escalateを判断する前に、evidenceでclaimを確認してください。",
        "operationId": "get-finding",
        "parameters": [
          {
            "description": "Identifier of a finding, as returned in `data[].id` by GET /api/v1alpha1/findings.\n\nfindingの識別子です。GET /api/v1alpha1/findingsの `data[].id` で返ります。",
            "in": "path",
            "name": "finding_id",
            "required": true,
            "schema": {
              "example": "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "created_at": "2026-08-08T10:05:00.000Z",
                      "description": "A person entered the restricted area without a visible authorization badge.",
                      "evidence": [
                        {
                          "clip_url": "https://cdn.example.test/media/vid_0190b5d4/clip-42.mp4",
                          "end_time": 49.75,
                          "finding_id": "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "id": "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "start_time": 42.25,
                          "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                        }
                      ],
                      "evidence_ids": [
                        "evidence_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                      ],
                      "id": "finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "metadata": {
                        "extraction_method": "",
                        "frame_number": 0,
                        "limitations": [
                          ""
                        ],
                        "quality": ""
                      },
                      "result_state": "uncertain",
                      "reviewed_at": "2026-08-08T10:08:45.000Z",
                      "reviewed_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "rule_id": "rule_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "rule_reference": "SEC-04",
                      "run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "severity": "high",
                      "status": "open",
                      "title": "Restricted area entry detected",
                      "type": "restricted_area_entry",
                      "updated_at": "2026-08-08T10:08:45.000Z",
                      "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "workflow_id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaFindingDto"
                }
              }
            },
            "description": "Finding returned with its available evidence.\n\n利用可能なevidence付きで検出結果を返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get a finding\n\n検出結果を取得",
        "tags": [
          "Findings"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/findings/finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/findings/finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/findings/finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/findings/finding_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/profiles": {
      "get": {
        "description": "Returns active, named profiles in the workspace with cursor pagination.\n\nワークスペース内のactiveな名前付きprofileをcursor paginationで返します。",
        "operationId": "list-profiles",
        "parameters": [
          {
            "description": "Opaque cursor returned as next_cursor by the previous response. Pass it byte-for-byte as cursor; do not decode, edit, or construct it.\n\n前の応答のnext_cursorとして返されたopaqueなcursorです。decode、編集、組み立てをせず、そのままcursorとして渡してください。",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
              "examples": [
                "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of resources to return in one page. The default is 25 and the accepted range is 1-100.\n\n1ページで返すresource数です。既定値は25で、1から100まで指定できます。",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "example": 25,
              "examples": [
                25
              ],
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "data": [
                        {
                          "anonymous": false,
                          "created_at": "2026-08-22T10:00:00.000Z",
                          "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "description": "Reusable profile for safety reviews.",
                          "id": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "latest_version": 3,
                          "name": "Warehouse safety profile",
                          "status": "active",
                          "updated_at": "2026-08-22T10:00:00.000Z",
                          "updated_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaProfilePageDto"
                }
              }
            },
            "description": "Profiles returned in a cursor envelope.\n\ncursor envelopeでprofileを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List analysis profiles\n\n分析プロファイルを一覧表示",
        "tags": [
          "Profiles"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/profiles\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/profiles\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/profiles');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/profiles')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "post": {
        "description": "Creates profile head and immutable version 1. New runs can reference the returned profile id.\n\nプロファイルheadとimmutableなversion 1を作成します。新しいrunでは返されたprofile idを参照できます。",
        "operationId": "create-profile",
        "parameters": [
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "answer_specs": [
                      {
                        "aggregation_level": "video",
                        "answer_key": "",
                        "answer_type": "timeline",
                        "coverage": "complete",
                        "evidence": {
                          "accepted_types": [
                            "clip"
                          ],
                          "per_field": true,
                          "required": true
                        },
                        "fields": [
                          {
                            "description": "",
                            "key": "",
                            "label": "",
                            "required": true,
                            "type": "string"
                          }
                        ],
                        "temporal_granularity": "semantic_segment",
                        "temporal_scope": "windowed"
                      }
                    ],
                    "description": "Reusable profile for safety reviews.",
                    "instructions": "",
                    "name": "Warehouse safety profile"
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/CreateAlphaProfileDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "anonymous": false,
                      "created_at": "2026-08-22T10:00:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "description": "Reusable profile for safety reviews.",
                      "id": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "latest_version": 3,
                      "name": "Warehouse safety profile",
                      "status": "active",
                      "updated_at": "2026-08-22T10:00:00.000Z",
                      "updated_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaProfileDto"
                }
              }
            },
            "description": "The created profile.\n\n作成したprofileです。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Create an analysis profile\n\n分析プロファイルを作成",
        "tags": [
          "Profiles"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"instructions\": \"\",\n  \"answer_specs\": [\n    {\n      \"answer_key\": \"\",\n      \"answer_type\": \"timeline\",\n      \"temporal_scope\": \"windowed\",\n      \"temporal_granularity\": \"semantic_segment\",\n      \"aggregation_level\": \"video\",\n      \"coverage\": \"complete\",\n      \"fields\": [\n        {\n          \"key\": \"\",\n          \"label\": \"\",\n          \"type\": \"string\",\n          \"description\": \"\",\n          \"required\": true\n        }\n      ],\n      \"evidence\": {\n        \"required\": true,\n        \"per_field\": true,\n        \"accepted_types\": [\n          \"clip\"\n        ]\n      }\n    }\n  ],\n  \"name\": \"Warehouse safety profile\",\n  \"description\": \"Reusable profile for safety reviews.\"\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/profiles\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"create-profile-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"instructions\": \"\",\n      \"answer_specs\": [\n        {\n          \"answer_key\": \"\",\n          \"answer_type\": \"timeline\",\n          \"temporal_scope\": \"windowed\",\n          \"temporal_granularity\": \"semantic_segment\",\n          \"aggregation_level\": \"video\",\n          \"coverage\": \"complete\",\n          \"fields\": [\n            {\n              \"key\": \"\",\n              \"label\": \"\",\n              \"type\": \"string\",\n              \"description\": \"\",\n              \"required\": true\n            }\n          ],\n          \"evidence\": {\n            \"required\": true,\n            \"per_field\": true,\n            \"accepted_types\": [\n              \"clip\"\n            ]\n          }\n        }\n      ],\n      \"name\": \"Warehouse safety profile\",\n      \"description\": \"Reusable profile for safety reviews.\"\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/profiles\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"create-profile-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"instructions\": \"\",\n  \"answer_specs\": [\n    {\n      \"answer_key\": \"\",\n      \"answer_type\": \"timeline\",\n      \"temporal_scope\": \"windowed\",\n      \"temporal_granularity\": \"semantic_segment\",\n      \"aggregation_level\": \"video\",\n      \"coverage\": \"complete\",\n      \"fields\": [\n        {\n          \"key\": \"\",\n          \"label\": \"\",\n          \"type\": \"string\",\n          \"description\": \"\",\n          \"required\": true\n        }\n      ],\n      \"evidence\": {\n        \"required\": true,\n        \"per_field\": true,\n        \"accepted_types\": [\n          \"clip\"\n        ]\n      }\n    }\n  ],\n  \"name\": \"Warehouse safety profile\",\n  \"description\": \"Reusable profile for safety reviews.\"\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/profiles');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: create-profile-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/profiles')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'create-profile-01'\n\nrequest.body = <<~JSON\n  {\n    \"instructions\": \"\",\n    \"answer_specs\": [\n      {\n        \"answer_key\": \"\",\n        \"answer_type\": \"timeline\",\n        \"temporal_scope\": \"windowed\",\n        \"temporal_granularity\": \"semantic_segment\",\n        \"aggregation_level\": \"video\",\n        \"coverage\": \"complete\",\n        \"fields\": [\n          {\n            \"key\": \"\",\n            \"label\": \"\",\n            \"type\": \"string\",\n            \"description\": \"\",\n            \"required\": true\n          }\n        ],\n        \"evidence\": {\n          \"required\": true,\n          \"per_field\": true,\n          \"accepted_types\": [\n            \"clip\"\n          ]\n        }\n      }\n    ],\n    \"name\": \"Warehouse safety profile\",\n    \"description\": \"Reusable profile for safety reviews.\"\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/profiles/{profile_id}": {
      "delete": {
        "description": "Archives the profile instead of deleting it. The operation is idempotent and preserves every version.\n\nprofileをdeleteせずarchiveします。この操作はidempotentで、すべてのversionを保持します。",
        "operationId": "archive-profile",
        "parameters": [
          {
            "description": "Identifier of an analysis profile in this workspace.\n\nこのワークスペースのanalysis profileの識別子です。",
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "example": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The profile was archived. The response has no body.\n\nprofileをarchiveしました。response bodyはありません。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Archive an analysis profile\n\n分析プロファイルをarchive",
        "tags": [
          "Profiles"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"DELETE\", \"https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Delete.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "get": {
        "description": "Returns a profile head, including its latest version and lifecycle state. Archived profiles remain readable.\n\n最新versionとlifecycle stateを含むprofile headを返します。archivedなprofileも読み取れます。",
        "operationId": "get-profile",
        "parameters": [
          {
            "description": "Identifier of an analysis profile in this workspace.\n\nこのワークスペースのanalysis profileの識別子です。",
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "example": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "anonymous": false,
                      "created_at": "2026-08-22T10:00:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "description": "Reusable profile for safety reviews.",
                      "id": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "latest_version": 3,
                      "name": "Warehouse safety profile",
                      "status": "active",
                      "updated_at": "2026-08-22T10:00:00.000Z",
                      "updated_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaProfileDto"
                }
              }
            },
            "description": "The profile head.\n\nprofile headです。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get an analysis profile\n\n分析プロファイルを取得",
        "tags": [
          "Profiles"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/profiles/{profile_id}/versions": {
      "get": {
        "description": "Returns every immutable version of a profile, including archived profiles.\n\narchivedなprofileを含め、すべてのimmutable versionを返します。",
        "operationId": "list-profile-versions",
        "parameters": [
          {
            "description": "Identifier of an analysis profile in this workspace.\n\nこのワークスペースのanalysis profileの識別子です。",
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "example": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "versions": {
                    "summary": "Immutable profile versions",
                    "value": {
                      "data": [
                        {
                          "answer_specs": [
                            {
                              "answer_key": "timeline",
                              "answer_type": "timeline",
                              "evidence": {
                                "accepted_types": [
                                  "clip"
                                ],
                                "per_field": true,
                                "required": true
                              },
                              "fields": [
                                {
                                  "description": "Observed activity.",
                                  "key": "activity",
                                  "label": "Activity",
                                  "type": "string"
                                }
                              ]
                            }
                          ],
                          "created_at": "2026-08-22T10:00:00.000Z",
                          "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "instructions": "Inspect the complete video.",
                          "profile_id": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "version": 1
                        }
                      ],
                      "has_more": false,
                      "next_cursor": null
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaProfileVersionPageDto"
                }
              }
            },
            "description": "Profile versions returned.\n\nprofile versionを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List profile versions\n\nプロファイルversionを一覧表示",
        "tags": [
          "Profiles"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "post": {
        "description": "Appends an immutable version. A profile can have at most 100 versions. Archived and anonymous profiles reject new versions with a conflict.\n\nimmutableなversionを追加します。profileは最大100個のversionを持てます。archivedまたはanonymousのprofileはconflictで拒否します。",
        "operationId": "create-profile-version",
        "parameters": [
          {
            "description": "Identifier of an analysis profile in this workspace.\n\nこのワークスペースのanalysis profileの識別子です。",
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "example": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "answer_specs": [
                      {
                        "aggregation_level": "video",
                        "answer_key": "",
                        "answer_type": "timeline",
                        "coverage": "complete",
                        "evidence": {
                          "accepted_types": [
                            "clip"
                          ],
                          "per_field": true,
                          "required": true
                        },
                        "fields": [
                          {
                            "description": "",
                            "key": "",
                            "label": "",
                            "required": true,
                            "type": "string"
                          }
                        ],
                        "temporal_granularity": "semantic_segment",
                        "temporal_scope": "windowed"
                      }
                    ],
                    "instructions": ""
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/CreateAlphaProfileVersionDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "answer_specs": [
                        {
                          "aggregation_level": "video",
                          "answer_key": "",
                          "answer_type": "timeline",
                          "coverage": "complete",
                          "evidence": {
                            "accepted_types": [
                              "clip"
                            ],
                            "per_field": true,
                            "required": true
                          },
                          "fields": [
                            {
                              "description": "",
                              "key": "",
                              "label": "",
                              "required": true,
                              "type": "string"
                            }
                          ],
                          "temporal_granularity": "semantic_segment",
                          "temporal_scope": "windowed"
                        }
                      ],
                      "created_at": "2026-08-22T10:00:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "instructions": "",
                      "profile_id": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "version": 1
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaProfileVersionDto"
                }
              }
            },
            "description": "The created immutable profile version.\n\n作成したimmutableなprofile versionです。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Create a profile version\n\nプロファイルversionを作成",
        "tags": [
          "Profiles"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"instructions\": \"\",\n  \"answer_specs\": [\n    {\n      \"answer_key\": \"\",\n      \"answer_type\": \"timeline\",\n      \"temporal_scope\": \"windowed\",\n      \"temporal_granularity\": \"semantic_segment\",\n      \"aggregation_level\": \"video\",\n      \"coverage\": \"complete\",\n      \"fields\": [\n        {\n          \"key\": \"\",\n          \"label\": \"\",\n          \"type\": \"string\",\n          \"description\": \"\",\n          \"required\": true\n        }\n      ],\n      \"evidence\": {\n        \"required\": true,\n        \"per_field\": true,\n        \"accepted_types\": [\n          \"clip\"\n        ]\n      }\n    }\n  ]\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"create-profile-version-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"instructions\": \"\",\n      \"answer_specs\": [\n        {\n          \"answer_key\": \"\",\n          \"answer_type\": \"timeline\",\n          \"temporal_scope\": \"windowed\",\n          \"temporal_granularity\": \"semantic_segment\",\n          \"aggregation_level\": \"video\",\n          \"coverage\": \"complete\",\n          \"fields\": [\n            {\n              \"key\": \"\",\n              \"label\": \"\",\n              \"type\": \"string\",\n              \"description\": \"\",\n              \"required\": true\n            }\n          ],\n          \"evidence\": {\n            \"required\": true,\n            \"per_field\": true,\n            \"accepted_types\": [\n              \"clip\"\n            ]\n          }\n        }\n      ]\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"create-profile-version-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"instructions\": \"\",\n  \"answer_specs\": [\n    {\n      \"answer_key\": \"\",\n      \"answer_type\": \"timeline\",\n      \"temporal_scope\": \"windowed\",\n      \"temporal_granularity\": \"semantic_segment\",\n      \"aggregation_level\": \"video\",\n      \"coverage\": \"complete\",\n      \"fields\": [\n        {\n          \"key\": \"\",\n          \"label\": \"\",\n          \"type\": \"string\",\n          \"description\": \"\",\n          \"required\": true\n        }\n      ],\n      \"evidence\": {\n        \"required\": true,\n        \"per_field\": true,\n        \"accepted_types\": [\n          \"clip\"\n        ]\n      }\n    }\n  ]\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: create-profile-version-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'create-profile-version-01'\n\nrequest.body = <<~JSON\n  {\n    \"instructions\": \"\",\n    \"answer_specs\": [\n      {\n        \"answer_key\": \"\",\n        \"answer_type\": \"timeline\",\n        \"temporal_scope\": \"windowed\",\n        \"temporal_granularity\": \"semantic_segment\",\n        \"aggregation_level\": \"video\",\n        \"coverage\": \"complete\",\n        \"fields\": [\n          {\n            \"key\": \"\",\n            \"label\": \"\",\n            \"type\": \"string\",\n            \"description\": \"\",\n            \"required\": true\n          }\n        ],\n        \"evidence\": {\n          \"required\": true,\n          \"per_field\": true,\n          \"accepted_types\": [\n            \"clip\"\n          ]\n        }\n      }\n    ]\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/profiles/{profile_id}/versions/{version}": {
      "get": {
        "description": "Returns one immutable profile version. The version may be a positive integer or the literal `latest`.\n\noneのimmutableなprofile versionを返します。versionは正の整数または`latest`です。",
        "operationId": "get-profile-version",
        "parameters": [
          {
            "description": "Identifier of an analysis profile in this workspace.\n\nこのワークスペースのanalysis profileの識別子です。",
            "in": "path",
            "name": "profile_id",
            "required": true,
            "schema": {
              "example": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Positive immutable version number, or `latest` for the highest version.\n\nimmutableな正のversion番号、または最大versionを示す`latest`です。",
            "in": "path",
            "name": "version",
            "required": true,
            "schema": {
              "example": "latest",
              "examples": [
                "latest"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "answer_specs": [
                        {
                          "aggregation_level": "video",
                          "answer_key": "",
                          "answer_type": "timeline",
                          "coverage": "complete",
                          "evidence": {
                            "accepted_types": [
                              "clip"
                            ],
                            "per_field": true,
                            "required": true
                          },
                          "fields": [
                            {
                              "description": "",
                              "key": "",
                              "label": "",
                              "required": true,
                              "type": "string"
                            }
                          ],
                          "temporal_granularity": "semantic_segment",
                          "temporal_scope": "windowed"
                        }
                      ],
                      "created_at": "2026-08-22T10:00:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "instructions": "",
                      "profile_id": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "version": 1
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaProfileVersionDto"
                }
              }
            },
            "description": "The immutable profile version.\n\nimmutableなprofile versionです。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get a profile version\n\nプロファイルversionを取得",
        "tags": [
          "Profiles"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions/latest\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions/latest\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions/latest');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/profiles/prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions/latest')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/report-templates": {
      "get": {
        "description": "Returns active, named report templates in the workspace with cursor pagination.\n\nワークスペース内のactiveな名前付きreport templateをcursor paginationで返します。",
        "operationId": "list-report-templates",
        "parameters": [
          {
            "description": "Opaque cursor returned as next_cursor by the previous response. Pass it byte-for-byte as cursor; do not decode, edit, or construct it.\n\n前の応答のnext_cursorとして返されたopaqueなcursorです。decode、編集、組み立てをせず、そのままcursorとして渡してください。",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
              "examples": [
                "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of resources to return in one page. The default is 25 and the accepted range is 1-100.\n\n1ページで返すresource数です。既定値は25で、1から100まで指定できます。",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "example": 25,
              "examples": [
                25
              ],
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "data": [
                        {
                          "anonymous": false,
                          "created_at": "2026-08-22T10:00:00.000Z",
                          "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "description": "Reusable report presentation.",
                          "id": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "latest_version": 3,
                          "name": "Warehouse safety report",
                          "status": "active",
                          "updated_at": "2026-08-22T10:00:00.000Z",
                          "updated_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaReportTemplatePageDto"
                }
              }
            },
            "description": "Report templates returned in a cursor envelope.\n\ncursor envelopeでreport templateを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List report templates\n\nレポートテンプレートを一覧表示",
        "tags": [
          "Report Templates"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/report-templates\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/report-templates\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/report-templates');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/report-templates')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "post": {
        "description": "Creates a report-template head and immutable version 1.\n\nreport-template headとimmutableなversion 1を作成します。",
        "operationId": "create-report-template",
        "parameters": [
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "blocks": [
                      {
                        "answer_key": "",
                        "columns": [
                          {
                            "key": "",
                            "label": ""
                          }
                        ],
                        "field_labels": [
                          {
                            "key": "",
                            "label": ""
                          }
                        ],
                        "group_by": "",
                        "label": "",
                        "mapping": {},
                        "sort_by": "",
                        "sort_direction": "asc",
                        "type": "timeline"
                      }
                    ],
                    "description": "Reusable report presentation.",
                    "language": "ja",
                    "name": "Warehouse safety report"
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/CreateAlphaReportTemplateDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "anonymous": false,
                      "created_at": "2026-08-22T10:00:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "description": "Reusable report presentation.",
                      "id": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "latest_version": 3,
                      "name": "Warehouse safety report",
                      "status": "active",
                      "updated_at": "2026-08-22T10:00:00.000Z",
                      "updated_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaReportTemplateDto"
                }
              }
            },
            "description": "The created report template.\n\n作成したreport templateです。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Create a report template\n\nレポートテンプレートを作成",
        "tags": [
          "Report Templates"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"language\": \"ja\",\n  \"blocks\": [\n    {\n      \"type\": \"timeline\",\n      \"answer_key\": \"\",\n      \"label\": \"\",\n      \"field_labels\": [\n        {\n          \"key\": \"\",\n          \"label\": \"\"\n        }\n      ],\n      \"columns\": [\n        {\n          \"key\": \"\",\n          \"label\": \"\"\n        }\n      ],\n      \"group_by\": \"\",\n      \"sort_by\": \"\",\n      \"sort_direction\": \"asc\",\n      \"mapping\": {}\n    }\n  ],\n  \"name\": \"Warehouse safety report\",\n  \"description\": \"Reusable report presentation.\"\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/report-templates\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"create-report-template-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"language\": \"ja\",\n      \"blocks\": [\n        {\n          \"type\": \"timeline\",\n          \"answer_key\": \"\",\n          \"label\": \"\",\n          \"field_labels\": [\n            {\n              \"key\": \"\",\n              \"label\": \"\"\n            }\n          ],\n          \"columns\": [\n            {\n              \"key\": \"\",\n              \"label\": \"\"\n            }\n          ],\n          \"group_by\": \"\",\n          \"sort_by\": \"\",\n          \"sort_direction\": \"asc\",\n          \"mapping\": {}\n        }\n      ],\n      \"name\": \"Warehouse safety report\",\n      \"description\": \"Reusable report presentation.\"\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/report-templates\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"create-report-template-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"language\": \"ja\",\n  \"blocks\": [\n    {\n      \"type\": \"timeline\",\n      \"answer_key\": \"\",\n      \"label\": \"\",\n      \"field_labels\": [\n        {\n          \"key\": \"\",\n          \"label\": \"\"\n        }\n      ],\n      \"columns\": [\n        {\n          \"key\": \"\",\n          \"label\": \"\"\n        }\n      ],\n      \"group_by\": \"\",\n      \"sort_by\": \"\",\n      \"sort_direction\": \"asc\",\n      \"mapping\": {}\n    }\n  ],\n  \"name\": \"Warehouse safety report\",\n  \"description\": \"Reusable report presentation.\"\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/report-templates');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: create-report-template-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/report-templates')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'create-report-template-01'\n\nrequest.body = <<~JSON\n  {\n    \"language\": \"ja\",\n    \"blocks\": [\n      {\n        \"type\": \"timeline\",\n        \"answer_key\": \"\",\n        \"label\": \"\",\n        \"field_labels\": [\n          {\n            \"key\": \"\",\n            \"label\": \"\"\n          }\n        ],\n        \"columns\": [\n          {\n            \"key\": \"\",\n            \"label\": \"\"\n          }\n        ],\n        \"group_by\": \"\",\n        \"sort_by\": \"\",\n        \"sort_direction\": \"asc\",\n        \"mapping\": {}\n      }\n    ],\n    \"name\": \"Warehouse safety report\",\n    \"description\": \"Reusable report presentation.\"\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/report-templates/{report_template_id}": {
      "delete": {
        "description": "Archives the template instead of deleting it. The operation is idempotent and preserves every version.\n\ntemplateをdeleteせずarchiveします。この操作はidempotentで、すべてのversionを保持します。",
        "operationId": "archive-report-template",
        "parameters": [
          {
            "description": "Identifier of a report template in this workspace.\n\nこのワークスペースのreport templateの識別子です。",
            "in": "path",
            "name": "report_template_id",
            "required": true,
            "schema": {
              "example": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "The report template was archived. The response has no body.\n\nreport templateをarchiveしました。response bodyはありません。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Archive a report template\n\nレポートテンプレートをarchive",
        "tags": [
          "Report Templates"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"DELETE\", \"https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Delete.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "get": {
        "description": "Returns a report-template head, including its latest version and lifecycle state. Archived templates remain readable.\n\n最新versionとlifecycle stateを含むreport-template headを返します。archivedなtemplateも読み取れます。",
        "operationId": "get-report-template",
        "parameters": [
          {
            "description": "Identifier of a report template in this workspace.\n\nこのワークスペースのreport templateの識別子です。",
            "in": "path",
            "name": "report_template_id",
            "required": true,
            "schema": {
              "example": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "anonymous": false,
                      "created_at": "2026-08-22T10:00:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "description": "Reusable report presentation.",
                      "id": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "latest_version": 3,
                      "name": "Warehouse safety report",
                      "status": "active",
                      "updated_at": "2026-08-22T10:00:00.000Z",
                      "updated_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaReportTemplateDto"
                }
              }
            },
            "description": "The report-template head.\n\nreport-template headです。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get a report template\n\nレポートテンプレートを取得",
        "tags": [
          "Report Templates"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/report-templates/{report_template_id}/versions": {
      "get": {
        "description": "Returns every immutable version, including versions of archived templates.\n\narchivedなtemplateのversionを含め、すべてのimmutable versionを返します。",
        "operationId": "list-report-template-versions",
        "parameters": [
          {
            "description": "Identifier of a report template in this workspace.\n\nこのワークスペースのreport templateの識別子です。",
            "in": "path",
            "name": "report_template_id",
            "required": true,
            "schema": {
              "example": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "versions": {
                    "summary": "Immutable report-template versions",
                    "value": {
                      "data": [
                        {
                          "blocks": [
                            {
                              "answer_key": "timeline",
                              "field_labels": [
                                {
                                  "key": "activity",
                                  "label": "Activity"
                                }
                              ],
                              "label": "Timeline",
                              "type": "timeline"
                            }
                          ],
                          "created_at": "2026-08-22T10:00:00.000Z",
                          "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "language": "en",
                          "report_template_id": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "version": 1
                        }
                      ],
                      "has_more": false,
                      "next_cursor": null
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaReportTemplateVersionPageDto"
                }
              }
            },
            "description": "Report-template versions returned.\n\nreport-template versionを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List report-template versions\n\nレポートテンプレートversionを一覧表示",
        "tags": [
          "Report Templates"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "post": {
        "description": "Appends an immutable version. A report template can have at most 100 versions. Archived and anonymous templates reject new versions with a conflict.\n\nimmutableなversionを追加します。report templateは最大100個のversionを持てます。archivedまたはanonymousのtemplateはconflictで拒否します。",
        "operationId": "create-report-template-version",
        "parameters": [
          {
            "description": "Identifier of a report template in this workspace.\n\nこのワークスペースのreport templateの識別子です。",
            "in": "path",
            "name": "report_template_id",
            "required": true,
            "schema": {
              "example": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "blocks": [
                      {
                        "answer_key": "",
                        "columns": [
                          {
                            "key": "",
                            "label": ""
                          }
                        ],
                        "field_labels": [
                          {
                            "key": "",
                            "label": ""
                          }
                        ],
                        "group_by": "",
                        "label": "",
                        "mapping": {},
                        "sort_by": "",
                        "sort_direction": "asc",
                        "type": "timeline"
                      }
                    ],
                    "language": "ja"
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/CreateAlphaReportTemplateVersionDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "blocks": [
                        {
                          "answer_key": "",
                          "columns": [
                            {
                              "key": "",
                              "label": ""
                            }
                          ],
                          "field_labels": [
                            {
                              "key": "",
                              "label": ""
                            }
                          ],
                          "group_by": "",
                          "label": "",
                          "mapping": {},
                          "sort_by": "",
                          "sort_direction": "asc",
                          "type": "timeline"
                        }
                      ],
                      "created_at": "2026-08-22T10:00:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "language": "ja",
                      "report_template_id": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "version": 1
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaReportTemplateVersionDto"
                }
              }
            },
            "description": "The created immutable report-template version.\n\n作成したimmutableなreport-template versionです。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Create a report-template version\n\nレポートテンプレートversionを作成",
        "tags": [
          "Report Templates"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"language\": \"ja\",\n  \"blocks\": [\n    {\n      \"type\": \"timeline\",\n      \"answer_key\": \"\",\n      \"label\": \"\",\n      \"field_labels\": [\n        {\n          \"key\": \"\",\n          \"label\": \"\"\n        }\n      ],\n      \"columns\": [\n        {\n          \"key\": \"\",\n          \"label\": \"\"\n        }\n      ],\n      \"group_by\": \"\",\n      \"sort_by\": \"\",\n      \"sort_direction\": \"asc\",\n      \"mapping\": {}\n    }\n  ]\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"create-report-template-version-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"language\": \"ja\",\n      \"blocks\": [\n        {\n          \"type\": \"timeline\",\n          \"answer_key\": \"\",\n          \"label\": \"\",\n          \"field_labels\": [\n            {\n              \"key\": \"\",\n              \"label\": \"\"\n            }\n          ],\n          \"columns\": [\n            {\n              \"key\": \"\",\n              \"label\": \"\"\n            }\n          ],\n          \"group_by\": \"\",\n          \"sort_by\": \"\",\n          \"sort_direction\": \"asc\",\n          \"mapping\": {}\n        }\n      ]\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"create-report-template-version-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"language\": \"ja\",\n  \"blocks\": [\n    {\n      \"type\": \"timeline\",\n      \"answer_key\": \"\",\n      \"label\": \"\",\n      \"field_labels\": [\n        {\n          \"key\": \"\",\n          \"label\": \"\"\n        }\n      ],\n      \"columns\": [\n        {\n          \"key\": \"\",\n          \"label\": \"\"\n        }\n      ],\n      \"group_by\": \"\",\n      \"sort_by\": \"\",\n      \"sort_direction\": \"asc\",\n      \"mapping\": {}\n    }\n  ]\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: create-report-template-version-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'create-report-template-version-01'\n\nrequest.body = <<~JSON\n  {\n    \"language\": \"ja\",\n    \"blocks\": [\n      {\n        \"type\": \"timeline\",\n        \"answer_key\": \"\",\n        \"label\": \"\",\n        \"field_labels\": [\n          {\n            \"key\": \"\",\n            \"label\": \"\"\n          }\n        ],\n        \"columns\": [\n          {\n            \"key\": \"\",\n            \"label\": \"\"\n          }\n        ],\n        \"group_by\": \"\",\n        \"sort_by\": \"\",\n        \"sort_direction\": \"asc\",\n        \"mapping\": {}\n      }\n    ]\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/report-templates/{report_template_id}/versions/{version}": {
      "get": {
        "description": "Returns one immutable version. The version may be a positive integer or the literal `latest`.\n\noneのimmutableなreport-template versionを返します。versionは正の整数または`latest`です。",
        "operationId": "get-report-template-version",
        "parameters": [
          {
            "description": "Identifier of a report template in this workspace.\n\nこのワークスペースのreport templateの識別子です。",
            "in": "path",
            "name": "report_template_id",
            "required": true,
            "schema": {
              "example": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Positive immutable version number, or `latest` for the highest version.\n\nimmutableな正のversion番号、または最大versionを示す`latest`です。",
            "in": "path",
            "name": "version",
            "required": true,
            "schema": {
              "example": "latest",
              "examples": [
                "latest"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "blocks": [
                        {
                          "answer_key": "",
                          "columns": [
                            {
                              "key": "",
                              "label": ""
                            }
                          ],
                          "field_labels": [
                            {
                              "key": "",
                              "label": ""
                            }
                          ],
                          "group_by": "",
                          "label": "",
                          "mapping": {},
                          "sort_by": "",
                          "sort_direction": "asc",
                          "type": "timeline"
                        }
                      ],
                      "created_at": "2026-08-22T10:00:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "language": "ja",
                      "report_template_id": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "version": 1
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaReportTemplateVersionDto"
                }
              }
            },
            "description": "The immutable report-template version.\n\nimmutableなreport-template versionです。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get a report-template version\n\nレポートテンプレートversionを取得",
        "tags": [
          "Report Templates"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions/latest\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions/latest\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions/latest');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/report-templates/tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/versions/latest')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/reports": {
      "get": {
        "description": "Returns the immutable reports that belong to an analysis run.",
        "operationId": "list-reports",
        "parameters": [
          {
            "description": "Opaque cursor returned as next_cursor by the previous page.",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
              "examples": [
                "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of reports to return. The default is 25 and the maximum is 100.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "example": 25,
              "examples": [
                25
              ],
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "description": "Analysis-run identifier whose reports are returned.",
            "in": "query",
            "name": "run_id",
            "required": true,
            "schema": {
              "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional related data to include:\n- events: timeline event details.\n- events.evidence: evidence attached to each timeline event.\n- evidence: answer evidence details.\n- provenance: curated provenance details.\n- snapshots: stored profile, input, and output snapshot references.\n- content: rendered report content.\n- manifest: report trust bindings and evidence URLs.\nExpand depth is limited to two path segments.\nFor this endpoint, use content or manifest.",
            "in": "query",
            "name": "expand[]",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "content",
                  "manifest"
                ],
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "jsonAndMarkdown": {
                    "summary": "JSON and Markdown artifacts",
                    "value": {
                      "data": [
                        {
                          "analysis_profile_ref": "snap_profile-snapshot-example",
                          "content_identity": "snap_report-content-example",
                          "content_ref": "artifact://rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/content",
                          "content_type": "application/json",
                          "created_at": "2026-08-21T09:04:31.000Z",
                          "format": "json",
                          "id": "rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "output_identity": "snap_output-snapshot-example",
                          "report_template_ref": "procedure-report-ja@1",
                          "request_id": "0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "updated_at": "2026-08-21T09:04:31.000Z"
                        },
                        {
                          "analysis_profile_ref": "snap_profile-snapshot-example",
                          "content_identity": "snap_report-content-example",
                          "content_ref": "artifact://rep_0190b5d4-markdown/content",
                          "content_type": "text/markdown",
                          "created_at": "2026-08-21T09:04:31.000Z",
                          "format": "markdown",
                          "id": "rep_0190b5d4-markdown",
                          "output_identity": "snap_output-snapshot-example",
                          "report_template_ref": "procedure-report-ja@1",
                          "request_id": "0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "updated_at": "2026-08-21T09:04:31.000Z"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": null
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AnalysisReportArtifactPageDto"
                }
              }
            },
            "description": "",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List reports",
        "tags": [
          "Reports"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/reports?run_id=run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/reports?run_id=run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/reports?run_id=run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/reports?run_id=run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/reports/{report_id}": {
      "get": {
        "description": "Returns one immutable report by identifier.",
        "operationId": "get-report",
        "parameters": [
          {
            "description": "Identifier of a report, as returned in `data[].id` by GET /api/v1alpha1/reports.\n\nreportの識別子です。GET /api/v1alpha1/reportsの `data[].id` で返ります。",
            "in": "path",
            "name": "report_id",
            "required": true,
            "schema": {
              "example": "rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional related data to include:\n- events: timeline event details.\n- events.evidence: evidence attached to each timeline event.\n- evidence: answer evidence details.\n- provenance: curated provenance details.\n- snapshots: stored profile, input, and output snapshot references.\n- content: rendered report content.\n- manifest: report trust bindings and evidence URLs.\nExpand depth is limited to two path segments.\nFor this endpoint, use content or manifest.",
            "in": "query",
            "name": "expand[]",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "content",
                  "manifest"
                ],
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "json": {
                    "summary": "Rendered JSON artifact",
                    "value": {
                      "analysis_profile_ref": "snap_profile-snapshot-example",
                      "content_identity": "snap_report-content-example",
                      "content_ref": "artifact://rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/content",
                      "content_type": "application/json",
                      "created_at": "2026-08-21T09:04:31.000Z",
                      "format": "json",
                      "id": "rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "output_identity": "snap_output-snapshot-example",
                      "report_template_ref": "procedure-report-ja@1",
                      "request_id": "0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "updated_at": "2026-08-21T09:04:31.000Z"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AnalysisReportArtifactDto"
                }
              }
            },
            "description": "",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Read one report",
        "tags": [
          "Reports"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/reports/rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/reports/rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/reports/rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/reports/rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/rulebooks": {
      "get": {
        "description": "Returns the rulebooks you can use, most recently updated first.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_RULEBOOKS` permission.\n- **Contents:** the rulebooks this key owns in the workspace, plus the shared templates anyone can start from.\n- **Paging:** `limit` defaults to 25, maximum 100. Pass `next_cursor` back unchanged as `cursor`.\n\n`canEdit` and `canDelete` on each row tell you which ones you may change. Templates are always read-only.\n\n利用できるrulebookを、更新が新しい順に返します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_RULEBOOKS`権限。\n- **内容:** このkeyがワークスペース内で所有するrulebookと、誰でも利用できる共有テンプレート。\n- **ページング:** `limit`の既定値は25、最大は100。`next_cursor`をそのまま`cursor`として渡します。\n\n各行の`canEdit`と`canDelete`が変更可否を示します。テンプレートは常に読み取り専用です。",
        "operationId": "list-rulebooks",
        "parameters": [
          {
            "description": "Opaque cursor returned as next_cursor by the previous response. Pass it byte-for-byte as cursor; do not decode, edit, or construct it.\n\n前の応答のnext_cursorとして返されたopaqueなcursorです。decode、編集、組み立てをせず、そのままcursorとして渡してください。",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
              "examples": [
                "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of resources to return in one page. The default is 25 and the accepted range is 1-100.\n\n1ページで返すresource数です。既定値は25で、1から100まで指定できます。",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "example": 25,
              "examples": [
                25
              ],
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "data": [
                        {
                          "can_delete": true,
                          "can_edit": true,
                          "content": "Inspect every emergency exit.",
                          "created_at": "2026-08-10T10:05:00.000Z",
                          "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "has_active_workflow_run": false,
                          "id": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "is_template": false,
                          "name": "Warehouse Safety",
                          "owner_id": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "rules": [
                            {
                              "description": "The exit remains unobstructed.",
                              "id": "SEC-04",
                              "title": "Emergency exit is clear.",
                              "version": 2
                            }
                          ],
                          "template_key": "template_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "updated_at": "2026-08-10T10:06:00.000Z",
                          "updated_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaRulebookPageDto"
                }
              }
            },
            "description": "Rulebooks returned in a cursor envelope.\n\nrulebookをcursor envelopeで返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List rulebooks\n\nrulebookを一覧表示",
        "tags": [
          "Rulebooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/rulebooks\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/rulebooks\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/rulebooks');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/rulebooks')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "post": {
        "description": "Creates a rulebook: the set of rules a run checks a video against. It belongs to the API key that created it.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_RULEBOOKS` permission.\n- **Retries:** an optional `Idempotency-Key` makes a repeated call safe.\n\nBind it to a workflow with `POST /api/v1alpha1/workflows`, then start a run on that workflow.\n\nrulebookを作成します。rulebookは、runが動画を照合するruleの集合で、作成したAPI keyに属します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_RULEBOOKS`権限。\n- **再試行:** 任意の`Idempotency-Key`により、再送を安全に扱えます。\n\n`POST /api/v1alpha1/workflows`でworkflowに紐付けたうえで、そのworkflowでrunを開始してください。",
        "operationId": "create-rulebook",
        "parameters": [
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "content": "Inspect every emergency exit.",
                    "name": "Warehouse Safety",
                    "rules": [
                      {
                        "description": "The exit remains unobstructed.",
                        "id": "SEC-04",
                        "title": "Emergency exit is clear."
                      }
                    ]
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/CreateAlphaRulebookDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "can_delete": true,
                      "can_edit": true,
                      "content": "Inspect every emergency exit.",
                      "created_at": "2026-08-10T10:05:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "has_active_workflow_run": false,
                      "id": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "is_template": false,
                      "name": "Warehouse Safety",
                      "owner_id": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "rules": [
                        {
                          "description": "The exit remains unobstructed.",
                          "id": "SEC-04",
                          "title": "Emergency exit is clear.",
                          "version": 2
                        }
                      ],
                      "template_key": "template_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "updated_at": "2026-08-10T10:06:00.000Z",
                      "updated_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaRulebookDto"
                }
              }
            },
            "description": "The created rulebook.\n\n作成されたrulebookです。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Create a rulebook\n\nrulebookを作成",
        "tags": [
          "Rulebooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"name\": \"Warehouse Safety\",\n  \"content\": \"Inspect every emergency exit.\",\n  \"rules\": [\n    {\n      \"id\": \"SEC-04\",\n      \"title\": \"Emergency exit is clear.\",\n      \"description\": \"The exit remains unobstructed.\"\n    }\n  ]\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/rulebooks\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"create-rulebook-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"name\": \"Warehouse Safety\",\n      \"content\": \"Inspect every emergency exit.\",\n      \"rules\": [\n        {\n          \"id\": \"SEC-04\",\n          \"title\": \"Emergency exit is clear.\",\n          \"description\": \"The exit remains unobstructed.\"\n        }\n      ]\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/rulebooks\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"create-rulebook-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"name\": \"Warehouse Safety\",\n  \"content\": \"Inspect every emergency exit.\",\n  \"rules\": [\n    {\n      \"id\": \"SEC-04\",\n      \"title\": \"Emergency exit is clear.\",\n      \"description\": \"The exit remains unobstructed.\"\n    }\n  ]\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/rulebooks');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: create-rulebook-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/rulebooks')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'create-rulebook-01'\n\nrequest.body = <<~JSON\n  {\n    \"name\": \"Warehouse Safety\",\n    \"content\": \"Inspect every emergency exit.\",\n    \"rules\": [\n      {\n        \"id\": \"SEC-04\",\n        \"title\": \"Emergency exit is clear.\",\n        \"description\": \"The exit remains unobstructed.\"\n      }\n    ]\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/rulebooks/csv-imports": {
      "post": {
        "description": "Creates the rulebooks from a preview you have already checked. This is the step that writes.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_RULEBOOKS` permission.\n- **Send:** the `sessionId` from `POST /api/v1alpha1/rulebooks/csv-imports/preview`, before it expires.\n- **Returns:** how many rulebooks were created, and each one in full.\n- **Retries:** an optional `Idempotency-Key` stops a repeated call from importing twice.\n\n確認済みのpreviewからrulebookを作成します。書き込みを行うのはこの呼び出しです。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_RULEBOOKS`権限。\n- **送信する内容:** `POST /api/v1alpha1/rulebooks/csv-imports/preview`で得た`sessionId`を、期限内に指定します。\n- **返る内容:** 作成されたrulebookの件数と、その内容。\n- **再試行:** 任意の`Idempotency-Key`により、再送による二重の取り込みを防げます。",
        "operationId": "confirm-rulebook-csv-import",
        "parameters": [
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "default_rulebook_name": "Imported Safety Rules",
                    "mapping": {
                      "additional_description_columns": [
                        "Notes"
                      ],
                      "rule_description": "Details",
                      "rule_id": "Rule ID",
                      "rule_title": "Requirement",
                      "rulebook_name": "Section"
                    },
                    "session_id": "rbi_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/ConfirmAlphaRulebookCsvImportDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "created_count": 2,
                      "rulebooks": [
                        {
                          "can_delete": true,
                          "can_edit": true,
                          "content": "Inspect every emergency exit.",
                          "created_at": "2026-08-10T10:05:00.000Z",
                          "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "has_active_workflow_run": false,
                          "id": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "is_template": false,
                          "name": "Warehouse Safety",
                          "owner_id": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "rules": [
                            {
                              "description": "The exit remains unobstructed.",
                              "id": "SEC-04",
                              "title": "Emergency exit is clear.",
                              "version": 2
                            }
                          ],
                          "template_key": "template_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "updated_at": "2026-08-10T10:06:00.000Z",
                          "updated_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                        }
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaRulebookCsvImportResultDto"
                }
              }
            },
            "description": "Rulebooks created from the preview.\n\npreviewから作成されたrulebookです。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Confirm a rulebook CSV import\n\nrulebookのCSV取り込みを確定",
        "tags": [
          "Rulebooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"session_id\": \"rbi_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n  \"default_rulebook_name\": \"Imported Safety Rules\",\n  \"mapping\": {\n    \"rulebook_name\": \"Section\",\n    \"rule_title\": \"Requirement\",\n    \"rule_description\": \"Details\",\n    \"additional_description_columns\": [\n      \"Notes\"\n    ],\n    \"rule_id\": \"Rule ID\"\n  }\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/rulebooks/csv-imports\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"confirm-rulebook-csv-import-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"session_id\": \"rbi_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n      \"default_rulebook_name\": \"Imported Safety Rules\",\n      \"mapping\": {\n        \"rulebook_name\": \"Section\",\n        \"rule_title\": \"Requirement\",\n        \"rule_description\": \"Details\",\n        \"additional_description_columns\": [\n          \"Notes\"\n        ],\n        \"rule_id\": \"Rule ID\"\n      }\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/rulebooks/csv-imports\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"confirm-rulebook-csv-import-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"session_id\": \"rbi_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n  \"default_rulebook_name\": \"Imported Safety Rules\",\n  \"mapping\": {\n    \"rulebook_name\": \"Section\",\n    \"rule_title\": \"Requirement\",\n    \"rule_description\": \"Details\",\n    \"additional_description_columns\": [\n      \"Notes\"\n    ],\n    \"rule_id\": \"Rule ID\"\n  }\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/rulebooks/csv-imports');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: confirm-rulebook-csv-import-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/rulebooks/csv-imports')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'confirm-rulebook-csv-import-01'\n\nrequest.body = <<~JSON\n  {\n    \"session_id\": \"rbi_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n    \"default_rulebook_name\": \"Imported Safety Rules\",\n    \"mapping\": {\n      \"rulebook_name\": \"Section\",\n      \"rule_title\": \"Requirement\",\n      \"rule_description\": \"Details\",\n      \"additional_description_columns\": [\n        \"Notes\"\n      ],\n      \"rule_id\": \"Rule ID\"\n    }\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/rulebooks/csv-imports/preview": {
      "post": {
        "description": "Reads a CSV of rules and returns what would be imported. Nothing is created by this call.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_RULEBOOKS` permission.\n- **Returns:** a `sessionId`, the column mapping that was detected, per-column statistics, any warnings, and the rulebooks that would be created.\n- **Deadline:** the preview stops being usable at `expiresAt`.\n\nCheck the mapping and the warnings, then pass the `sessionId` to `POST /api/v1alpha1/rulebooks/csv-imports` to create the rulebooks.\n\nruleを記載したCSVを読み取り、取り込まれる内容を返します。この呼び出しでは何も作成されません。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_RULEBOOKS`権限。\n- **返る内容:** `sessionId`、検出された列のマッピング、列ごとの統計、警告、作成予定のrulebook。\n- **期限:** previewは`expiresAt`を過ぎると使えなくなります。\n\nマッピングと警告を確認し、`sessionId`を`POST /api/v1alpha1/rulebooks/csv-imports`に渡すとrulebookが作成されます。",
        "operationId": "preview-rulebook-csv-import",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "csv_text": "Rule ID,Requirement\nR1,Exit is clear",
                    "default_rulebook_name": "Imported Safety Rules",
                    "filename": "warehouse-rules.csv",
                    "mapping": {
                      "additional_description_columns": [
                        "Notes"
                      ],
                      "rule_description": "Details",
                      "rule_id": "Rule ID",
                      "rule_title": "Requirement",
                      "rulebook_name": "Section"
                    }
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/PreviewAlphaRulebookCsvImportDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "column_stats": [
                        {
                          "name": "Requirement",
                          "non_empty_count": 10,
                          "samples": [
                            "Exit is clear."
                          ],
                          "unique_count": 8
                        }
                      ],
                      "expires_at": "2026-08-10T11:05:00.000Z",
                      "filename": "warehouse-rules.csv",
                      "mapping": {
                        "additional_description_columns": [],
                        "rule_description": "Details",
                        "rule_id": "Rule ID",
                        "rule_title": "Requirement",
                        "rulebook_name": "Section"
                      },
                      "mapping_confidence": 0.95,
                      "mapping_source": "heuristic",
                      "row_count": 10,
                      "rulebook_count": 2,
                      "rulebooks": [
                        {
                          "name": "Warehouse Safety",
                          "rule_count": 10,
                          "rules": [
                            {
                              "description": "The exit remains unobstructed.",
                              "id": "R1",
                              "source_row_number": 2,
                              "title": "Emergency exit is clear."
                            }
                          ]
                        }
                      ],
                      "session_id": "rbi_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "skipped_row_count": 1,
                      "total_rule_count": 10,
                      "warnings": []
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaRulebookCsvPreviewDto"
                }
              }
            },
            "description": "Preview of what the CSV would import.\n\nCSVから取り込まれる内容のpreviewです。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Preview a rulebook CSV import\n\nrulebookのCSV取り込みをpreview",
        "tags": [
          "Rulebooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"filename\": \"warehouse-rules.csv\",\n  \"csv_text\": \"Rule ID,Requirement\\nR1,Exit is clear\",\n  \"default_rulebook_name\": \"Imported Safety Rules\",\n  \"mapping\": {\n    \"rulebook_name\": \"Section\",\n    \"rule_title\": \"Requirement\",\n    \"rule_description\": \"Details\",\n    \"additional_description_columns\": [\n      \"Notes\"\n    ],\n    \"rule_id\": \"Rule ID\"\n  }\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/rulebooks/csv-imports/preview\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"filename\": \"warehouse-rules.csv\",\n      \"csv_text\": \"Rule ID,Requirement\\nR1,Exit is clear\",\n      \"default_rulebook_name\": \"Imported Safety Rules\",\n      \"mapping\": {\n        \"rulebook_name\": \"Section\",\n        \"rule_title\": \"Requirement\",\n        \"rule_description\": \"Details\",\n        \"additional_description_columns\": [\n          \"Notes\"\n        ],\n        \"rule_id\": \"Rule ID\"\n      }\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/rulebooks/csv-imports/preview\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"filename\": \"warehouse-rules.csv\",\n  \"csv_text\": \"Rule ID,Requirement\\nR1,Exit is clear\",\n  \"default_rulebook_name\": \"Imported Safety Rules\",\n  \"mapping\": {\n    \"rulebook_name\": \"Section\",\n    \"rule_title\": \"Requirement\",\n    \"rule_description\": \"Details\",\n    \"additional_description_columns\": [\n      \"Notes\"\n    ],\n    \"rule_id\": \"Rule ID\"\n  }\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/rulebooks/csv-imports/preview');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/rulebooks/csv-imports/preview')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\n\nrequest.body = <<~JSON\n  {\n    \"filename\": \"warehouse-rules.csv\",\n    \"csv_text\": \"Rule ID,Requirement\\nR1,Exit is clear\",\n    \"default_rulebook_name\": \"Imported Safety Rules\",\n    \"mapping\": {\n      \"rulebook_name\": \"Section\",\n      \"rule_title\": \"Requirement\",\n      \"rule_description\": \"Details\",\n      \"additional_description_columns\": [\n        \"Notes\"\n      ],\n      \"rule_id\": \"Rule ID\"\n    }\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/rulebooks/{rulebook_id}": {
      "delete": {
        "description": "Deletes a rulebook this API key owns.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_RULEBOOKS` permission.\n- **Templates:** shared templates are read-only and answer 403.\n- **Not found:** a rulebook belonging to somebody else is deliberately indistinguishable from one that does not exist.\n\nCall `GET /api/v1alpha1/rulebooks/{rulebook_id}/usage` first to see how many workflows and findings still reference it.\n\nこのAPI keyが所有するrulebookを削除します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_RULEBOOKS`権限。\n- **テンプレート:** 共有テンプレートは読み取り専用で、403を返します。\n- **見つからない場合:** 他者が所有するrulebookは、存在しない場合と意図的に区別できません。\n\n削除前に`GET /api/v1alpha1/rulebooks/{rulebook_id}/usage`を呼び、参照しているworkflowとfindingの件数を確認してください。",
        "operationId": "delete-rulebook",
        "parameters": [
          {
            "description": "Identifier of a rulebook your key can read.\n\nこのkeyが読み取れるrulebookの識別子です。",
            "in": "path",
            "name": "rulebook_id",
            "required": true,
            "schema": {
              "example": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Rulebook deleted; the response has no body.\n\nrulebookを削除しました。応答bodyはありません。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Delete a rulebook\n\nrulebookを削除",
        "tags": [
          "Rulebooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"DELETE\", \"https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Delete.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "get": {
        "description": "Returns one rulebook with all of its rules.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_RULEBOOKS` permission.\n- **Reach:** a rulebook this key owns, or a shared template.\n- **Not found:** a rulebook belonging to somebody else is deliberately indistinguishable from one that does not exist.\n\n1件のrulebookを、そのすべてのruleとあわせて返します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_RULEBOOKS`権限。\n- **対象:** このkeyが所有するrulebook、または共有テンプレート。\n- **見つからない場合:** 他者が所有するrulebookは、存在しない場合と意図的に区別できません。",
        "operationId": "get-rulebook",
        "parameters": [
          {
            "description": "Identifier of a rulebook your key can read.\n\nこのkeyが読み取れるrulebookの識別子です。",
            "in": "path",
            "name": "rulebook_id",
            "required": true,
            "schema": {
              "example": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "can_delete": true,
                      "can_edit": true,
                      "content": "Inspect every emergency exit.",
                      "created_at": "2026-08-10T10:05:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "has_active_workflow_run": false,
                      "id": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "is_template": false,
                      "name": "Warehouse Safety",
                      "owner_id": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "rules": [
                        {
                          "description": "The exit remains unobstructed.",
                          "id": "SEC-04",
                          "title": "Emergency exit is clear.",
                          "version": 2
                        }
                      ],
                      "template_key": "template_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "updated_at": "2026-08-10T10:06:00.000Z",
                      "updated_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaRulebookDto"
                }
              }
            },
            "description": "The rulebook with its rules.\n\nruleを含むrulebookです。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get a rulebook\n\nrulebookを取得",
        "tags": [
          "Rulebooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "patch": {
        "description": "Changes a rulebook this API key owns.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_RULEBOOKS` permission.\n- **Templates:** shared templates are read-only and answer 403. Create your own rulebook from one instead of editing it.\n- **Not found:** a rulebook belonging to somebody else is deliberately indistinguishable from one that does not exist.\n\nこのAPI keyが所有するrulebookを変更します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_RULEBOOKS`権限。\n- **テンプレート:** 共有テンプレートは読み取り専用で、403を返します。編集ではなく、自身のrulebookとして作成してください。\n- **見つからない場合:** 他者が所有するrulebookは、存在しない場合と意図的に区別できません。",
        "operationId": "update-rulebook",
        "parameters": [
          {
            "description": "Identifier of a rulebook your key can read.\n\nこのkeyが読み取れるrulebookの識別子です。",
            "in": "path",
            "name": "rulebook_id",
            "required": true,
            "schema": {
              "example": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "content": "Inspect all exits.",
                    "name": "Updated Warehouse Safety",
                    "rules": [
                      {
                        "description": "The exit remains unobstructed.",
                        "id": "SEC-04",
                        "title": "Emergency exit is clear."
                      }
                    ]
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/UpdateAlphaRulebookDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "can_delete": true,
                      "can_edit": true,
                      "content": "Inspect every emergency exit.",
                      "created_at": "2026-08-10T10:05:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "has_active_workflow_run": false,
                      "id": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "is_template": false,
                      "name": "Warehouse Safety",
                      "owner_id": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "rules": [
                        {
                          "description": "The exit remains unobstructed.",
                          "id": "SEC-04",
                          "title": "Emergency exit is clear.",
                          "version": 2
                        }
                      ],
                      "template_key": "template_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "updated_at": "2026-08-10T10:06:00.000Z",
                      "updated_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaRulebookDto"
                }
              }
            },
            "description": "The updated rulebook.\n\n更新後のrulebookです。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Update a rulebook\n\nrulebookを更新",
        "tags": [
          "Rulebooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"name\": \"Updated Warehouse Safety\",\n  \"content\": \"Inspect all exits.\",\n  \"rules\": [\n    {\n      \"id\": \"SEC-04\",\n      \"title\": \"Emergency exit is clear.\",\n      \"description\": \"The exit remains unobstructed.\"\n    }\n  ]\n}`\n\n\treq, err := http.NewRequest(\"PATCH\", \"https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"name\": \"Updated Warehouse Safety\",\n      \"content\": \"Inspect all exits.\",\n      \"rules\": [\n        {\n          \"id\": \"SEC-04\",\n          \"title\": \"Emergency exit is clear.\",\n          \"description\": \"The exit remains unobstructed.\"\n        }\n      ]\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"name\": \"Updated Warehouse Safety\",\n  \"content\": \"Inspect all exits.\",\n  \"rules\": [\n    {\n      \"id\": \"SEC-04\",\n      \"title\": \"Emergency exit is clear.\",\n      \"description\": \"The exit remains unobstructed.\"\n    }\n  ]\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Patch.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\n\nrequest.body = <<~JSON\n  {\n    \"name\": \"Updated Warehouse Safety\",\n    \"content\": \"Inspect all exits.\",\n    \"rules\": [\n      {\n        \"id\": \"SEC-04\",\n        \"title\": \"Emergency exit is clear.\",\n        \"description\": \"The exit remains unobstructed.\"\n      }\n    ]\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/rulebooks/{rulebook_id}/usage": {
      "get": {
        "description": "Reports what depends on one rulebook, so you can see the effect of changing or deleting it.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_RULEBOOKS` permission.\n- **Returns:** `workflowCount`, `findingsTotal`, the projects involved, and `hasActiveWorkflowRun`.\n- **Scope:** the counts cover your own work only. A colleague's runs against the same shared template are not included.\n\n1件のrulebookに依存しているものを返します。変更や削除の影響を判断できます。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_RULEBOOKS`権限。\n- **返る内容:** `workflowCount`、`findingsTotal`、関係するproject、`hasActiveWorkflowRun`。\n- **範囲:** 集計は自身の利用分のみです。同じ共有テンプレートに対する他者のrunは含まれません。",
        "operationId": "get-rulebook-usage",
        "parameters": [
          {
            "description": "Identifier of a rulebook your key can read.\n\nこのkeyが読み取れるrulebookの識別子です。",
            "in": "path",
            "name": "rulebook_id",
            "required": true,
            "schema": {
              "example": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "findings_total": 3,
                      "has_active_workflow_run": false,
                      "projects": [
                        {
                          "finding_count": 3,
                          "name": "warehouse-shift-01.mp4",
                          "source_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                        }
                      ],
                      "rulebook_id": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "workflow_count": 1
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaRulebookUsageDto"
                }
              }
            },
            "description": "What currently depends on the rulebook.\n\n現在このrulebookに依存しているものです。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get rulebook usage\n\nrulebookの利用状況を取得",
        "tags": [
          "Rulebooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/usage\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/usage\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/usage');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/rulebooks/rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/usage')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/runs": {
      "get": {
        "description": "Returns workspace analysis runs, newest first.\n\n- **Access:** an alpha-enabled API key with the `VIEW_INSIGHTS` permission.\n- **Filters:** `video_id`, `status`.\n- **Paging:** `limit` defaults to 25, maximum 100. Pass `next_cursor` unchanged as `cursor`.\n\nUse a run identifier from this list with `GET /api/v1alpha1/runs/{run_id}`, or use it with `GET /api/v1alpha1/findings?run_id={run_id}`.\n\nワークスペースの分析ラン（Run）を新しい順に返します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`VIEW_INSIGHTS`権限。\n- **フィルター:** `video_id`、`status`。\n- **ページング:** `limit`の既定値は25、最大は100。`next_cursor`をそのまま`cursor`として渡します。\n\nこの一覧のrun識別子を`GET /api/v1alpha1/runs/{run_id}`または`GET /api/v1alpha1/findings?run_id={run_id}`で使ってください。",
        "operationId": "list-runs",
        "parameters": [
          {
            "description": "Opaque cursor returned as next_cursor by the previous response. Pass it byte-for-byte as cursor; do not decode, edit, or construct it.\n\n前の応答のnext_cursorとして返されたopaqueなcursorです。decode、編集、組み立てをせず、そのままcursorとして渡してください。",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
              "examples": [
                "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of resources to return in one page. The default is 25 and the accepted range is 1-100.\n\n1ページで返すresource数です。既定値は25で、1から100まで指定できます。",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "example": 25,
              "examples": [
                25
              ],
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "description": "Return only runs whose stored source snapshot contains this video identifier.\n\n保存されたsource snapshotにこの動画識別子を含むrunだけを返します。",
            "in": "query",
            "name": "video_id",
            "required": false,
            "schema": {
              "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Coarse processing status for a run:\n- queued: accepted and waiting to start.\n- processing: work is in progress.\n- completed: processing finished and the result can be read.\n- failed: processing ended without a usable result.\n- canceled: processing was stopped before completion.\nUse this field to filter analysis runs by status.",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "queued",
                "processing",
                "completed",
                "failed",
                "canceled"
              ],
              "example": "processing",
              "examples": [
                "processing"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "data": [
                        {
                          "created_at": "2026-08-08T10:00:00.000Z",
                          "id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "kind": "workflow",
                          "status": "processing",
                          "updated_at": "2026-08-08T10:07:30.000Z",
                          "workflow": {
                            "workflow_id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                          }
                        }
                      ],
                      "has_more": false,
                      "next_cursor": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaRunPageDto"
                }
              }
            },
            "description": "Runs returned in a cursor envelope.\n\n分析ランをcursor envelopeで返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List runs\n\n分析ランを一覧表示",
        "tags": [
          "Runs"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/runs\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/runs\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/runs');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/runs')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "post": {
        "description": "Starts a run on an existing workflow or starts an analysis. The 202 response confirms acceptance, not completion.\n\n- **Access:** an alpha-enabled API key with the `RUN_WORKFLOWS` permission. Workflow requests use a visible `workflow_id`. Analysis requests use completed, searchable `source_ids` visible to the workspace.\n- **Analysis input:** send stored `profile_id` and stored `report_template_id`, plus `formats` and `execution_profile_ref`. You can pin each resource with its immutable version; when a version is omitted, the server resolves `latest` and records the resolved version in the run snapshot for reproducibility. Inline profiles and templates are not accepted on this endpoint. Use the rerender/report endpoint for a new presentation view.\n- **Workflow option:** `source_snapshot` is an immutable object containing the selected video identifiers.\n- **Retries:** send an `Idempotency-Key`. Reusing it with a different body returns 422.\n\nPoll `GET /api/v1alpha1/runs/{run_id}` until the run finishes. Read analysis answers with `GET /api/v1alpha1/runs/{run_id}/answers` or workflow findings with `GET /api/v1alpha1/findings?run_id={run_id}`.\n\n既存workflowのrunまたはanalysisを開始します。202応答は受付を示し、処理完了を示しません。\n\n- **アクセス:** alphaを有効にしたAPI keyと`RUN_WORKFLOWS`権限が必要です。workflow requestでは`workflow_id`を使います。analysis requestではワークスペースから見える、処理済みでsearchableな`source_ids`を使います。\n- **分析入力:** 保存済みの`profile_id`と`report_template_id`に加えて、`formats`と`execution_profile_ref`を送信します。それぞれのimmutable versionを指定できます。versionを省略するとサーバーは`latest`を解決し、再現性のため解決したversionをrun snapshotに記録します。このendpointではinline profileとtemplateを受け付けません。新しい表示viewにはrerender/report endpointを使います。\n- **workflowの任意項目:** `source_snapshot`は選択した動画識別子を含むimmutable objectです。\n- **再試行:** `Idempotency-Key`を指定します。異なるbodyで同じkeyを使うと422になります。\n\n`GET /api/v1alpha1/runs/{run_id}`でrunが終了するまでpollします。analysis answerは`GET /api/v1alpha1/runs/{run_id}/answers`で、workflow findingは`GET /api/v1alpha1/findings?run_id={run_id}`で取得します。",
        "operationId": "create-run",
        "parameters": [
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "analysis": {
                  "summary": "Start an analysis using stored resources",
                  "value": {
                    "execute_now": true,
                    "execution_profile_ref": "premium-analysis@1",
                    "formats": [
                      "json",
                      "markdown"
                    ],
                    "kind": "analysis",
                    "profile_id": "prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                    "profile_version": 1,
                    "report_template_id": "tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                    "report_template_version": 1,
                    "source_ids": [
                      "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    ]
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/CreateRunDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "examples": {
                  "analysis": {
                    "summary": "Accepted analysis run",
                    "value": {
                      "analysis": {
                        "execution_profile_ref": "premium-analysis@1",
                        "locale": "ja",
                        "request_id": "0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                        "source_ids": [
                          "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                        ],
                        "sub_state": "accepted"
                      },
                      "created_at": "2026-08-21T09:00:00.000Z",
                      "id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "kind": "analysis",
                      "status": "queued",
                      "updated_at": "2026-08-21T09:00:00.000Z"
                    }
                  }
                },
                "schema": {
                  "discriminator": {
                    "mapping": {
                      "analysis": "#/components/schemas/AlphaAnalysisRunDto",
                      "workflow": "#/components/schemas/AlphaRunDto"
                    },
                    "propertyName": "kind"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AlphaRunDto"
                    },
                    {
                      "$ref": "#/components/schemas/AlphaAnalysisRunDto"
                    }
                  ]
                }
              }
            },
            "description": "Run accepted for asynchronous processing.\n\n非同期処理の分析ランを受け付けました。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "402": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The workspace has no remaining quota or indexing duration. Problem type: [quota-exceeded](https://developers.deepframe.cloud/errors/quota-exceeded).\n\nワークスペースのクォータまたはindexing durationが残っていません。 問題タイプ: [quota-exceeded](https://developers.deepframe.cloud/errors/quota-exceeded)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but the account or workspace is not allowed to perform this operation, for example because of billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI keyは有効ですが、billingやtrialの状態などにより、accountまたはワークスペースがこの操作を許可されていません。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Create a run\n\n分析ランを作成",
        "tags": [
          "Runs"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"kind\": \"analysis\",\n  \"source_ids\": [\n    \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n  ],\n  \"profile_id\": \"prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n  \"profile_version\": 1,\n  \"report_template_id\": \"tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n  \"report_template_version\": 1,\n  \"formats\": [\n    \"json\",\n    \"markdown\"\n  ],\n  \"execution_profile_ref\": \"premium-analysis@1\",\n  \"execute_now\": true\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/runs\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"create-run-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"kind\": \"analysis\",\n      \"source_ids\": [\n        \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n      ],\n      \"profile_id\": \"prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n      \"profile_version\": 1,\n      \"report_template_id\": \"tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n      \"report_template_version\": 1,\n      \"formats\": [\n        \"json\",\n        \"markdown\"\n      ],\n      \"execution_profile_ref\": \"premium-analysis@1\",\n      \"execute_now\": true\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/runs\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"create-run-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"kind\": \"analysis\",\n  \"source_ids\": [\n    \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n  ],\n  \"profile_id\": \"prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n  \"profile_version\": 1,\n  \"report_template_id\": \"tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n  \"report_template_version\": 1,\n  \"formats\": [\n    \"json\",\n    \"markdown\"\n  ],\n  \"execution_profile_ref\": \"premium-analysis@1\",\n  \"execute_now\": true\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/runs');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: create-run-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/runs')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'create-run-01'\n\nrequest.body = <<~JSON\n  {\n    \"kind\": \"analysis\",\n    \"source_ids\": [\n      \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n    ],\n    \"profile_id\": \"prof_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n    \"profile_version\": 1,\n    \"report_template_id\": \"tpl_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n    \"report_template_version\": 1,\n    \"formats\": [\n      \"json\",\n      \"markdown\"\n    ],\n    \"execution_profile_ref\": \"premium-analysis@1\",\n    \"execute_now\": true\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/runs/{run_id}": {
      "get": {
        "description": "Returns the current state of one analysis run. Poll this endpoint after the 202 acceptance response.\n\n- **Access:** an alpha-enabled API key with the `VIEW_INSIGHTS` permission.\n- **Watch:** `status`, `summary`, the nested `error` object, `case_id`, and `report_id`.\n- **Not found:** a run in another workspace is deliberately indistinguishable from one that does not exist.\n\nWhen findings are ready, continue to `GET /api/v1alpha1/findings?run_id={run_id}`.\n\n1件の分析ラン（Run）の現在の状態を返します。202受付後はこのエンドポイントをpollします。\n\n- **アクセス:** alphaを有効にしたAPI keyと`VIEW_INSIGHTS`権限。\n- **確認する項目:** `status`、`summary`、nested `error` object、`case_id`、`report_id`。\n- **見つからない場合:** 他のワークスペースのrunは、存在しない場合と意図的に区別できません。\n\n検出結果の準備ができたら`GET /api/v1alpha1/findings?run_id={run_id}`へ進んでください。",
        "operationId": "get-run",
        "parameters": [
          {
            "description": "Identifier of an analysis run, as returned when the run was created.\n\n分析ラン（Run）の識別子です。run作成時に返ります。",
            "in": "path",
            "name": "run_id",
            "required": true,
            "schema": {
              "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional related data to include:\n- events: timeline event details.\n- events.evidence: evidence attached to each timeline event.\n- evidence: answer evidence details.\n- provenance: curated provenance details.\n- snapshots: stored profile, input, and output snapshot references.\n- content: rendered report content.\n- manifest: report trust bindings and evidence URLs.\nExpand depth is limited to two path segments.\nFor this endpoint, use snapshots or provenance.",
            "in": "query",
            "name": "expand[]",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "snapshots",
                  "provenance"
                ],
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "analysis": {
                    "summary": "Completed analysis run",
                    "value": {
                      "analysis": {
                        "answer_references": [
                          {
                            "answer_id": "ans_0190b5d4-timeline",
                            "answer_key": "inspection_timeline",
                            "answer_type": "timeline"
                          },
                          {
                            "answer_id": "ans_0190b5d4-summary",
                            "answer_key": "inspection_summary",
                            "answer_type": "synthesis"
                          }
                        ],
                        "execution_profile_ref": "premium-analysis@1",
                        "limitations": [],
                        "locale": "ja",
                        "reason_code": "present",
                        "request_id": "0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                        "result_id": "result_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                        "result_state": "found",
                        "source_ids": [
                          "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                        ],
                        "sub_state": "completed"
                      },
                      "created_at": "2026-08-21T09:00:00.000Z",
                      "id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "kind": "analysis",
                      "status": "completed",
                      "updated_at": "2026-08-21T09:04:30.000Z"
                    }
                  }
                },
                "schema": {
                  "discriminator": {
                    "mapping": {
                      "analysis": "#/components/schemas/AlphaAnalysisRunDto",
                      "workflow": "#/components/schemas/AlphaRunDto"
                    },
                    "propertyName": "kind"
                  },
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AlphaRunDto"
                    },
                    {
                      "$ref": "#/components/schemas/AlphaAnalysisRunDto"
                    }
                  ]
                }
              }
            },
            "description": "Run returned.\n\n分析ランを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get a run\n\n分析ランを取得",
        "tags": [
          "Runs"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/runs/{run_id}/answers": {
      "get": {
        "description": "Returns the named answers produced by an analysis run.",
        "operationId": "list-analysis-answers",
        "parameters": [
          {
            "description": "Identifier of an analysis run, as returned when the run was created.\n\n分析ラン（Run）の識別子です。run作成時に返ります。",
            "in": "path",
            "name": "run_id",
            "required": true,
            "schema": {
              "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional related data to include:\n- events: timeline event details.\n- events.evidence: evidence attached to each timeline event.\n- evidence: answer evidence details.\n- provenance: curated provenance details.\n- snapshots: stored profile, input, and output snapshot references.\n- content: rendered report content.\n- manifest: report trust bindings and evidence URLs.\nExpand depth is limited to two path segments.\nFor this endpoint, use events, events.evidence, evidence, or provenance.",
            "in": "query",
            "name": "expand[]",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "events",
                  "events.evidence",
                  "evidence",
                  "provenance"
                ],
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "timelineAndSynthesis": {
                    "summary": "Named timeline and synthesis answers",
                    "value": {
                      "data": [
                        {
                          "coverage": {
                            "scope": "full_video",
                            "state": "complete"
                          },
                          "event_count": 1,
                          "evidence_count": 1,
                          "id": "ans_0190b5d4-timeline",
                          "key": "inspection_timeline",
                          "provenance": {
                            "execution_profile": "premium-analysis@1",
                            "provenance_ref": "prov_0190b5d4-analysis",
                            "request_id": "0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                            "usage": {
                              "input_tokens": 24008,
                              "output_tokens": 5388
                            }
                          },
                          "result_state": "found",
                          "type": "timeline"
                        },
                        {
                          "coverage": {
                            "scope": "full_video",
                            "state": "complete"
                          },
                          "event_count": 0,
                          "evidence_count": 1,
                          "id": "ans_0190b5d4-summary",
                          "key": "inspection_summary",
                          "provenance": {
                            "execution_profile": "premium-analysis@1",
                            "provenance_ref": "prov_0190b5d4-analysis",
                            "request_id": "0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                            "usage": {
                              "input_tokens": 24008,
                              "output_tokens": 5388
                            }
                          },
                          "result_state": "found",
                          "type": "synthesis"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": null
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaAnswerPageDto"
                }
              }
            },
            "description": "",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Read named analysis answers",
        "tags": [
          "Runs"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/answers\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/answers\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/answers');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/answers')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/runs/{run_id}/cancel": {
      "post": {
        "description": "Asks a pending or running analysis run to stop.\n\n- **Access:** an alpha-enabled API key with the `RUN_WORKFLOWS` permission.\n- **Asynchronous:** cancellation is a request, not a guarantee.\n- **Retries:** an optional `Idempotency-Key` makes a repeated cancellation safe.\n\nKeep polling `GET /api/v1alpha1/runs/{run_id}` until the run reaches a final state.\n\n保留中または実行中の分析ラン（Run）に停止を要求します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`RUN_WORKFLOWS`権限。\n- **非同期:** キャンセルは要求であり、保証ではありません。\n- **再試行:** 任意の`Idempotency-Key`により、キャンセルの再送を安全に扱えます。\n\nrunが最終状態になるまで`GET /api/v1alpha1/runs/{run_id}`のpollを続けてください。",
        "operationId": "cancel-run",
        "parameters": [
          {
            "description": "Identifier of an analysis run, as returned when the run was created.\n\n分析ラン（Run）の識別子です。run作成時に返ります。",
            "in": "path",
            "name": "run_id",
            "required": true,
            "schema": {
              "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "created_at": "2026-08-08T10:00:00.000Z",
                      "id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "kind": "workflow",
                      "status": "queued",
                      "updated_at": "2026-08-08T10:07:30.000Z",
                      "workflow": {
                        "case_id": "case_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                        "error": {
                          "code": "budget_exhausted",
                          "detail": "",
                          "next_action": "",
                          "title": ""
                        },
                        "error_message": "",
                        "provenance": {
                          "execution_profile": "premium-analysis@1",
                          "provenance_ref": "prov_0190b5d4-analysis",
                          "request_id": "0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "usage": {
                            "cached_input_tokens": 0,
                            "input_tokens": 0,
                            "media_seconds": 0,
                            "output_tokens": 0,
                            "provider_returned_cost": "",
                            "total_tokens": 0
                          }
                        },
                        "reason_code": "",
                        "report_id": "rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                        "rule_set_version_id": "snap_7ef3a4b2c1d0",
                        "rulebook_id": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                        "source_snapshot": {
                          "source_ids": [
                            "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                          ]
                        },
                        "summary": "Workflow execution is evaluating indexed evidence.",
                        "workflow_id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                      }
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaRunDto"
                }
              }
            },
            "description": "Cancellation accepted; continue polling the returned run.\n\nキャンセル要求を受け付けました。返されたrunのpollを続けてください。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Cancel a run\n\n分析ランをキャンセル",
        "tags": [
          "Runs"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/cancel\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Idempotency-Key\", \"cancel-run-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/cancel\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Idempotency-Key\", \"cancel-run-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/cancel');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Idempotency-Key: cancel-run-01',\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/cancel')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Idempotency-Key'] = 'cancel-run-01'\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/runs/{run_id}/reports": {
      "post": {
        "description": "Creates immutable JSON or Markdown reports from stored canonical answers. This presentation-only operation does not re-run analysis.",
        "operationId": "create-reports",
        "parameters": [
          {
            "description": "Identifier of an analysis run, as returned when the run was created.\n\n分析ラン（Run）の識別子です。run作成時に返ります。",
            "in": "path",
            "name": "run_id",
            "required": true,
            "schema": {
              "example": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional related data to include:\n- events: timeline event details.\n- events.evidence: evidence attached to each timeline event.\n- evidence: answer evidence details.\n- provenance: curated provenance details.\n- snapshots: stored profile, input, and output snapshot references.\n- content: rendered report content.\n- manifest: report trust bindings and evidence URLs.\nExpand depth is limited to two path segments.\nFor this endpoint, use content or manifest.",
            "in": "query",
            "name": "expand[]",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "content",
                  "manifest"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "secondView": {
                  "summary": "Render a second report template without reanalysis",
                  "value": {
                    "formats": [
                      "json",
                      "markdown"
                    ],
                    "report_template": {
                      "blocks": [
                        {
                          "answer_key": "inspection_timeline",
                          "field_labels": [
                            {
                              "key": "activity",
                              "label": "Activity"
                            },
                            {
                              "key": "description",
                              "label": "Description"
                            }
                          ],
                          "label": "Activity timeline",
                          "type": "timeline"
                        },
                        {
                          "answer_key": "inspection_summary",
                          "label": "Summary",
                          "type": "narrative"
                        }
                      ],
                      "id": "procedure-report-en",
                      "language": "en",
                      "version": 1
                    }
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/RenderAnalysisReportsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "rerendered": {
                    "summary": "New artifacts from a second report template",
                    "value": {
                      "data": [
                        {
                          "analysis_profile_ref": "snap_profile-snapshot-example",
                          "content_identity": "snap_rerender-json-content-example",
                          "content_ref": "artifact://rep_0190b5d4-rerendered-json/content",
                          "content_type": "application/json",
                          "created_at": "2026-08-21T09:04:31.000Z",
                          "format": "json",
                          "id": "rep_0190b5d4-rerendered-json",
                          "output_identity": "snap_output-snapshot-example",
                          "report_template_ref": "procedure-report-en@1",
                          "request_id": "0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "updated_at": "2026-08-21T09:04:31.000Z"
                        },
                        {
                          "analysis_profile_ref": "snap_profile-snapshot-example",
                          "content_identity": "snap_rerender-markdown-content-example",
                          "content_ref": "artifact://rep_0190b5d4-rerendered-markdown/content",
                          "content_type": "text/markdown",
                          "created_at": "2026-08-21T09:04:31.000Z",
                          "format": "markdown",
                          "id": "rep_0190b5d4-rerendered-markdown",
                          "output_identity": "snap_output-snapshot-example",
                          "report_template_ref": "procedure-report-en@1",
                          "request_id": "0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "updated_at": "2026-08-21T09:04:31.000Z"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": null
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AnalysisReportArtifactRenderResponseDto"
                }
              }
            },
            "description": "",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Create reports",
        "tags": [
          "Reports"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"report_template\": {\n    \"id\": \"procedure-report-en\",\n    \"version\": 1,\n    \"language\": \"en\",\n    \"blocks\": [\n      {\n        \"type\": \"timeline\",\n        \"answer_key\": \"inspection_timeline\",\n        \"label\": \"Activity timeline\",\n        \"field_labels\": [\n          {\n            \"key\": \"activity\",\n            \"label\": \"Activity\"\n          },\n          {\n            \"key\": \"description\",\n            \"label\": \"Description\"\n          }\n        ]\n      },\n      {\n        \"type\": \"narrative\",\n        \"answer_key\": \"inspection_summary\",\n        \"label\": \"Summary\"\n      }\n    ]\n  },\n  \"formats\": [\n    \"json\",\n    \"markdown\"\n  ]\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/reports\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"create-reports-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"report_template\": {\n        \"id\": \"procedure-report-en\",\n        \"version\": 1,\n        \"language\": \"en\",\n        \"blocks\": [\n          {\n            \"type\": \"timeline\",\n            \"answer_key\": \"inspection_timeline\",\n            \"label\": \"Activity timeline\",\n            \"field_labels\": [\n              {\n                \"key\": \"activity\",\n                \"label\": \"Activity\"\n              },\n              {\n                \"key\": \"description\",\n                \"label\": \"Description\"\n              }\n            ]\n          },\n          {\n            \"type\": \"narrative\",\n            \"answer_key\": \"inspection_summary\",\n            \"label\": \"Summary\"\n          }\n        ]\n      },\n      \"formats\": [\n        \"json\",\n        \"markdown\"\n      ]\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/reports\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"create-reports-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"report_template\": {\n    \"id\": \"procedure-report-en\",\n    \"version\": 1,\n    \"language\": \"en\",\n    \"blocks\": [\n      {\n        \"type\": \"timeline\",\n        \"answer_key\": \"inspection_timeline\",\n        \"label\": \"Activity timeline\",\n        \"field_labels\": [\n          {\n            \"key\": \"activity\",\n            \"label\": \"Activity\"\n          },\n          {\n            \"key\": \"description\",\n            \"label\": \"Description\"\n          }\n        ]\n      },\n      {\n        \"type\": \"narrative\",\n        \"answer_key\": \"inspection_summary\",\n        \"label\": \"Summary\"\n      }\n    ]\n  },\n  \"formats\": [\n    \"json\",\n    \"markdown\"\n  ]\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/reports');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: create-reports-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/runs/run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/reports')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'create-reports-01'\n\nrequest.body = <<~JSON\n  {\n    \"report_template\": {\n      \"id\": \"procedure-report-en\",\n      \"version\": 1,\n      \"language\": \"en\",\n      \"blocks\": [\n        {\n          \"type\": \"timeline\",\n          \"answer_key\": \"inspection_timeline\",\n          \"label\": \"Activity timeline\",\n          \"field_labels\": [\n            {\n              \"key\": \"activity\",\n              \"label\": \"Activity\"\n            },\n            {\n              \"key\": \"description\",\n              \"label\": \"Description\"\n            }\n          ]\n        },\n        {\n          \"type\": \"narrative\",\n          \"answer_key\": \"inspection_summary\",\n          \"label\": \"Summary\"\n        }\n      ]\n    },\n    \"formats\": [\n      \"json\",\n      \"markdown\"\n    ]\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/search": {
      "post": {
        "description": "Searches your indexed videos with a natural-language query and returns ranked matches, each with a score and, where one exists, a media URL you can play back.\n\n- **Access:** an alpha-enabled API key with the `SEARCH_CONTENT` permission.\n- **Scope:** pass `video_ids` to search only those videos. If any id is not visible to your workspace, the whole request returns 404.\n- **Tuning:** `limit` defaults to 25 and accepts 1-100. `threshold` defaults to 0.7 and accepts 0-1.\n\nTake a `video_id` from the results to `GET /api/v1alpha1/videos/{video_id}` for its processing state, or open the media URLs to review the match.\n\n自然言語のqueryでindex済みの動画を検索し、scoreと、存在する場合は再生可能なmedia URLを添えて、関連度順の結果を返します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`SEARCH_CONTENT`権限。\n- **範囲:** `video_ids`を指定すると対象を限定できます。ワークスペースから見えないidが1つでもあると、リクエスト全体が404になります。\n- **調整:** `limit`の既定値は25で、範囲は1から100。`threshold`の既定値は0.7で、範囲は0から1。\n\n結果の`video_id`を`GET /api/v1alpha1/videos/{video_id}`に渡して処理状態を確認するか、media URLを開いて内容を確認してください。",
        "operationId": "search-videos",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "limit": 10,
                    "query": "person entering through the north door",
                    "threshold": 0.82,
                    "video_ids": [
                      "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    ]
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/SearchAlphaDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "data": [
                        {
                          "id": "vid_0190b5d4_frame_0042",
                          "image": "https://cdn.example.test/media/vid_0190b5d4/frame-0042.jpg",
                          "scene_description": "A person enters through the north door.",
                          "score": 0.94,
                          "tags": [
                            "person",
                            "north door"
                          ],
                          "time_position": 222000,
                          "title": "warehouse-inspection-2026-08-08.mp4",
                          "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "video_url": "https://cdn.example.test/media/vid_0190b5d4/video.mp4"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaSearchResponseDto"
                }
              }
            },
            "description": "Ranked search results returned.\n\nranked search resultを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Search indexed videos\n\nindex済み動画を検索",
        "tags": [
          "Search"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"query\": \"person entering through the north door\",\n  \"video_ids\": [\n    \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n  ],\n  \"limit\": 10,\n  \"threshold\": 0.82\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/search\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"query\": \"person entering through the north door\",\n      \"video_ids\": [\n        \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n      ],\n      \"limit\": 10,\n      \"threshold\": 0.82\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/search\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"query\": \"person entering through the north door\",\n  \"video_ids\": [\n    \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n  ],\n  \"limit\": 10,\n  \"threshold\": 0.82\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/search');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/search')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\n\nrequest.body = <<~JSON\n  {\n    \"query\": \"person entering through the north door\",\n    \"video_ids\": [\n      \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n    ],\n    \"limit\": 10,\n    \"threshold\": 0.82\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/sessions": {
      "get": {
        "description": "Lists active conversation sessions created by the API key creator in the current organization, including compatible sessions created in the web product. Chats attached to workflow or analysis runs are not included. Expired sessions are omitted. The route requires the `QUERY_CONTENT` permission.\n\n現在の組織で API キー作成者が作成した、有効な会話セッションを一覧表示します。Web 製品で作成した互換セッションも含みます。ワークフローまたは分析の実行に紐づくチャットは含みません。期限切れのセッションは除外します。この操作には `QUERY_CONTENT` 権限が必要です。",
        "operationId": "list-conversation-sessions",
        "parameters": [
          {
            "description": "Opaque cursor returned as next_cursor by the previous response. Pass it byte-for-byte as cursor; do not decode, edit, or construct it.\n\n前の応答のnext_cursorとして返されたopaqueなcursorです。decode、編集、組み立てをせず、そのままcursorとして渡してください。",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
              "examples": [
                "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of resources to return in one page. The default is 25 and the accepted range is 1-100.\n\n1ページで返すresource数です。既定値は25で、1から100まで指定できます。",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "example": 25,
              "examples": [
                25
              ],
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "data": [
                        {
                          "created_at": "2026-08-08T10:00:00.000Z",
                          "expires_at": "2026-08-09T10:00:00.000Z",
                          "id": "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "last_message": "The north door remains clear.",
                          "updated_at": "2026-08-08T10:00:00.000Z",
                          "video_ids": [
                            "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                          ]
                        }
                      ],
                      "has_more": false,
                      "next_cursor": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaSessionPageDto"
                }
              }
            },
            "description": "Conversation sessions returned.\n\n会話sessionを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List conversation sessions\n\n会話sessionを一覧表示",
        "tags": [
          "Sessions"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/sessions\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/sessions\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/sessions');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/sessions')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "post": {
        "description": "Creates a server-held conversation session for one or more visible videos. The API key creator and organization own the session scope. Keys created by the same user in the same organization share visibility. A session expires after 24 hours of inactivity by default and activity refreshes the expiry. A foreign video id returns 404.\n\n- **Access:** an alpha-enabled API key with the `QUERY_CONTENT` permission.\n- **Scope:** the session stores the selected videos; nested queries cannot add videos.\n- **Privacy:** a different creator or organization receives the same 404 response as a missing session.\n\n表示可能な動画を対象とする、サーバー保持型の会話sessionを作成します。sessionの範囲はAPI keyの作成者とorganizationが所有します。同じuserが同じorganizationで作成したkeyはvisibilityを共有します。既定では24時間activityがないとsessionがexpireし、activityがあるとexpiryが更新されます。見えないvideo idを指定すると404を返します。\n\n- **アクセス:** `QUERY_CONTENT`権限を持つalpha-enabled API key。\n- **範囲:** 選択した動画をsessionに保存します。nested queryで動画を追加することはできません。\n- **プライバシー:** 作成者またはorganizationが異なる場合は、存在しないsessionと同じ404を返します。",
        "operationId": "create-conversation-session",
        "parameters": [
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "video_ids": [
                      "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    ]
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/CreateSessionDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "created_at": "2026-08-08T10:00:00.000Z",
                      "expires_at": "2026-08-09T10:00:00.000Z",
                      "id": "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "last_message": "The north door remains clear.",
                      "updated_at": "2026-08-08T10:00:00.000Z",
                      "video_ids": [
                        "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaSessionDto"
                }
              }
            },
            "description": "Conversation session created.\n\n会話sessionを作成しました。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Create a conversation session\n\n会話sessionを作成",
        "tags": [
          "Sessions"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"video_ids\": [\n    \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n  ]\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/sessions\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"create-conversation-session-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"video_ids\": [\n        \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n      ]\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/sessions\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"create-conversation-session-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"video_ids\": [\n    \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n  ]\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/sessions');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: create-conversation-session-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/sessions')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'create-conversation-session-01'\n\nrequest.body = <<~JSON\n  {\n    \"video_ids\": [\n      \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n    ]\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/sessions/{session_id}": {
      "get": {
        "description": "Returns one active conversation session. The route requires the `QUERY_CONTENT` permission. The read counts as activity and refreshes the idle expiry. A session owned by another creator or organization returns 404; keys created by the same user in the same organization share visibility.\n\nactiveな会話sessionを1件返します。このrouteには`QUERY_CONTENT`権限が必要です。readはactivityとして扱い、idle expiryを更新します。作成者またはorganizationが異なるsessionは404を返します。同じuserが同じorganizationで作成したkeyはvisibilityを共有します。",
        "operationId": "get-conversation-session",
        "parameters": [
          {
            "description": "Public identifier of a conversation session returned by POST /api/v1alpha1/sessions.\n\nPOST /api/v1alpha1/sessionsで返る会話sessionのpublic識別子です。",
            "in": "path",
            "name": "session_id",
            "required": true,
            "schema": {
              "example": "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "created_at": "2026-08-08T10:00:00.000Z",
                      "expires_at": "2026-08-09T10:00:00.000Z",
                      "id": "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "last_message": "The north door remains clear.",
                      "updated_at": "2026-08-08T10:00:00.000Z",
                      "video_ids": [
                        "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                      ]
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaSessionDto"
                }
              }
            },
            "description": "Conversation session returned.\n\n会話sessionを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get a conversation session\n\n会話sessionを取得",
        "tags": [
          "Sessions"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/sessions/{session_id}/queries": {
      "get": {
        "description": "Lists the server-held query history for one owned session. The route requires the `QUERY_CONTENT` permission. The same creator and organization scope applies to every item.\n\n所有するsessionのサーバー保持query historyを一覧表示します。このrouteには`QUERY_CONTENT`権限が必要です。すべてのitemに同じ作成者とorganizationのscopeを適用します。",
        "operationId": "list-conversation-queries",
        "parameters": [
          {
            "description": "Public identifier of a conversation session returned by POST /api/v1alpha1/sessions.\n\nPOST /api/v1alpha1/sessionsで返る会話sessionのpublic識別子です。",
            "in": "path",
            "name": "session_id",
            "required": true,
            "schema": {
              "example": "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Opaque cursor returned as next_cursor by the previous response. Pass it byte-for-byte as cursor; do not decode, edit, or construct it.\n\n前の応答のnext_cursorとして返されたopaqueなcursorです。decode、編集、組み立てをせず、そのままcursorとして渡してください。",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
              "examples": [
                "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of resources to return in one page. The default is 25 and the accepted range is 1-100.\n\n1ページで返すresource数です。既定値は25で、1から100まで指定できます。",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "example": 25,
              "examples": [
                25
              ],
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "data": [
                        {
                          "answer": "The north door opens at 42 seconds.",
                          "citations": [
                            {
                              "caption": "The north door opens.",
                              "clip_id": "clip-1",
                              "clip_url": "/api/videos/vid_0190b5d4/clip-1",
                              "confidence": 0.94,
                              "end_time": 48,
                              "ref_number": 1,
                              "start_time": 42,
                              "thumbnail_url": "/api/videos/vid_0190b5d4/frame-1",
                              "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                            }
                          ],
                          "completed_at": "2026-08-08T10:00:03.000Z",
                          "created_at": "2026-08-08T10:00:00.000Z",
                          "id": "qry_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "query": "What changed after the north door opened?",
                          "reason": "query_age_exceeded",
                          "session_id": "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "status": "processing",
                          "updated_at": "2026-08-08T10:00:03.000Z"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaQueryPageDto"
                }
              }
            },
            "description": "Conversation queries returned.\n\n会話queryを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List conversation queries\n\n会話queryを一覧表示",
        "tags": [
          "Queries"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/queries\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/queries\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/queries');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/queries')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "post": {
        "description": "Accepts a query for the videos bound to the session and returns 202 for asynchronous processing. The route requires the `QUERY_CONTENT` permission. DeepFrame uses up to 10 stored messages (about 5 question/answer pairs) as context. Poll the returned resource about once per second until `completed` or `failed`. A query that cannot complete is reported as `failed`: `engine_error` indicates a processing failure, while `query_age_exceeded` indicates that no answer was saved within the allowed time. Both are terminal states.\n\nセッションに紐づく動画へのクエリを受け付け、非同期処理として 202 を返します。この操作には `QUERY_CONTENT` 権限が必要です。DeepFrame は保存済みの最大 10 メッセージ、つまり質問と回答で約 5 組を文脈として使います。返されたリソースを約 1 秒間隔で確認し、`completed` または `failed` になったら停止してください。完了できないクエリは `failed` になります。`engine_error` は処理失敗、`query_age_exceeded` は制限時間内に回答が保存されなかったことを示します。どちらも終了状態です。",
        "operationId": "create-conversation-query",
        "parameters": [
          {
            "description": "Public identifier of a conversation session returned by POST /api/v1alpha1/sessions.\n\nPOST /api/v1alpha1/sessionsで返る会話sessionのpublic識別子です。",
            "in": "path",
            "name": "session_id",
            "required": true,
            "schema": {
              "example": "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "query": "What changed after the north door opened?"
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/CreateQueryDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "answer": "The north door opens at 42 seconds.",
                      "citations": [
                        {
                          "caption": "The north door opens.",
                          "clip_id": "clip-1",
                          "clip_url": "/api/videos/vid_0190b5d4/clip-1",
                          "confidence": 0.94,
                          "end_time": 48,
                          "ref_number": 1,
                          "start_time": 42,
                          "thumbnail_url": "/api/videos/vid_0190b5d4/frame-1",
                          "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                        }
                      ],
                      "completed_at": "2026-08-08T10:00:03.000Z",
                      "created_at": "2026-08-08T10:00:00.000Z",
                      "id": "qry_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "query": "What changed after the north door opened?",
                      "reason": "query_age_exceeded",
                      "session_id": "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "status": "processing",
                      "updated_at": "2026-08-08T10:00:03.000Z"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaQueryDto"
                }
              }
            },
            "description": "Query accepted for asynchronous processing.\n\nqueryを非同期処理として受け付けました。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Submit a conversation query\n\n会話queryを送信",
        "tags": [
          "Queries"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"query\": \"What changed after the north door opened?\"\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/queries\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"create-conversation-query-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"query\": \"What changed after the north door opened?\"\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/queries\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"create-conversation-query-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"query\": \"What changed after the north door opened?\"\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/queries');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: create-conversation-query-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/queries')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'create-conversation-query-01'\n\nrequest.body = <<~JSON\n  {\n    \"query\": \"What changed after the north door opened?\"\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/sessions/{session_id}/queries/{query_id}": {
      "get": {
        "description": "Returns the current query state. The route requires the `QUERY_CONTENT` permission. Poll about once per second. A completed response contains the saved answer and citations. A query that cannot complete is reported as `failed`; `engine_error` indicates a processing failure, while `query_age_exceeded` indicates that no answer was saved within the allowed time. Both are terminal states. A session or query outside the caller's scope returns 404.\n\nクエリの現在の状態を返します。この操作には `QUERY_CONTENT` 権限が必要です。約 1 秒間隔で確認してください。`completed` のレスポンスには保存された回答と引用が含まれます。完了できないクエリは `failed` になります。`engine_error` は処理失敗、`query_age_exceeded` は制限時間内に回答が保存されなかったことを示します。どちらも終了状態です。呼び出し元のアクセス範囲外にあるセッションまたはクエリには 404 を返します。",
        "operationId": "get-conversation-query",
        "parameters": [
          {
            "description": "Public identifier of a conversation session returned by POST /api/v1alpha1/sessions.\n\nPOST /api/v1alpha1/sessionsで返る会話sessionのpublic識別子です。",
            "in": "path",
            "name": "session_id",
            "required": true,
            "schema": {
              "example": "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Public identifier of a conversation query returned by POST /api/v1alpha1/sessions/{session_id}/queries.\n\nPOST /api/v1alpha1/sessions/{session_id}/queriesで返る会話queryのpublic識別子です。",
            "in": "path",
            "name": "query_id",
            "required": true,
            "schema": {
              "example": "qry_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "qry_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "answer": "The north door opens at 42 seconds.",
                      "citations": [
                        {
                          "caption": "The north door opens.",
                          "clip_id": "clip-1",
                          "clip_url": "/api/videos/vid_0190b5d4/clip-1",
                          "confidence": 0.94,
                          "end_time": 48,
                          "ref_number": 1,
                          "start_time": 42,
                          "thumbnail_url": "/api/videos/vid_0190b5d4/frame-1",
                          "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                        }
                      ],
                      "completed_at": "2026-08-08T10:00:03.000Z",
                      "created_at": "2026-08-08T10:00:00.000Z",
                      "id": "qry_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "query": "What changed after the north door opened?",
                      "reason": "query_age_exceeded",
                      "session_id": "sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "status": "processing",
                      "updated_at": "2026-08-08T10:00:03.000Z"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaQueryDto"
                }
              }
            },
            "description": "Current query state returned.\n\nqueryの現在のstateを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Poll a conversation query\n\n会話queryをpoll",
        "tags": [
          "Queries"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/queries/qry_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/queries/qry_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/queries/qry_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/sessions/sess_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/queries/qry_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/videos": {
      "get": {
        "description": "Returns the videos in your workspace, newest first.\n\n- **Access:** an alpha-enabled API key with the `READ_VIDEOS` permission.\n- **Filters:** `status`.\n- **Paging:** `limit` defaults to 25, maximum 100. Pass `next_cursor` back unchanged as `cursor`.\n\nEach row carries the public `id` used as the `video_id` in other video calls. To analyse a video, pass a `workflow_id` you already have to `POST /api/v1alpha1/runs`.\n\nワークスペース内の動画を新しい順に返します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`READ_VIDEOS`権限。\n- **フィルター:** `status`。\n- **ページング:** `limit`の既定値は25、最大は100。`next_cursor`をそのまま`cursor`として渡します。\n\n各行のpublicな`id`が、他の動画向け呼び出しで使う`video_id`です。分析するときは、すでに持っている`workflow_id`を`POST /api/v1alpha1/runs`に渡してください。",
        "operationId": "list-videos",
        "parameters": [
          {
            "description": "Opaque cursor returned as next_cursor by the previous response. Pass it byte-for-byte as cursor; do not decode, edit, or construct it.\n\n前の応答のnext_cursorとして返されたopaqueなcursorです。decode、編集、組み立てをせず、そのままcursorとして渡してください。",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
              "examples": [
                "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of resources to return in one page. The default is 25 and the accepted range is 1-100.\n\n1ページで返すresource数です。既定値は25で、1から100まで指定できます。",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "example": 25,
              "examples": [
                25
              ],
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "description": "Coarse processing status: queued is waiting to start; processing is extracting, analyzing, or indexing; completed is searchable; failed ended with an error. Omit it to return all visible videos.",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "queued",
                "processing",
                "completed",
                "failed"
              ],
              "example": "completed",
              "examples": [
                "completed"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "data": [
                        {
                          "created_at": "2026-08-08T10:00:00.000Z",
                          "duration": 183.75,
                          "filename": "warehouse-inspection-2026-08-08.mp4",
                          "frame_count": 4410,
                          "id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "progress": 100,
                          "source": "user",
                          "status": "completed",
                          "updated_at": "2026-08-08T10:06:12.000Z"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaVideoPageDto"
                }
              }
            },
            "description": "Videos returned in a cursor envelope.\n\n動画をcursor envelopeで返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List videos\n\n動画を一覧表示",
        "tags": [
          "Videos"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/videos\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/videos\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/videos');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/videos')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "post": {
        "description": "Opens a server-selected direct or multipart upload session. The request contains only the original `filename` and exact `file_size`; the server determines content type from the filename and measures duration during processing. Video bytes go directly to storage and never pass through this API. Files up to 200 MiB use one PUT, and larger files use 10 MiB multipart chunks. The response reports the selected strategy.\n\n- **Access:** an alpha-enabled API key with the `UPLOAD_VIDEOS` permission.\n- **Size:** `file_size` is required and must be exact. The maximum is 10 GiB.\n- **Strategy:** upload selection is always automatic; callers cannot submit a strategy preference.\n- **Retries:** send an `Idempotency-Key` to safely retry session creation.\n\nAfter the storage upload, record multipart ETags with `PUT /api/v1alpha1/videos/{video_id}/upload/parts`, then call `POST /api/v1alpha1/videos/{video_id}/upload/complete`. Poll `GET /api/v1alpha1/videos/{video_id}` for processing status.\n\nサーバーがdirectまたはmultipart upload sessionを選択します。requestには元の`filename`と正確な`file_size`だけを含め、content typeはfilenameからサーバーが決め、durationはprocessing中に測定します。動画のバイト列はstorageへ直接送信し、このAPIを通過しません。200 MiB以下は1回のPUT、それより大きい動画は10 MiBのmultipart chunkを使います。responseに選択したstrategyを返します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`UPLOAD_VIDEOS`権限。\n- **サイズ:** `file_size`は必須で正確な値にしてください。最大は10 GiBです。\n- **方式:** upload方式は常に自動選択し、callerは方式を指定できません。\n- **再試行:** session作成を安全にretryするには`Idempotency-Key`を指定します。\n\nstorage upload後、multipartのETagを`PUT /api/v1alpha1/videos/{video_id}/upload/parts`で記録し、`POST /api/v1alpha1/videos/{video_id}/upload/complete`を呼び出します。processing statusは`GET /api/v1alpha1/videos/{video_id}`でpollします。",
        "operationId": "create-video-upload",
        "parameters": [
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "file_size": 157286400,
                    "filename": "warehouse-inspection-2026-08-08.mp4"
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/CreateVideoIntentDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "chunk_size": 10485760,
                      "completed_parts": 2,
                      "expires_at": "2026-08-08T10:15:00.000Z",
                      "file_size": 157286400,
                      "received_parts": [
                        1,
                        3
                      ],
                      "reported_bytes": 20971520,
                      "state": "open",
                      "strategy": "direct",
                      "target": {
                        "expires_at": "2026-08-08T10:15:00.000Z",
                        "headers": {},
                        "method": "put",
                        "part_number": 2,
                        "url": "https://s3.example.test/upload"
                      },
                      "targets": [
                        {
                          "expires_at": "2026-08-08T10:15:00.000Z",
                          "headers": {},
                          "method": "put",
                          "part_number": 2,
                          "url": "https://s3.example.test/upload"
                        }
                      ],
                      "total_chunks": 16,
                      "uploaded_bytes": 10485760,
                      "verified_bytes": 0,
                      "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/VideoUploadSessionDto"
                }
              }
            },
            "description": "Upload session created. Internal storage identifiers are not returned.\n\nupload sessionを作成しました。内部storage identifierは返しません。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "402": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The workspace has no remaining quota or indexing duration. Problem type: [quota-exceeded](https://developers.deepframe.cloud/errors/quota-exceeded).\n\nワークスペースのクォータまたはindexing durationが残っていません。 問題タイプ: [quota-exceeded](https://developers.deepframe.cloud/errors/quota-exceeded)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but the account or workspace is not allowed to perform this operation, for example because of billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI keyは有効ですが、billingやtrialの状態などにより、accountまたはワークスペースがこの操作を許可されていません。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Create a direct or multipart video upload\n\n動画uploadを作成",
        "tags": [
          "Videos"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"filename\": \"warehouse-inspection-2026-08-08.mp4\",\n  \"file_size\": 157286400\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/videos\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"create-video-upload-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"filename\": \"warehouse-inspection-2026-08-08.mp4\",\n      \"file_size\": 157286400\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/videos\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"create-video-upload-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"filename\": \"warehouse-inspection-2026-08-08.mp4\",\n  \"file_size\": 157286400\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/videos');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: create-video-upload-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/videos')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'create-video-upload-01'\n\nrequest.body = <<~JSON\n  {\n    \"filename\": \"warehouse-inspection-2026-08-08.mp4\",\n    \"file_size\": 157286400\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/videos/{video_id}": {
      "get": {
        "description": "Returns one video and where it has got to in processing.\n\n- **Access:** an alpha-enabled API key with the `READ_VIDEOS` permission.\n- **Watch:** `status`, `progress`, and the nested `error` object tell you whether to wait, investigate, or start a run.\n- **Not found:** a video in another workspace is deliberately indistinguishable from one that does not exist.\n\n1本の動画と、その処理の進み具合を返します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`READ_VIDEOS`権限。\n- **確認する項目:** `status`、`progress`、nested `error` objectから、待つか、調査するか、runを開始するかを判断できます。\n- **見つからない場合:** 他のワークスペースの動画は、存在しない場合と意図的に区別できません。",
        "operationId": "get-video",
        "parameters": [
          {
            "description": "Identifier of a video, as returned in `id` by the upload intent.\n\n動画の識別子です。アップロードセッションの `id` で返ります。",
            "in": "path",
            "name": "video_id",
            "required": true,
            "schema": {
              "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "created_at": "2026-08-08T10:00:00.000Z",
                      "duration": 183.75,
                      "error": {
                        "code": "budget_exhausted",
                        "detail": "",
                        "next_action": "",
                        "title": ""
                      },
                      "error_message": "The video could not be processed.",
                      "filename": "warehouse-inspection-2026-08-08.mp4",
                      "frame_count": 4410,
                      "id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "progress": 100,
                      "source": "user",
                      "status": "completed",
                      "thumbnail_url": "https://cdn.example.test/media/vid_0190b5d4/thumbnail.jpg",
                      "updated_at": "2026-08-08T10:06:12.000Z"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaVideoDto"
                }
              }
            },
            "description": "Video returned.\n\n動画を返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get a video\n\n動画を取得",
        "tags": [
          "Videos"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/videos/{video_id}/upload": {
      "delete": {
        "description": "Aborts the direct or multipart storage session and marks the upload session aborted.\n\ndirectまたはmultipartのstorage sessionを中止し、upload sessionをabortedにします。",
        "operationId": "delete-video-upload",
        "parameters": [
          {
            "description": "Identifier of a video, as returned in `id` by the upload intent.\n\n動画の識別子です。アップロードセッションの `id` で返ります。",
            "in": "path",
            "name": "video_id",
            "required": true,
            "schema": {
              "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Upload aborted.\n\nuploadを中止しました。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Abort a video upload\n\n動画uploadを中止",
        "tags": [
          "Videos"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"DELETE\", \"https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload')\nrequest = Net::HTTP::Delete.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "get": {
        "description": "Returns the owner-scoped upload session and persisted resume progress without changing activity state or issuing storage targets. Use `POST /api/v1alpha1/videos/{video_id}/upload/targets` to mint fresh targets. Internal storage identifiers are never returned.\n\nowner-scoped upload sessionと永続化したresume progressを返します。activity stateを変更せず、storage targetも発行しません。fresh targetの発行には`POST /api/v1alpha1/videos/{video_id}/upload/targets`を使います。内部storage identifierは返しません。",
        "operationId": "get-video-upload",
        "parameters": [
          {
            "description": "Identifier of a video, as returned in `id` by the upload intent.\n\n動画の識別子です。アップロードセッションの `id` で返ります。",
            "in": "path",
            "name": "video_id",
            "required": true,
            "schema": {
              "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "chunk_size": 10485760,
                      "completed_parts": 2,
                      "expires_at": "2026-08-08T10:15:00.000Z",
                      "file_size": 157286400,
                      "received_parts": [
                        1,
                        3
                      ],
                      "reported_bytes": 20971520,
                      "state": "open",
                      "strategy": "direct",
                      "target": {
                        "expires_at": "2026-08-08T10:15:00.000Z",
                        "headers": {},
                        "method": "put",
                        "part_number": 2,
                        "url": "https://s3.example.test/upload"
                      },
                      "targets": [
                        {
                          "expires_at": "2026-08-08T10:15:00.000Z",
                          "headers": {},
                          "method": "put",
                          "part_number": 2,
                          "url": "https://s3.example.test/upload"
                        }
                      ],
                      "total_chunks": 16,
                      "uploaded_bytes": 10485760,
                      "verified_bytes": 0,
                      "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/VideoUploadSessionDto"
                }
              }
            },
            "description": "Upload status returned without issuing targets.\n\ntargetを発行せずupload statusを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get a video upload session\n\n動画upload sessionを取得",
        "tags": [
          "Videos"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/videos/{video_id}/upload/complete": {
      "post": {
        "description": "Verifies the direct object or persisted multipart receipt manifest, checks exact stored bytes, and starts processing once. Poll `GET /api/v1alpha1/videos/{video_id}` for processing status.\n\ndirect objectまたは永続化したmultipart receipt manifestを検証し、storage byte数を確認して、processingを1回だけ開始します。processing statusは`GET /api/v1alpha1/videos/{video_id}`でpollします。",
        "operationId": "complete-video-upload",
        "parameters": [
          {
            "description": "Identifier of a video, as returned in `id` by the upload intent.\n\n動画の識別子です。アップロードセッションの `id` で返ります。",
            "in": "path",
            "name": "video_id",
            "required": true,
            "schema": {
              "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {}
                }
              },
              "schema": {
                "$ref": "#/components/schemas/CompleteVideoUploadDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "created_at": "2026-08-08T10:00:00.000Z",
                      "duration": 183.75,
                      "error": {
                        "code": "budget_exhausted",
                        "detail": "",
                        "next_action": "",
                        "title": ""
                      },
                      "error_message": "The video could not be processed.",
                      "filename": "warehouse-inspection-2026-08-08.mp4",
                      "frame_count": 4410,
                      "id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "progress": 100,
                      "source": "user",
                      "status": "completed",
                      "thumbnail_url": "https://cdn.example.test/media/vid_0190b5d4/thumbnail.jpg",
                      "updated_at": "2026-08-08T10:06:12.000Z"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaVideoDto"
                }
              }
            },
            "description": "Upload completed and processing started.\n\nアップロードを完了し、processingを開始しました。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "402": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The workspace has no remaining quota or indexing duration. Problem type: [quota-exceeded](https://developers.deepframe.cloud/errors/quota-exceeded).\n\nワークスペースのクォータまたはindexing durationが残っていません。 問題タイプ: [quota-exceeded](https://developers.deepframe.cloud/errors/quota-exceeded)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but the account or workspace is not allowed to perform this operation, for example because of billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI keyは有効ですが、billingやtrialの状態などにより、accountまたはワークスペースがこの操作を許可されていません。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Complete a video upload\n\n動画uploadを完了",
        "tags": [
          "Videos"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload/complete\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"complete-video-upload-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {}\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload/complete\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"complete-video-upload-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload/complete');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: complete-video-upload-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload/complete')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'complete-video-upload-01'\n\nrequest.body = <<~JSON\n  {}\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/videos/{video_id}/upload/parts": {
      "put": {
        "description": "Records the ETags returned by direct storage. The same part and ETag can be sent again safely. The persisted receipts, not ListParts alone, are the completion manifest.\n\ndirect storageが返したETagを記録します。同じpartとETagの再送は安全です。completion manifestはListPartsだけでなく、永続化したreceiptを使います。",
        "operationId": "record-video-upload-parts",
        "parameters": [
          {
            "description": "Identifier of a video, as returned in `id` by the upload intent.\n\n動画の識別子です。アップロードセッションの `id` で返ります。",
            "in": "path",
            "name": "video_id",
            "required": true,
            "schema": {
              "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "parts": [
                      {
                        "etag": "\"etag-part-1\"",
                        "part_number": 1
                      }
                    ]
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/RecordVideoUploadPartsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "chunk_size": 10485760,
                      "completed_parts": 2,
                      "expires_at": "2026-08-08T10:15:00.000Z",
                      "file_size": 157286400,
                      "received_parts": [
                        1,
                        3
                      ],
                      "reported_bytes": 20971520,
                      "state": "open",
                      "strategy": "direct",
                      "target": {
                        "expires_at": "2026-08-08T10:15:00.000Z",
                        "headers": {},
                        "method": "put",
                        "part_number": 2,
                        "url": "https://s3.example.test/upload"
                      },
                      "targets": [
                        {
                          "expires_at": "2026-08-08T10:15:00.000Z",
                          "headers": {},
                          "method": "put",
                          "part_number": 2,
                          "url": "https://s3.example.test/upload"
                        }
                      ],
                      "total_chunks": 16,
                      "uploaded_bytes": 10485760,
                      "verified_bytes": 0,
                      "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/VideoUploadSessionDto"
                }
              }
            },
            "description": "The complete upload session is returned.\n\n完全なupload sessionを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Record uploaded multipart parts\n\nmultipart upload済みpartを記録",
        "tags": [
          "Videos"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"parts\": [\n    {\n      \"part_number\": 1,\n      \"etag\": \"\\\"etag-part-1\\\"\"\n    }\n  ]\n}`\n\n\treq, err := http.NewRequest(\"PUT\", \"https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload/parts\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"parts\": [\n        {\n          \"part_number\": 1,\n          \"etag\": \"\\\"etag-part-1\\\"\"\n        }\n      ]\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload/parts\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PUT\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"parts\": [\n    {\n      \"part_number\": 1,\n      \"etag\": \"\\\"etag-part-1\\\"\"\n    }\n  ]\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload/parts');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload/parts')\nrequest = Net::HTTP::Put.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\n\nrequest.body = <<~JSON\n  {\n    \"parts\": [\n      {\n        \"part_number\": 1,\n        \"etag\": \"\\\"etag-part-1\\\"\"\n      }\n    ]\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/videos/{video_id}/upload/targets": {
      "post": {
        "description": "Returns fresh direct-to-storage targets. The server validates every requested multipart part number against its calculated total.\n\nfresh direct-to-storage targetを返します。サーバーは要求されたmultipart part番号を、計算済みのtotalに対して検証します。",
        "operationId": "refresh-video-upload-targets",
        "parameters": [
          {
            "description": "Identifier of a video, as returned in `id` by the upload intent.\n\n動画の識別子です。アップロードセッションの `id` で返ります。",
            "in": "path",
            "name": "video_id",
            "required": true,
            "schema": {
              "example": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "part_numbers": [
                      1,
                      2,
                      3
                    ]
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/RequestVideoUploadTargetsDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "chunk_size": 10485760,
                      "completed_parts": 2,
                      "expires_at": "2026-08-08T10:15:00.000Z",
                      "file_size": 157286400,
                      "received_parts": [
                        1,
                        3
                      ],
                      "reported_bytes": 20971520,
                      "state": "open",
                      "strategy": "direct",
                      "target": {
                        "expires_at": "2026-08-08T10:15:00.000Z",
                        "headers": {},
                        "method": "put",
                        "part_number": 2,
                        "url": "https://s3.example.test/upload"
                      },
                      "targets": [
                        {
                          "expires_at": "2026-08-08T10:15:00.000Z",
                          "headers": {},
                          "method": "put",
                          "part_number": 2,
                          "url": "https://s3.example.test/upload"
                        }
                      ],
                      "total_chunks": 16,
                      "uploaded_bytes": 10485760,
                      "verified_bytes": 0,
                      "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/VideoUploadSessionDto"
                }
              }
            },
            "description": "Fresh upload targets returned.\n\nfresh upload targetを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Refresh video upload targets\n\n動画upload targetを更新",
        "tags": [
          "Videos"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"part_numbers\": [\n    1,\n    2,\n    3\n  ]\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload/targets\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"refresh-video-upload-targets-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"part_numbers\": [\n        1,\n        2,\n        3\n      ]\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload/targets\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"refresh-video-upload-targets-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"part_numbers\": [\n    1,\n    2,\n    3\n  ]\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload/targets');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: refresh-video-upload-targets-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/videos/vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/upload/targets')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'refresh-video-upload-targets-01'\n\nrequest.body = <<~JSON\n  {\n    \"part_numbers\": [\n      1,\n      2,\n      3\n    ]\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/webhooks": {
      "get": {
        "description": "Returns the webhook endpoints registered in your workspace. Signing secrets are never included.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_WEBHOOKS` permission.\n- **Paging:** `limit` defaults to 25, maximum 100. Pass `next_cursor` back unchanged as `cursor`.\n\nUse an id from the list to read, update or delete an endpoint, or to look at its delivery history.\n\nワークスペースに登録されているWebhook endpointを返します。signing secretは含まれません。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_WEBHOOKS`権限。\n- **ページング:** `limit`の既定値は25、最大は100。`next_cursor`をそのまま`cursor`として渡します。\n\n一覧のidを使って、endpointの取得、更新、削除、または配信履歴の確認ができます。",
        "operationId": "list-webhooks",
        "parameters": [
          {
            "description": "Opaque cursor returned as next_cursor by the previous response. Pass it byte-for-byte as cursor; do not decode, edit, or construct it.\n\n前の応答のnext_cursorとして返されたopaqueなcursorです。decode、編集、組み立てをせず、そのままcursorとして渡してください。",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
              "examples": [
                "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of resources to return in one page. The default is 25 and the accepted range is 1-100.\n\n1ページで返すresource数です。既定値は25で、1から100まで指定できます。",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "example": 25,
              "examples": [
                25
              ],
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "data": [
                        {
                          "created_at": "2026-08-08T10:00:00.000Z",
                          "enabled": true,
                          "events": [
                            "video.indexed",
                            "run.completed"
                          ],
                          "id": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "updated_at": "2026-08-08T10:09:00.000Z",
                          "url": "https://hooks.example.com/deepframe"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointPageDto"
                }
              }
            },
            "description": "Webhook endpoints returned without secrets.\n\nsigning secretを除くWebhook endpointを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List webhook endpoints\n\nWebhook endpointを一覧表示",
        "tags": [
          "Webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/webhooks\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/webhooks\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/webhooks');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/webhooks')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "post": {
        "description": "Registers an endpoint of yours and subscribes it to `video.indexed`, `video.failed` and `run.completed` events.\n\n- **Store the secret now.** The signing secret is returned in this response and never again. You need it to verify every delivery.\n- **Access:** an alpha-enabled API key with the `MANAGE_WEBHOOKS` permission.\n- **URL rules:** the endpoint must be HTTPS, must carry no credentials, and must resolve to a public address. Private, loopback, link-local and unique-local destinations are rejected.\n- **Retries:** send an `Idempotency-Key`. It still stops a retry from registering the endpoint twice, but this one operation cannot replay its response, because the secret is never written to the idempotency record. Repeating a completed call returns 409, and you should retry with a new key only if you did not store the secret. Reusing the key while the first call is still running returns 409, and reusing it with a different body returns 422.\n\nAfter creating it, watch `GET /api/v1alpha1/webhooks/{webhook_id}/deliveries` to see whether deliveries are arriving.\n\n自身のendpointを登録し、`video.indexed`、`video.failed`、`run.completed`のイベントを購読します。\n\n- **secretはこの場で保存してください。** signing secretはこの応答でのみ返され、再取得できません。各deliveryの検証に必要です。\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_WEBHOOKS`権限。\n- **URLの条件:** HTTPSであること、credentialを含まないこと、publicなアドレスに解決されること。private、loopback、link-local、unique-localの宛先は拒否されます。\n- **再試行:** `Idempotency-Key`を指定します。endpointの二重登録は引き続き防げますが、secretはidempotency recordに保存しないため、この操作だけは応答を再送できません。完了済みの呼び出しを再送すると409になります。secretを保存できていない場合にかぎり、新しいkeyで作成し直してください。最初の呼び出しの処理中に同じkeyを使った場合も409、異なるbodyで使うと422になります。\n\n作成後は`GET /api/v1alpha1/webhooks/{webhook_id}/deliveries`で配信状況を確認してください。",
        "operationId": "create-webhook",
        "parameters": [
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "description": "Warehouse review pipeline",
                    "events": [
                      "video.indexed",
                      "run.completed"
                    ],
                    "url": "https://hooks.example.com/deepframe"
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "created_at": "2026-08-08T10:00:00.000Z",
                      "description": "Warehouse review pipeline",
                      "enabled": true,
                      "events": [
                        "video.indexed",
                        "run.completed"
                      ],
                      "id": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "secret": "whsec_c2RrX3Rlc3Q",
                      "updated_at": "2026-08-08T10:09:00.000Z",
                      "url": "https://hooks.example.com/deepframe"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/CreatedWebhookEndpointDto"
                }
              }
            },
            "description": "Webhook endpoint created; the signing secret is returned only now.\n\nWebhook endpointを作成しました。signing secretはこの時だけ返します。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, the same Idempotency-Key is still in flight, or it was already used for a completed call. This operation cannot replay a response, because the secret is returned exactly once and never kept in the idempotency record. Retry with a new Idempotency-Key. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中か、完了済みの呼び出しですでに使われています。この操作はsecretを一度だけ返し、idempotency recordには保持しないため、応答を再送できません。新しいIdempotency-Keyで再試行してください。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Create a webhook endpoint\n\nWebhook endpointを作成",
        "tags": [
          "Webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"url\": \"https://hooks.example.com/deepframe\",\n  \"description\": \"Warehouse review pipeline\",\n  \"events\": [\n    \"video.indexed\",\n    \"run.completed\"\n  ]\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/webhooks\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"create-webhook-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"url\": \"https://hooks.example.com/deepframe\",\n      \"description\": \"Warehouse review pipeline\",\n      \"events\": [\n        \"video.indexed\",\n        \"run.completed\"\n      ]\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/webhooks\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"create-webhook-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"url\": \"https://hooks.example.com/deepframe\",\n  \"description\": \"Warehouse review pipeline\",\n  \"events\": [\n    \"video.indexed\",\n    \"run.completed\"\n  ]\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/webhooks');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: create-webhook-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/webhooks')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'create-webhook-01'\n\nrequest.body = <<~JSON\n  {\n    \"url\": \"https://hooks.example.com/deepframe\",\n    \"description\": \"Warehouse review pipeline\",\n    \"events\": [\n      \"video.indexed\",\n      \"run.completed\"\n    ]\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/webhooks/{webhook_id}": {
      "delete": {
        "description": "Deletes a webhook endpoint and stops all further deliveries to it.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_WEBHOOKS` permission.\n- **Response:** no body.\n- **Retries:** `Idempotency-Key` applies to POST endpoints only, so repeating a DELETE is not deduplicated.\n- **Not found:** an endpoint in another workspace is deliberately indistinguishable from one that does not exist.\n\nOnce the endpoint is gone its delivery history can no longer be read through this API, so export anything you need for audit first.\n\nWebhook endpointを削除し、そのendpointへの配信をすべて停止します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_WEBHOOKS`権限。\n- **応答:** bodyはありません。\n- **再試行:** `Idempotency-Key`はPOSTのみが対象のため、DELETEの再送は重複排除されません。\n- **見つからない場合:** 他のワークスペースのendpointは、存在しない場合と意図的に区別できません。\n\nendpointを削除すると、その配信履歴はこのAPIから読み取れなくなります。監査に必要な記録は削除前に取得してください。",
        "operationId": "delete-webhook",
        "parameters": [
          {
            "description": "Identifier of a registered webhook endpoint.\n\n登録済みWebhook endpointの識別子です。",
            "in": "path",
            "name": "webhook_id",
            "required": true,
            "schema": {
              "example": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Webhook endpoint deleted; the response has no body.\n\nWebhook endpointを削除しました。応答bodyはありません。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Delete a webhook endpoint\n\nWebhook endpointを削除",
        "tags": [
          "Webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"DELETE\", \"https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Delete.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "get": {
        "description": "Returns one webhook endpoint. The signing secret is not included; it is shown only when the endpoint is created.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_WEBHOOKS` permission.\n- **Not found:** an endpoint in another workspace is deliberately indistinguishable from one that does not exist, so this response never reveals that an id belongs to somebody else.\n\nUse the id with `GET /api/v1alpha1/webhooks/{webhook_id}/deliveries` to see its delivery history.\n\n1件のWebhook endpointを返します。signing secretは含まれず、作成時にのみ返されます。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_WEBHOOKS`権限。\n- **見つからない場合:** 他のワークスペースのendpointは、存在しない場合と意図的に区別できません。そのidが他者のものであることは分かりません。\n\nidを`GET /api/v1alpha1/webhooks/{webhook_id}/deliveries`に渡すと配信履歴を確認できます。",
        "operationId": "get-webhook",
        "parameters": [
          {
            "description": "Identifier of a registered webhook endpoint.\n\n登録済みWebhook endpointの識別子です。",
            "in": "path",
            "name": "webhook_id",
            "required": true,
            "schema": {
              "example": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "created_at": "2026-08-08T10:00:00.000Z",
                      "description": "Warehouse review pipeline",
                      "enabled": true,
                      "events": [
                        "video.indexed",
                        "run.completed"
                      ],
                      "id": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "updated_at": "2026-08-08T10:09:00.000Z",
                      "url": "https://hooks.example.com/deepframe"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointDto"
                }
              }
            },
            "description": "Webhook endpoint returned without its signing secret.\n\nsigning secretを除くWebhook endpointを返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get a webhook endpoint\n\nWebhook endpointを取得",
        "tags": [
          "Webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "patch": {
        "description": "Changes a webhook endpoint: its URL, which events it receives, its description, or whether it is enabled.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_WEBHOOKS` permission.\n- **URL rules:** a new URL passes the same checks as at creation - HTTPS, no credentials, and a public address only.\n- **Retries:** `Idempotency-Key` applies to POST endpoints only, so repeating a PATCH is not deduplicated. Send it again only when you know the state you want.\n\nAfter changing the events or the enabled flag, check the delivery history to confirm the endpoint now behaves as you intended.\n\nWebhook endpointのURL、受信するevent、説明、有効・無効を変更します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_WEBHOOKS`権限。\n- **URLの条件:** 新しいURLは作成時と同じ検査を受けます。HTTPSであること、credentialを含まないこと、publicなアドレスであること。\n- **再試行:** `Idempotency-Key`はPOSTのみが対象のため、PATCHの再送は重複排除されません。目的の状態が分かっている場合にのみ再送してください。\n\neventや有効・無効を変更した後は、配信履歴を確認して意図どおりの動作になったことを確かめてください。",
        "operationId": "update-webhook",
        "parameters": [
          {
            "description": "Identifier of a registered webhook endpoint.\n\n登録済みWebhook endpointの識別子です。",
            "in": "path",
            "name": "webhook_id",
            "required": true,
            "schema": {
              "example": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "description": "Warehouse staging review pipeline",
                    "enabled": true,
                    "events": [
                      "video.failed",
                      "run.completed"
                    ],
                    "url": "https://hooks.example.com/deepframe-v2"
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "created_at": "2026-08-08T10:00:00.000Z",
                      "description": "Warehouse review pipeline",
                      "enabled": true,
                      "events": [
                        "video.indexed",
                        "run.completed"
                      ],
                      "id": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "updated_at": "2026-08-08T10:09:00.000Z",
                      "url": "https://hooks.example.com/deepframe"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointDto"
                }
              }
            },
            "description": "Webhook endpoint updated without returning its signing secret.\n\nsigning secretを返さずWebhook endpointを更新しました。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Update a webhook endpoint\n\nWebhook endpointを更新",
        "tags": [
          "Webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"url\": \"https://hooks.example.com/deepframe-v2\",\n  \"description\": \"Warehouse staging review pipeline\",\n  \"events\": [\n    \"video.failed\",\n    \"run.completed\"\n  ],\n  \"enabled\": true\n}`\n\n\treq, err := http.NewRequest(\"PATCH\", \"https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"url\": \"https://hooks.example.com/deepframe-v2\",\n      \"description\": \"Warehouse staging review pipeline\",\n      \"events\": [\n        \"video.failed\",\n        \"run.completed\"\n      ],\n      \"enabled\": true\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"url\": \"https://hooks.example.com/deepframe-v2\",\n  \"description\": \"Warehouse staging review pipeline\",\n  \"events\": [\n    \"video.failed\",\n    \"run.completed\"\n  ],\n  \"enabled\": true\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Patch.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\n\nrequest.body = <<~JSON\n  {\n    \"url\": \"https://hooks.example.com/deepframe-v2\",\n    \"description\": \"Warehouse staging review pipeline\",\n    \"events\": [\n      \"video.failed\",\n      \"run.completed\"\n    ],\n    \"enabled\": true\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/webhooks/{webhook_id}/deliveries": {
      "get": {
        "description": "Returns the delivery attempts DeepFrame has made to one endpoint, newest first. This is where you look when an endpoint stops receiving events.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_WEBHOOKS` permission.\n- **Paging:** `limit` defaults to 25, maximum 100. Pass `next_cursor` back unchanged as `cursor`.\n- **Each record shows:** `event_id`, `event_type`, `status`, `attempts`, `next_attempt_at`, and the status code of the last response when there was one. The payload and the signing secret are never included.\n\nWhen an attempt has been given up on, you can queue a fresh one with `POST /api/v1alpha1/webhooks/{webhook_id}/deliveries/{delivery_id}/redeliver`.\n\n1つのendpointに対する配信の試行を、新しい順に返します。endpointがeventを受け取れなくなったときは、ここを確認します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_WEBHOOKS`権限。\n- **ページング:** `limit`の既定値は25、最大は100。`next_cursor`をそのまま`cursor`として渡します。\n- **各recordの内容:** `event_id`、`event_type`、`status`、`attempts`、`next_attempt_at`、および応答があった場合は直近のstatus code。payloadとsigning secretは含まれません。\n\n試行が打ち切られた配信は、`POST /api/v1alpha1/webhooks/{webhook_id}/deliveries/{delivery_id}/redeliver`で改めて実行できます。",
        "operationId": "list-webhook-deliveries",
        "parameters": [
          {
            "description": "Identifier of a registered webhook endpoint.\n\n登録済みWebhook endpointの識別子です。",
            "in": "path",
            "name": "webhook_id",
            "required": true,
            "schema": {
              "example": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Opaque cursor returned as next_cursor by the previous response. Pass it byte-for-byte as cursor; do not decode, edit, or construct it.\n\n前の応答のnext_cursorとして返されたopaqueなcursorです。decode、編集、組み立てをせず、そのままcursorとして渡してください。",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
              "examples": [
                "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of resources to return in one page. The default is 25 and the accepted range is 1-100.\n\n1ページで返すresource数です。既定値は25で、1から100まで指定できます。",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "example": 25,
              "examples": [
                25
              ],
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "data": [
                        {
                          "attempts": 1,
                          "created_at": "2026-08-08T10:00:01.000Z",
                          "endpoint_id": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "event_id": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "event_type": "video.indexed",
                          "id": "delivery_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "next_attempt_at": "2026-08-08T10:05:00.000Z",
                          "response_status": 200,
                          "status": "delivered"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookDeliveryPageDto"
                }
              }
            },
            "description": "Delivery attempts returned in a cursor envelope.\n\ndelivery attemptをcursor envelopeで返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List webhook deliveries\n\nWebhook deliveryを一覧表示",
        "tags": [
          "Webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/deliveries\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/deliveries\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/deliveries');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/deliveries')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/webhooks/{webhook_id}/deliveries/{delivery_id}/redeliver": {
      "post": {
        "description": "Queues one past delivery to be sent again. Use it after you have fixed whatever made the endpoint fail.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_WEBHOOKS` permission.\n- **Effect:** the attempt counter goes back to zero and the record stops being final, so the delivery is treated as new.\n- **Response:** 202. The response comes back before the new attempt runs.\n- **Retries:** send an `Idempotency-Key` if your caller may repeat the POST.\n\nWatch `GET /api/v1alpha1/webhooks/{webhook_id}/deliveries` for the outcome of the new attempt.\n\n過去の配信を1件、もう一度送信するようqueueに入れます。endpoint側の問題を解消した後に使います。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_WEBHOOKS`権限。\n- **動作:** 試行回数が0に戻り、recordは最終状態ではなくなるため、新規の配信として扱われます。\n- **応答:** 202。新しい試行の実行前に返ります。\n- **再試行:** callerがPOSTを再送する可能性がある場合は`Idempotency-Key`を指定してください。\n\n新しい試行の結果は`GET /api/v1alpha1/webhooks/{webhook_id}/deliveries`で確認してください。",
        "operationId": "redeliver-webhook",
        "parameters": [
          {
            "description": "Identifier of a registered webhook endpoint.\n\n登録済みWebhook endpointの識別子です。",
            "in": "path",
            "name": "webhook_id",
            "required": true,
            "schema": {
              "example": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Identifier of one delivery attempt, as returned by the delivery history.\n\n個々の配信試行の識別子です。delivery historyで返ります。",
            "in": "path",
            "name": "delivery_id",
            "required": true,
            "schema": {
              "example": "delivery_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "delivery_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "attempts": 2,
                      "created_at": "2026-08-08T10:00:01.000Z",
                      "endpoint_id": "wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "event_id": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "event_type": "video.indexed",
                      "id": "delivery_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "next_attempt_at": "2026-08-08T10:10:00.000Z",
                      "response_status": 202,
                      "status": "delivered"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/WebhookDeliveryDto"
                }
              }
            },
            "description": "Redelivery accepted and queued.\n\n再配信を受け付け、queueに入れました。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Redeliver a webhook\n\nWebhookを再配信",
        "tags": [
          "Webhooks"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/deliveries/delivery_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/redeliver\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Idempotency-Key\", \"redeliver-webhook-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/deliveries/delivery_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/redeliver\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Idempotency-Key\", \"redeliver-webhook-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/deliveries/delivery_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/redeliver');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Idempotency-Key: redeliver-webhook-01',\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/webhooks/wh_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/deliveries/delivery_0190b5d4-7e1f-7a2b-9c3d-1234567890ab/redeliver')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Idempotency-Key'] = 'redeliver-webhook-01'\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/workflows": {
      "get": {
        "description": "Returns the workflows this API key has created in the workspace, most recently updated first.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_RULEBOOKS` permission.\n- **Paging:** `limit` defaults to 25, maximum 100. Pass `next_cursor` back unchanged as `cursor`.\n\nTake an `id` from the list and pass it to `POST /api/v1alpha1/runs` as `workflow_id` when starting a workflow run. Analysis runs do not require a workflow; they accept an analysis profile and report template directly.\n\nこのAPI keyがワークスペース内で作成したworkflowを、更新が新しい順に返します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_RULEBOOKS`権限。\n- **ページング:** `limit`の既定値は25、最大は100。`next_cursor`をそのまま`cursor`として渡します。\n\n一覧の`id`を`workflow_id`として`POST /api/v1alpha1/runs`に渡すのはworkflow runを開始するときです。analysis runではworkflowは必要なく、analysis profileとreport templateを直接指定します。",
        "operationId": "list-workflows",
        "parameters": [
          {
            "description": "Opaque cursor returned as next_cursor by the previous response. Pass it byte-for-byte as cursor; do not decode, edit, or construct it.\n\n前の応答のnext_cursorとして返されたopaqueなcursorです。decode、編集、組み立てをせず、そのままcursorとして渡してください。",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "example": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA",
              "examples": [
                "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of resources to return in one page. The default is 25 and the accepted range is 1-100.\n\n1ページで返すresource数です。既定値は25で、1から100まで指定できます。",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 25,
              "example": 25,
              "examples": [
                25
              ],
              "format": "int32",
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "data": [
                        {
                          "created_at": "2026-08-10T10:05:00.000Z",
                          "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "latest_run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "name": "Warehouse safety review",
                          "output_modes": [
                            "report"
                          ],
                          "playbook": "Review every indexed scene.",
                          "rule_set_version_id": "snap_7ef3a4b2c1d0",
                          "rulebook_id": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                          "source_ids": [
                            "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                          ],
                          "status": "draft",
                          "template_type": "media_review",
                          "updated_at": "2026-08-10T10:06:00.000Z"
                        }
                      ],
                      "has_more": false,
                      "next_cursor": "MDEyMzQ1Njc4OWFitSLKnTQIcJAwDPi07V5EGs76Im3F8rCuUshrBnHuUJY7_8Ie8Stea_TKuhKhDw5XkRdkBI3IKkvsKT9Kp60Wpx7CoTCGQW8FnalDILVbuy8wxvWWf_B8SA"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaWorkflowPageDto"
                }
              }
            },
            "description": "Workflows returned in a cursor envelope.\n\nworkflowをcursor envelopeで返します。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "List workflows\n\nworkflowを一覧表示",
        "tags": [
          "Workflows"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/workflows\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/workflows\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/workflows');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/workflows')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      },
      "post": {
        "description": "Creates a workflow: a rulebook bound to the videos you want checked against it. Workflow runs use this workflow; analysis runs can use an analysis profile and report template directly.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_RULEBOOKS` permission.\n- **Send:** a `rulebook_id` this key can reach - one it owns, or a shared template.\n- **Retries:** an optional `Idempotency-Key` makes a repeated call safe.\n- **Not found:** a `rulebook_id` or a `source_ids` entry you cannot reach is deliberately indistinguishable from one that does not exist.\n\nPass the returned `id` to `POST /api/v1alpha1/runs` as `workflow_id` to start a workflow run. Analysis runs instead accept an analysis profile and report template directly.\n\nworkflowを作成します。workflowは、rulebookと、それを適用する動画を結び付けたものです。workflow runはこのworkflowを使い、analysis runではanalysis profileとreport templateを直接指定できます。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_RULEBOOKS`権限。\n- **送信する内容:** このkeyが参照できる`rulebook_id`。所有するrulebookか、共有テンプレートです。\n- **再試行:** 任意の`Idempotency-Key`により、再送を安全に扱えます。\n- **見つからない場合:** 参照できない`rulebook_id`や`source_ids`の要素は、存在しない場合と意図的に区別できません。\n\n返された`id`を`workflow_id`として`POST /api/v1alpha1/runs`に渡すとworkflow runが始まります。analysis runではanalysis profileとreport templateを直接指定します。",
        "operationId": "create-workflow",
        "parameters": [
          {
            "description": "Optional key for safe retry of this POST. The key is retained for 24 hours and compared with the request payload and concrete path parameters.\n\nこのPOSTを安全にretryするための任意のkeyです。keyは24時間保持され、request payloadと具体的なpath parameterと比較されます。",
            "in": "header",
            "name": "Idempotency-Key",
            "required": false,
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "request": {
                  "summary": "Request example",
                  "value": {
                    "name": "Warehouse safety review",
                    "output_modes": [
                      "report"
                    ],
                    "playbook": "Review every indexed scene.",
                    "rulebook_id": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                    "source_ids": [
                      "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    ],
                    "status": "draft",
                    "template_type": "media_review"
                  }
                }
              },
              "schema": {
                "$ref": "#/components/schemas/CreateAlphaWorkflowDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "created_at": "2026-08-10T10:05:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "latest_run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "name": "Warehouse safety review",
                      "output_modes": [
                        "report"
                      ],
                      "playbook": "Review every indexed scene.",
                      "rule_set_version_id": "snap_7ef3a4b2c1d0",
                      "rulebook_id": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "source_ids": [
                        "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                      ],
                      "status": "draft",
                      "template_type": "media_review",
                      "updated_at": "2026-08-10T10:06:00.000Z"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaWorkflowDto"
                }
              }
            },
            "description": "The created workflow.\n\n作成されたworkflowです。",
            "headers": {
              "Location": {
                "description": "Relative URL of the created or accepted resource.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Create a workflow\n\nworkflowを作成",
        "tags": [
          "Workflows"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc main() {\n\tbody := `{\n  \"name\": \"Warehouse safety review\",\n  \"rulebook_id\": \"rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n  \"template_type\": \"media_review\",\n  \"source_ids\": [\n    \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n  ],\n  \"playbook\": \"Review every indexed scene.\",\n  \"output_modes\": [\n    \"report\"\n  ],\n  \"status\": \"draft\"\n}`\n\n\treq, err := http.NewRequest(\"POST\", \"https://api.deepframe.cloud/api/v1alpha1/workflows\", strings.NewReader(body))\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\treq.Header.Set(\"Idempotency-Key\", \"create-workflow-01\")\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nString body = \"\"\"\n    {\n      \"name\": \"Warehouse safety review\",\n      \"rulebook_id\": \"rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n      \"template_type\": \"media_review\",\n      \"source_ids\": [\n        \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n      ],\n      \"playbook\": \"Review every indexed scene.\",\n      \"output_modes\": [\n        \"report\"\n      ],\n      \"status\": \"draft\"\n    }\"\"\";\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/workflows\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .header(\"Content-Type\", \"application/json\")\n    .header(\"Idempotency-Key\", \"create-workflow-01\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(body))\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$body = <<<'JSON'\n{\n  \"name\": \"Warehouse safety review\",\n  \"rulebook_id\": \"rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n  \"template_type\": \"media_review\",\n  \"source_ids\": [\n    \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n  ],\n  \"playbook\": \"Review every indexed scene.\",\n  \"output_modes\": [\n    \"report\"\n  ],\n  \"status\": \"draft\"\n}\nJSON;\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/workflows');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n        'Content-Type: application/json',\n        'Idempotency-Key: create-workflow-01',\n    ],\n    CURLOPT_POSTFIELDS => $body,\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/workflows')\nrequest = Net::HTTP::Post.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\nrequest['Content-Type'] = 'application/json'\nrequest['Idempotency-Key'] = 'create-workflow-01'\n\nrequest.body = <<~JSON\n  {\n    \"name\": \"Warehouse safety review\",\n    \"rulebook_id\": \"rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\",\n    \"template_type\": \"media_review\",\n    \"source_ids\": [\n      \"vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"\n    ],\n    \"playbook\": \"Review every indexed scene.\",\n    \"output_modes\": [\n      \"report\"\n    ],\n    \"status\": \"draft\"\n  }\nJSON\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    },
    "/api/v1alpha1/workflows/{workflow_id}": {
      "get": {
        "description": "Returns one workflow, including the rulebook it is bound to and the videos it covers.\n\n- **Access:** an alpha-enabled API key with the `MANAGE_RULEBOOKS` permission.\n- **Not found:** a workflow belonging to somebody else is deliberately indistinguishable from one that does not exist.\n\n1件のworkflowを、紐付いたrulebookと対象の動画とあわせて返します。\n\n- **アクセス:** alphaを有効にしたAPI keyと`MANAGE_RULEBOOKS`権限。\n- **見つからない場合:** 他者が所有するworkflowは、存在しない場合と意図的に区別できません。",
        "operationId": "get-workflow",
        "parameters": [
          {
            "description": "Identifier of a workflow your key can read.\n\nこのkeyが読み取れるworkflowの識別子です。",
            "in": "path",
            "name": "workflow_id",
            "required": true,
            "schema": {
              "example": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
              "examples": [
                "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "examples": {
                  "response": {
                    "summary": "Success response example",
                    "value": {
                      "created_at": "2026-08-10T10:05:00.000Z",
                      "created_by": "user_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "latest_run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "name": "Warehouse safety review",
                      "output_modes": [
                        "report"
                      ],
                      "playbook": "Review every indexed scene.",
                      "rule_set_version_id": "snap_7ef3a4b2c1d0",
                      "rulebook_id": "rb_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "source_ids": [
                        "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                      ],
                      "status": "draft",
                      "template_type": "media_review",
                      "updated_at": "2026-08-10T10:06:00.000Z"
                    }
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/AlphaWorkflowDto"
                }
              }
            },
            "description": "The workflow with its rulebook binding.\n\nrulebookとの紐付けを含むworkflowです。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request was rejected before it ran, because a field failed validation, the cursor could not be read, or the webhook URL is not allowed. Problem types: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked).\n\nフィールドの検証エラー、読み取れないcursor、許可されないWebhook URLなどにより、リクエストは実行前に拒否されました。 問題タイプ: [bad-request](https://developers.deepframe.cloud/errors/bad-request), [validation-error](https://developers.deepframe.cloud/errors/validation-error), [invalid-cursor](https://developers.deepframe.cloud/errors/invalid-cursor), [ssrf-blocked](https://developers.deepframe.cloud/errors/ssrf-blocked)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is missing, invalid, expired, inactive, or not linked to an organization. Problem type: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized).\n\nAPI キーが存在しない、不正、期限切れ、無効（inactive）、または組織（organization）に紐づいていません。 問題タイプ: [unauthorized](https://developers.deepframe.cloud/errors/unauthorized)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The API key is valid, but this operation is not allowed: the workspace is not opted in to Public API Alpha, the key lacks the permission the route requires, or the account is limited by billing or trial state. Problem type: [forbidden](https://developers.deepframe.cloud/errors/forbidden).\n\nAPI キーは有効ですが、この操作は許可されていません。ワークスペースがPublic API Alphaにオプトインしていないか、ルートが要求する権限をキーが持っていないか、課金またはトライアルの状態により制限されています。 問題タイプ: [forbidden](https://developers.deepframe.cloud/errors/forbidden)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The resource does not exist, it belongs to another workspace, or the key does not have alpha access. Problem type: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found).\n\nリソースが存在しないか、他のワークスペースに属しているか、キーにalphaアクセス権限がありません。 問題タイプ: [resource-not-found](https://developers.deepframe.cloud/errors/resource-not-found)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request conflicts with the current state of the resource, or the same Idempotency-Key is still in flight. Problem types: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight).\n\nリソースの現在の状態と競合しているか、同じIdempotency-Keyの処理が進行中です。 問題タイプ: [conflict](https://developers.deepframe.cloud/errors/conflict), [idempotency-in-flight](https://developers.deepframe.cloud/errors/idempotency-in-flight)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "422": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "The request is understood but cannot be processed, or the same Idempotency-Key was reused with a different payload. Problem types: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch).\n\nリクエストは解釈できましたが処理できません。または、同じIdempotency-Keyが異なるpayloadで再利用されました。 問題タイプ: [unprocessable-entity](https://developers.deepframe.cloud/errors/unprocessable-entity), [idempotency-payload-mismatch](https://developers.deepframe.cloud/errors/idempotency-payload-mismatch)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Too many requests. Wait for the interval in Retry-After before trying again. Problem type: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded).\n\nリクエストが多すぎます。Retry-Afterの間隔だけ待ってから再試行してください。 問題タイプ: [rate-limit-exceeded](https://developers.deepframe.cloud/errors/rate-limit-exceeded)。",
            "headers": {
              "Retry-After": {
                "description": "Seconds to wait before retrying.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "Something went wrong on the DeepFrame side. Quote request_id if you contact support. Problem type: [internal-error](https://developers.deepframe.cloud/errors/internal-error).\n\nDeepFrame側で問題が発生しました。サポートに問い合わせる場合はrequest_idをお知らせください。 問題タイプ: [internal-error](https://developers.deepframe.cloud/errors/internal-error)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "503": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetailsDto"
                }
              }
            },
            "description": "A service DeepFrame depends on is unavailable. Retry later. Problem type: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable).\n\nDeepFrameが依存するサービスを利用できません。時間をおいて再試行してください。 問題タイプ: [service-unavailable](https://developers.deepframe.cloud/errors/service-unavailable)。",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "Effective per-key request limit for the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "Requests remaining in the current rate window.",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "Unix timestamp in seconds when the current rate window resets.",
                "schema": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKey": []
          }
        ],
        "summary": "Get a workflow\n\nworkflowを取得",
        "tags": [
          "Workflows"
        ],
        "x-codeSamples": [
          {
            "label": "Go",
            "lang": "go",
            "source": "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n)\n\nfunc main() {\n\treq, err := http.NewRequest(\"GET\", \"https://api.deepframe.cloud/api/v1alpha1/workflows/wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Authorization\", \"Bearer \"+os.Getenv(\"DEEPFRAME_API_KEY\"))\n\n\tres, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer res.Body.Close()\n\n\tout, err := io.ReadAll(res.Body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(res.Status)\n\tfmt.Println(string(out))\n}"
          },
          {
            "label": "Java",
            "lang": "java",
            "source": "import java.net.URI;\nimport java.net.http.HttpClient;\nimport java.net.http.HttpRequest;\nimport java.net.http.HttpResponse;\n\nHttpRequest request = HttpRequest.newBuilder()\n    .uri(URI.create(\"https://api.deepframe.cloud/api/v1alpha1/workflows/wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab\"))\n    .header(\"Authorization\", \"Bearer \" + System.getenv(\"DEEPFRAME_API_KEY\"))\n    .GET()\n    .build();\n\nHttpResponse<String> response = HttpClient.newHttpClient()\n    .send(request, HttpResponse.BodyHandlers.ofString());\n\nSystem.out.println(response.statusCode());\nSystem.out.println(response.body());"
          },
          {
            "label": "PHP",
            "lang": "php",
            "source": "<?php\n\n$ch = curl_init('https://api.deepframe.cloud/api/v1alpha1/workflows/wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab');\ncurl_setopt_array($ch, [\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => [\n        'Authorization: Bearer ' . getenv('DEEPFRAME_API_KEY'),\n    ],\n]);\n\n$response = curl_exec($ch);\necho curl_getinfo($ch, CURLINFO_HTTP_CODE), PHP_EOL;\necho $response, PHP_EOL;\ncurl_close($ch);"
          },
          {
            "label": "Ruby",
            "lang": "ruby",
            "source": "require 'net/http'\nrequire 'uri'\n\nuri = URI('https://api.deepframe.cloud/api/v1alpha1/workflows/wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab')\nrequest = Net::HTTP::Get.new(uri)\nrequest['Authorization'] = \"Bearer #{ENV.fetch('DEEPFRAME_API_KEY')}\"\n\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|\n  http.request(request)\nend\n\nputs response.code\nputs response.body"
          }
        ]
      }
    }
  },
  "servers": [
    {
      "url": "https://api.deepframe.cloud"
    },
    {
      "url": "https://api.dev.deepframe.cloud"
    }
  ],
  "tags": [
    {
      "description": "Video upload intents and indexed video reads.\n\n動画のアップロードセッションとインデックス済み動画の取得です。",
      "name": "Videos"
    },
    {
      "description": "Asynchronous workflow and analysis run lifecycle.\n\n非同期のworkflow runとanalysis run（分析ラン）のライフサイクルです。",
      "name": "Runs"
    },
    {
      "description": "Evidence-backed workflow findings.\n\nエビデンスに基づくワークフローの検出結果（Finding）です。",
      "name": "Findings"
    },
    {
      "description": "Ranked indexed video search.\n\nインデックス済み動画の順位付き検索です。",
      "name": "Search"
    },
    {
      "description": "Server-held conversation sessions and their principal scope.\n\nサーバー保持型の会話sessionとprincipal scopeです。",
      "name": "Sessions"
    },
    {
      "description": "Asynchronous conversation queries and persisted answers.\n\n非同期の会話queryと保存済みanswerです。",
      "name": "Queries"
    },
    {
      "description": "Tenant webhook endpoints and delivery history.\n\nワークスペースの Webhook エンドポイントと配信履歴です。",
      "name": "Webhooks"
    },
    {
      "description": "The rules a run checks a video against, written directly or imported from CSV.\n\n分析ラン（Run）で動画を評価するためのルールです。直接作成するか、CSV ファイルからインポートします。",
      "name": "Rulebooks"
    },
    {
      "description": "A rulebook bound to the videos it applies to. Workflow runs start from a workflow; analysis runs use an analysis profile and report template directly.\n\nルールブックと適用対象の動画を紐付けたものです。workflow runはworkflowから開始し、analysis run（分析ラン）はanalysis profileとreport templateを直接指定します。",
      "name": "Workflows"
    },
    {
      "description": "Reusable versioned analysis profiles.\n\n再利用できるversion付きanalysis profileです。",
      "name": "Profiles"
    },
    {
      "description": "Reusable versioned report templates.\n\n再利用できるversion付きreport templateです。",
      "name": "Report Templates"
    },
    {
      "description": "Durable evidence links for saved reports.\n\n保存済みレポートのための永続的なエビデンスリンクです。",
      "name": "Evidence"
    },
    {
      "description": "Immutable analysis report artifacts and presentation renders.",
      "name": "Reports"
    }
  ],
  "webhooks": {
    "run.canceled": {
      "post": {
        "description": "DeepFrame sends this event after run.canceled changes state.",
        "operationId": "webhook-run-canceled",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "event": {
                  "summary": "run.canceled event",
                  "value": {
                    "created_at": "2026-08-08T10:05:00.000Z",
                    "data": {
                      "run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "status": "cancelled",
                      "workflow_id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    },
                    "id": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                    "type": "run.canceled"
                  }
                }
              },
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AlphaWebhookRunCanceledEventDto"
                  },
                  {
                    "$ref": "#/components/schemas/AlphaWebhookEventEnvelopeDto"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The recipient accepted the webhook."
          }
        },
        "summary": "run.canceled webhook",
        "tags": [
          "Webhooks"
        ]
      }
    },
    "run.completed": {
      "post": {
        "description": "DeepFrame sends this event after run.completed changes state.",
        "operationId": "webhook-run-completed",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "event": {
                  "summary": "run.completed event",
                  "value": {
                    "created_at": "2026-08-08T10:05:00.000Z",
                    "data": {
                      "case_id": "case_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "report_id": "rep_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "result_state": "found",
                      "run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "status": "completed",
                      "workflow_id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    },
                    "id": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                    "type": "run.completed"
                  }
                }
              },
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AlphaWebhookRunCompletedEventDto"
                  },
                  {
                    "$ref": "#/components/schemas/AlphaWebhookEventEnvelopeDto"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The recipient accepted the webhook."
          }
        },
        "summary": "run.completed webhook",
        "tags": [
          "Webhooks"
        ]
      }
    },
    "run.failed": {
      "post": {
        "description": "DeepFrame sends this event after run.failed changes state.",
        "operationId": "webhook-run-failed",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "event": {
                  "summary": "run.failed event",
                  "value": {
                    "created_at": "2026-08-08T10:05:00.000Z",
                    "data": {
                      "error": {
                        "code": "execution_failed",
                        "detail": "The asynchronous operation failed while processing the request.",
                        "next_action": "Retry the operation if it is safe to repeat.",
                        "title": "Execution failed"
                      },
                      "error_message": "The asynchronous operation failed while processing the request.",
                      "result_state": "error",
                      "run_id": "run_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                      "status": "failed",
                      "workflow_id": "wf_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    },
                    "id": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                    "type": "run.failed"
                  }
                }
              },
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AlphaWebhookRunFailedEventDto"
                  },
                  {
                    "$ref": "#/components/schemas/AlphaWebhookEventEnvelopeDto"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The recipient accepted the webhook."
          }
        },
        "summary": "run.failed webhook",
        "tags": [
          "Webhooks"
        ]
      }
    },
    "video.failed": {
      "post": {
        "description": "DeepFrame sends this event after video.failed changes state.",
        "operationId": "webhook-video-failed",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "event": {
                  "summary": "video.failed event",
                  "value": {
                    "created_at": "2026-08-08T10:05:00.000Z",
                    "data": {
                      "error": {
                        "code": "processing_failed",
                        "detail": "The video could not be processed.",
                        "next_action": "Upload the video again.",
                        "title": "Video processing failed"
                      },
                      "error_message": "The video could not be processed.",
                      "status": "failed",
                      "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    },
                    "id": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                    "type": "video.failed"
                  }
                }
              },
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AlphaWebhookVideoFailedEventDto"
                  },
                  {
                    "$ref": "#/components/schemas/AlphaWebhookEventEnvelopeDto"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The recipient accepted the webhook."
          }
        },
        "summary": "video.failed webhook",
        "tags": [
          "Webhooks"
        ]
      }
    },
    "video.indexed": {
      "post": {
        "description": "DeepFrame sends this event after video.indexed changes state.",
        "operationId": "webhook-video-indexed",
        "requestBody": {
          "content": {
            "application/json": {
              "examples": {
                "event": {
                  "summary": "video.indexed event",
                  "value": {
                    "created_at": "2026-08-08T10:05:00.000Z",
                    "data": {
                      "status": "completed",
                      "video_id": "vid_0190b5d4-7e1f-7a2b-9c3d-1234567890ab"
                    },
                    "id": "evt_0190b5d4-7e1f-7a2b-9c3d-1234567890ab",
                    "type": "video.indexed"
                  }
                }
              },
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/AlphaWebhookVideoIndexedEventDto"
                  },
                  {
                    "$ref": "#/components/schemas/AlphaWebhookEventEnvelopeDto"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "The recipient accepted the webhook."
          }
        },
        "summary": "video.indexed webhook",
        "tags": [
          "Webhooks"
        ]
      }
    }
  }
}
