{
  "openapi": "3.0.1",
  "info": {
    "title": "Vatis Export Service",
    "description": "Vatis Export Service API",
    "version": "1.0"
  },
  "servers": [
    {
      "url": "https://export-service.vatis.tech",
      "description": "Default server"
    }
  ],
  "paths": {
    "/export-service/api/v1/export/{exportFormat}": {
      "get": {
        "summary": "Export",
        "description": "Exports results of one or more streams in various formats",
        "operationId": "export",
        "parameters": [
          {
            "name": "exportFormat",
            "in": "path",
            "description": "Export format",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "JSON",
                "TEXT"
              ]
            }
          },
          {
            "name": "streams",
            "in": "query",
            "description": "List of stream ids for watching",
            "schema": {
              "type": "array"
            }
          },
          {
            "name": "streamsInclusion",
            "in": "query",
            "description": "Inclusion mode for the streams. When using 'EXCLUDE' the 'group' and 'count' must be specified",
            "schema": {
              "type": "string",
              "enum": [
                "INCLUDE",
                "EXCLUDE"
              ]
            }
          },
          {
            "name": "group",
            "in": "query",
            "description": "Group id of the streams",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "count",
            "in": "query",
            "description": "Number of streams to search. Used when the included streams are not specified",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "tags",
            "in": "query",
            "description": "List of tags to match",
            "schema": {
              "type": "array",
              "default": "main"
            }
          },
          {
            "name": "matchTags",
            "in": "query",
            "description": "Match mode for the tags. 'ALL' matches all tags, 'ANY' matches any tag.",
            "schema": {
              "type": "string",
              "enum": [
                "ALL",
                "ANY"
              ]
            }
          },
          {
            "name": "timeout",
            "in": "query",
            "description": "Timeout for the stream creation in milliseconds. If not specified, the maximum timeout allowed by the server will be used.",
            "schema": {
              "type": "integer",
              "format": "int64"
            }
          },
          {
            "name": "omitPayload",
            "in": "query",
            "description": "Exclude the payload from the result. If true, the payload value will be set to 'null'. This is compatible only with 'EVENTS' format.",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Export response",
            "content": {
              "application/json - AudioIntelligenceResponseDto": {
                "schema": {
                  "$ref": "#/components/schemas/AudioIntelligenceResponseDto"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "204": {
            "description": "Export was successful but no data was present on the stream"
          },
          "default": {
            "description": "Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerToken": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "statusCode": {
            "type": "integer",
            "format": "int32"
          },
          "title": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "internalErrorName": {
            "type": "string"
          },
          "nestedErrors": {
            "type": "array",
            "items": {
              "type": "object"
            }
          }
        }
      },
      "AskAnythingDto": {
        "type": "object",
        "properties": {
          "promptId": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "responseFormatSpecification": {
            "type": "string"
          }
        }
      },
      "AudioIntelligenceResponseDto": {
        "type": "object",
        "properties": {
          "transcription": {
            "$ref": "#/components/schemas/TranscriptionDto"
          },
          "utterances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UtteranceDto"
            }
          },
          "summary": {
            "$ref": "#/components/schemas/SummaryDto"
          },
          "askAnything": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/AskAnythingDto"
            }
          },
          "sentimentAnalysis": {
            "$ref": "#/components/schemas/SentimentAnalysisDto"
          },
          "enhancedTranscription": {
            "$ref": "#/components/schemas/EnhancedTranscriptionDto"
          }
        }
      },
      "EnhancedTranscriptionDto": {
        "type": "object",
        "properties": {
          "transcription": {
            "$ref": "#/components/schemas/TranscriptionDto"
          },
          "utterances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UtteranceDto"
            }
          }
        }
      },
      "SentimentAnalysisChannelSummaryDto": {
        "type": "object",
        "properties": {
          "channel": {
            "type": "integer",
            "format": "int32"
          },
          "negativeCount": {
            "type": "integer",
            "format": "int32"
          },
          "positiveCount": {
            "type": "integer",
            "format": "int32"
          },
          "neutralCount": {
            "type": "integer",
            "format": "int32"
          },
          "averageScore": {
            "type": "number",
            "format": "double"
          },
          "sentiment": {
            "type": "string",
            "enum": [
              "negative",
              "neutral",
              "positive"
            ]
          }
        }
      },
      "SentimentAnalysisContentDto": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "sentiment": {
            "type": "string",
            "enum": [
              "negative",
              "neutral",
              "positive"
            ]
          },
          "channel": {
            "type": "integer",
            "format": "int32"
          },
          "startTime": {
            "type": "integer",
            "format": "int64"
          },
          "endTime": {
            "type": "integer",
            "format": "int64"
          },
          "score": {
            "type": "number",
            "format": "double"
          }
        }
      },
      "SentimentAnalysisDto": {
        "type": "object",
        "properties": {
          "segments": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SentimentAnalysisContentDto"
            }
          },
          "summary": {
            "$ref": "#/components/schemas/SentimentAnalysisSummaryDto"
          }
        }
      },
      "SentimentAnalysisSummaryDto": {
        "type": "object",
        "properties": {
          "channels": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SentimentAnalysisChannelSummaryDto"
            }
          },
          "negativeCount": {
            "type": "integer",
            "format": "int32"
          },
          "positiveCount": {
            "type": "integer",
            "format": "int32"
          },
          "neutralCount": {
            "type": "integer",
            "format": "int32"
          },
          "averageScore": {
            "type": "number",
            "format": "double"
          },
          "sentiment": {
            "type": "string",
            "enum": [
              "negative",
              "neutral",
              "positive"
            ]
          }
        }
      },
      "SummaryDto": {
        "type": "object",
        "properties": {
          "content": {
            "type": "string"
          }
        }
      },
      "TranscriptionDto": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string"
          },
          "words": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranscriptionWordDto"
            }
          }
        }
      },
      "TranscriptionWordDto": {
        "type": "object",
        "properties": {
          "word": {
            "type": "string"
          },
          "start": {
            "type": "integer",
            "format": "int64"
          },
          "end": {
            "type": "integer",
            "format": "int64"
          },
          "confidence": {
            "type": "number",
            "format": "float"
          },
          "language": {
            "type": "string"
          },
          "speakers": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "speakersOverlap": {
            "type": "boolean"
          },
          "channel": {
            "type": "string"
          }
        }
      },
      "UtteranceDto": {
        "type": "object",
        "properties": {
          "speakerIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "overlap": {
            "type": "boolean"
          },
          "channel": {
            "type": "string"
          },
          "start": {
            "type": "integer",
            "format": "int64"
          },
          "end": {
            "type": "integer",
            "format": "int64"
          },
          "text": {
            "type": "string"
          },
          "words": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TranscriptionWordDto"
            }
          }
        }
      }
    },
    "securitySchemes": {
      "bearerToken": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}
