{
  "openapi": "3.1.0",
  "info": {
    "title": "ReplyCam API",
    "version": "1.0.0",
    "description": "ReplyCam owner API for creating projects, retrieving links and submissions, exporting project data, and fetching authenticated media. Includes dashboard-token convenience routes for read-only project exports and shared-link QR PNGs."
  },
  "servers": [
    {
      "url": "https://replycam.com"
    }
  ],
  "tags": [
    {
      "name": "Owner API",
      "description": "Bearer-token endpoints for project owners."
    },
    {
      "name": "Dashboard token routes",
      "description": "Read-only routes scoped by private project dashboard token."
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "API token"
      }
    },
    "parameters": {
      "ProjectId": {
        "name": "projectId",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "SubmissionId": {
        "name": "submissionId",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      },
      "ProjectToken": {
        "name": "projectToken",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "Limit": {
        "name": "limit",
        "in": "query",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100
        }
      },
      "Cursor": {
        "name": "cursor",
        "in": "query",
        "schema": {
          "type": "string"
        }
      },
      "Selected": {
        "name": "selected",
        "in": "query",
        "schema": {
          "type": "boolean"
        }
      },
      "TranscriptStatus": {
        "name": "transcriptStatus",
        "in": "query",
        "schema": {
          "type": "string",
          "enum": [
            "pending",
            "processing",
            "completed",
            "failed",
            "disabled"
          ]
        }
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "error": {
            "type": "string"
          }
        },
        "required": [
          "error"
        ]
      },
      "ApiUser": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "string",
            "format": "uuid"
          },
          "userName": {
            "type": "string"
          },
          "videoLimit": {
            "type": [
              "integer",
              "null"
            ]
          },
          "videosReserved": {
            "type": "integer"
          },
          "reservedVideoCount": {
            "type": "integer"
          },
          "remainingVideos": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "userId",
          "userName",
          "videoLimit",
          "videosReserved",
          "reservedVideoCount",
          "remainingVideos"
        ]
      },
      "ProjectStats": {
        "type": "object",
        "properties": {
          "videosCreated": {
            "type": "integer"
          },
          "selectedVideos": {
            "type": "integer"
          },
          "transcriptCompleted": {
            "type": "integer"
          },
          "transcriptPending": {
            "type": "integer"
          },
          "transcriptFailed": {
            "type": "integer"
          },
          "uniqueLinksTotal": {
            "type": "integer"
          },
          "uniqueLinksRemaining": {
            "type": "integer"
          },
          "sharedLinksTotal": {
            "type": "integer"
          },
          "sharedUsesRemaining": {
            "type": "integer"
          },
          "totalResponseCapacity": {
            "type": "integer"
          },
          "responseSlotsUsed": {
            "type": "integer"
          },
          "responseSlotsRemaining": {
            "type": "integer"
          }
        },
        "required": [
          "videosCreated",
          "selectedVideos",
          "transcriptCompleted",
          "transcriptPending",
          "transcriptFailed",
          "uniqueLinksTotal",
          "uniqueLinksRemaining",
          "sharedLinksTotal",
          "sharedUsesRemaining",
          "totalResponseCapacity",
          "responseSlotsUsed",
          "responseSlotsRemaining"
        ]
      },
      "RecipientLink": {
        "type": "object",
        "properties": {
          "tokenId": {
            "type": "string",
            "format": "uuid"
          },
          "token": {
            "type": "string"
          },
          "linkType": {
            "type": "string",
            "enum": [
              "unique",
              "shared"
            ]
          },
          "status": {
            "type": "string"
          },
          "maxUses": {
            "type": "integer"
          },
          "submissionCount": {
            "type": "integer"
          },
          "remainingUses": {
            "type": "integer"
          },
          "openedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "submittedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "recipientUrl": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "tokenId",
          "token",
          "linkType",
          "status",
          "maxUses",
          "submissionCount",
          "remainingUses",
          "openedAt",
          "submittedAt",
          "expiresAt",
          "createdAt",
          "recipientUrl"
        ]
      },
      "SharedRecipientLink": {
        "allOf": [
          {
            "$ref": "#/components/schemas/RecipientLink"
          },
          {
            "type": "object",
            "properties": {
              "qrCodePngUrl": {
                "type": "string",
                "format": "uri"
              }
            },
            "required": [
              "qrCodePngUrl"
            ]
          }
        ]
      },
      "Submission": {
        "type": "object",
        "properties": {
          "submissionId": {
            "type": "string",
            "format": "uuid"
          },
          "videoId": {
            "type": "string",
            "format": "uuid"
          },
          "tokenId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "projectName": {
            "type": "string"
          },
          "responseSessionId": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "questionIndex": {
            "type": [
              "integer",
              "null"
            ]
          },
          "questionText": {
            "type": [
              "string",
              "null"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "durationSec": {
            "type": [
              "integer",
              "null"
            ]
          },
          "fileSize": {
            "type": [
              "integer",
              "null"
            ]
          },
          "mimeType": {
            "type": [
              "string",
              "null"
            ]
          },
          "note": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewNote": {
            "type": [
              "string",
              "null"
            ]
          },
          "selected": {
            "type": "boolean"
          },
          "transcriptStatus": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "pending",
              "processing",
              "completed",
              "failed",
              "disabled",
              null
            ]
          },
          "transcriptText": {
            "type": [
              "string",
              "null"
            ]
          },
          "transcriptVtt": {
            "type": [
              "string",
              "null"
            ]
          },
          "transcriptError": {
            "type": [
              "string",
              "null"
            ]
          },
          "termsAccepted": {
            "type": "boolean"
          },
          "transcriptTextUrl": {
            "type": "string",
            "format": "uri"
          },
          "transcriptVttUrl": {
            "type": "string",
            "format": "uri"
          },
          "videoUrl": {
            "type": "string",
            "format": "uri"
          },
          "thumbnailStartUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "thumbnailMiddleUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "thumbnailEndUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "audioUrl": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          }
        },
        "required": [
          "submissionId",
          "videoId",
          "tokenId",
          "projectId",
          "projectName",
          "responseSessionId",
          "questionIndex",
          "questionText",
          "createdAt",
          "durationSec",
          "fileSize",
          "mimeType",
          "note",
          "reviewNote",
          "selected",
          "transcriptStatus",
          "transcriptText",
          "transcriptVtt",
          "transcriptError",
          "termsAccepted",
          "transcriptTextUrl",
          "transcriptVttUrl",
          "videoUrl",
          "thumbnailStartUrl",
          "thumbnailMiddleUrl",
          "thumbnailEndUrl",
          "audioUrl"
        ]
      },
      "ProjectSummary": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "format": "uuid"
          },
          "projectName": {
            "type": "string"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "expiresAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "maxDurationSec": {
            "type": "integer"
          },
          "transcriptionEnabled": {
            "type": "boolean"
          },
          "noteEnabled": {
            "type": "boolean"
          },
          "interviewEnabled": {
            "type": "boolean"
          },
          "questionCount": {
            "type": "integer"
          },
          "webhookEnabled": {
            "type": "boolean"
          },
          "requireTerms": {
            "type": "boolean"
          },
          "showSuccessDialog": {
            "type": "boolean"
          },
          "stats": {
            "$ref": "#/components/schemas/ProjectStats"
          }
        },
        "required": [
          "projectId",
          "projectName",
          "createdAt",
          "expiresAt",
          "maxDurationSec",
          "transcriptionEnabled",
          "noteEnabled",
          "interviewEnabled",
          "questionCount",
          "webhookEnabled",
          "requireTerms",
          "showSuccessDialog",
          "stats"
        ]
      },
      "ProjectDetail": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProjectSummary"
          },
          {
            "type": "object",
            "properties": {
              "requestUrl": {
                "type": "string"
              },
              "webhookUrl": {
                "type": "string"
              },
              "sharedLinkEnabled": {
                "type": "boolean"
              },
              "sharedLinkMaxUses": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "termsLabel": {
                "type": "string"
              },
              "termsText": {
                "type": "string"
              },
              "interviewQuestions": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "successMessage": {
                "type": "string"
              }
            },
            "required": [
              "requestUrl",
              "webhookUrl",
              "sharedLinkEnabled",
              "sharedLinkMaxUses",
              "termsLabel",
              "termsText",
              "interviewQuestions",
              "successMessage"
            ]
          }
        ]
      }
    }
  },
  "paths": {
    "/api/me": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "getCurrentApiUser",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Current API user and token context.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "userId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "userName": {
                      "type": "string"
                    },
                    "tokenId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "tokenLabel": {
                      "type": "string"
                    },
                    "scopes": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "videoLimit": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "videosReserved": {
                      "type": "integer"
                    },
                    "remainingVideos": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "listProjects",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "responses": {
          "200": {
            "description": "Projects owned by the current API token.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "projects": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ProjectSummary"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Owner API"
        ],
        "operationId": "createProject",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "projectName": {
                    "type": "string"
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "expiresInDays": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "expiresInHours": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "neverExpire": {
                    "type": "boolean"
                  },
                  "sharedLinkEnabled": {
                    "type": "boolean"
                  },
                  "sharedLinkMaxUses": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "maxDurationSec": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "transcriptionEnabled": {
                    "type": "boolean"
                  },
                  "noteEnabled": {
                    "type": "boolean"
                  },
                  "requestUrl": {
                    "type": "string",
                    "format": "uri"
                  },
                  "webhookUrl": {
                    "type": "string",
                    "format": "uri"
                  },
                  "webhookSecret": {
                    "type": "string"
                  },
                  "requireTerms": {
                    "type": "boolean"
                  },
                  "termsLabel": {
                    "type": "string"
                  },
                  "termsText": {
                    "type": "string"
                  },
                  "interviewQuestions": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "showSuccessDialog": {
                    "type": "boolean"
                  },
                  "successMessage": {
                    "type": "string"
                  }
                },
                "required": [
                  "projectName",
                  "count"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Project created successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "projectId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "projectName": {
                      "type": "string"
                    },
                    "projectToken": {
                      "type": "string"
                    },
                    "dashboardUrl": {
                      "type": "string",
                      "format": "uri"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "maxDurationSec": {
                      "type": "integer"
                    },
                    "transcriptionEnabled": {
                      "type": "boolean"
                    },
                    "noteEnabled": {
                      "type": "boolean"
                    },
                    "requestUrl": {
                      "type": "string"
                    },
                    "interviewEnabled": {
                      "type": "boolean"
                    },
                    "questionCount": {
                      "type": "integer"
                    },
                    "interviewQuestions": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "webhookEnabled": {
                      "type": "boolean"
                    },
                    "sharedLinkEnabled": {
                      "type": "boolean"
                    },
                    "sharedLinkMaxUses": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "sharedLink": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/SharedRecipientLink"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "apiUser": {
                      "$ref": "#/components/schemas/ApiUser"
                    },
                    "recipientUrls": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/RecipientLink"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "getProject",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          }
        ],
        "responses": {
          "200": {
            "description": "Project detail.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetail"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Owner API"
        ],
        "operationId": "updateProject",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "projectName": {
                    "type": "string"
                  },
                  "maxDurationSec": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "expiresInDays": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "expiresInHours": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "neverExpire": {
                    "type": "boolean"
                  },
                  "sharedLinkMaxUses": {
                    "type": "integer",
                    "minimum": 1
                  },
                  "transcriptionEnabled": {
                    "type": "boolean"
                  },
                  "noteEnabled": {
                    "type": "boolean"
                  },
                  "requestUrl": {
                    "type": "string",
                    "format": "uri"
                  },
                  "webhookUrl": {
                    "type": "string",
                    "format": "uri"
                  },
                  "webhookSecret": {
                    "type": "string"
                  },
                  "requireTerms": {
                    "type": "boolean"
                  },
                  "termsLabel": {
                    "type": "string"
                  },
                  "termsText": {
                    "type": "string"
                  },
                  "interviewQuestions": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "showSuccessDialog": {
                    "type": "boolean"
                  },
                  "successMessage": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated project detail.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProjectDetail"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/links": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "getProjectLinks",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          }
        ],
        "responses": {
          "200": {
            "description": "Shared and unique recipient links for the project.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "projectId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "sharedLink": {
                      "anyOf": [
                        {
                          "$ref": "#/components/schemas/SharedRecipientLink"
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "recipientUrls": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/RecipientLink"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/shared-link/qr.png": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "getSharedLinkQrPng",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          }
        ],
        "responses": {
          "200": {
            "description": "PNG QR code for the reusable shared link.",
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/submissions": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "listProjectSubmissions",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          },
          {
            "$ref": "#/components/parameters/Limit"
          },
          {
            "$ref": "#/components/parameters/Cursor"
          },
          {
            "$ref": "#/components/parameters/Selected"
          },
          {
            "$ref": "#/components/parameters/TranscriptStatus"
          }
        ],
        "responses": {
          "200": {
            "description": "Paginated project submissions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "projectId": {
                      "type": "string",
                      "format": "uuid"
                    },
                    "submissions": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Submission"
                      }
                    },
                    "pagination": {
                      "type": "object",
                      "properties": {
                        "nextCursor": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/export.json": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "exportProjectJson",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          }
        ],
        "responses": {
          "200": {
            "description": "JSON export bundle for the project.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/export.csv": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "exportProjectCsv",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          }
        ],
        "responses": {
          "200": {
            "description": "CSV export for the project.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/export/project.zip": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "exportProjectBundleZip",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          },
          {
            "$ref": "#/components/parameters/Selected"
          },
          {
            "$ref": "#/components/parameters/TranscriptStatus"
          }
        ],
        "responses": {
          "200": {
            "description": "ZIP archive of the full project export bundle.",
            "content": {
              "application/zip": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/export/transcripts.txt": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "exportProjectTranscripts",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          },
          {
            "$ref": "#/components/parameters/Selected"
          },
          {
            "$ref": "#/components/parameters/TranscriptStatus"
          }
        ],
        "responses": {
          "200": {
            "description": "Plain-text transcript bundle.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/submissions/{submissionId}/transcript.txt": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "getSubmissionTranscriptText",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          },
          {
            "$ref": "#/components/parameters/SubmissionId"
          }
        ],
        "responses": {
          "200": {
            "description": "Transcript text download.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/submissions/{submissionId}/transcript.vtt": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "getSubmissionTranscriptVtt",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          },
          {
            "$ref": "#/components/parameters/SubmissionId"
          }
        ],
        "responses": {
          "200": {
            "description": "Transcript VTT download.",
            "content": {
              "text/vtt": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/submissions/{submissionId}/video": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "getSubmissionVideo",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          },
          {
            "$ref": "#/components/parameters/SubmissionId"
          }
        ],
        "responses": {
          "200": {
            "description": "Video asset.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/submissions/{submissionId}/thumbnail-start": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "getSubmissionThumbnailStart",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          },
          {
            "$ref": "#/components/parameters/SubmissionId"
          }
        ],
        "responses": {
          "200": {
            "description": "Start thumbnail.",
            "content": {
              "image/jpeg": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/submissions/{submissionId}/thumbnail-middle": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "getSubmissionThumbnailMiddle",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          },
          {
            "$ref": "#/components/parameters/SubmissionId"
          }
        ],
        "responses": {
          "200": {
            "description": "Middle thumbnail.",
            "content": {
              "image/jpeg": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/submissions/{submissionId}/thumbnail-end": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "getSubmissionThumbnailEnd",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          },
          {
            "$ref": "#/components/parameters/SubmissionId"
          }
        ],
        "responses": {
          "200": {
            "description": "End thumbnail.",
            "content": {
              "image/jpeg": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/api/projects/{projectId}/submissions/{submissionId}/audio": {
      "get": {
        "tags": [
          "Owner API"
        ],
        "operationId": "getSubmissionAudio",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectId"
          },
          {
            "$ref": "#/components/parameters/SubmissionId"
          }
        ],
        "responses": {
          "200": {
            "description": "Audio asset.",
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/project/{projectToken}/shared-link/qr.png": {
      "get": {
        "tags": [
          "Dashboard token routes"
        ],
        "operationId": "getDashboardSharedLinkQrPng",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectToken"
          }
        ],
        "responses": {
          "200": {
            "description": "PNG QR code resolved from the private project dashboard token.",
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/project/{projectToken}/export.json": {
      "get": {
        "tags": [
          "Dashboard token routes"
        ],
        "operationId": "exportDashboardProjectJson",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectToken"
          }
        ],
        "responses": {
          "200": {
            "description": "Dashboard-scoped JSON export.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/project/{projectToken}/export.csv": {
      "get": {
        "tags": [
          "Dashboard token routes"
        ],
        "operationId": "exportDashboardProjectCsv",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectToken"
          }
        ],
        "responses": {
          "200": {
            "description": "Dashboard-scoped CSV export.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/project/{projectToken}/export/project.zip": {
      "get": {
        "tags": [
          "Dashboard token routes"
        ],
        "operationId": "exportDashboardProjectBundleZip",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectToken"
          }
        ],
        "responses": {
          "200": {
            "description": "Dashboard-scoped ZIP archive of the full project export bundle.",
            "content": {
              "application/zip": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          }
        }
      }
    },
    "/project/{projectToken}/export/transcripts.txt": {
      "get": {
        "tags": [
          "Dashboard token routes"
        ],
        "operationId": "exportDashboardProjectTranscripts",
        "parameters": [
          {
            "$ref": "#/components/parameters/ProjectToken"
          }
        ],
        "responses": {
          "200": {
            "description": "Dashboard-scoped transcript bundle.",
            "content": {
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  }
}