RealtimeEvent.fromJson constructor

RealtimeEvent.fromJson(
  1. Map<String, dynamic> json
)

Creates a RealtimeEvent from JSON.

Implementation

factory RealtimeEvent.fromJson(Map<String, dynamic> json) {
  final type = json['type'] as String;

  // Session events
  if (type == 'session.created') {
    return SessionCreatedEvent.fromJson(json);
  }
  if (type == 'session.updated') {
    return SessionUpdatedEvent.fromJson(json);
  }

  // Conversation events
  if (type == 'conversation.created') {
    return ConversationCreatedEvent.fromJson(json);
  }
  if (type == 'conversation.item.created') {
    return ConversationItemCreatedEvent.fromJson(json);
  }
  if (type == 'conversation.item.deleted') {
    return ConversationItemDeletedEvent.fromJson(json);
  }
  if (type == 'conversation.item.truncated') {
    return ConversationItemTruncatedEvent.fromJson(json);
  }

  // Input audio transcription events
  if (type == 'conversation.item.input_audio_transcription.delta') {
    return InputAudioTranscriptionDeltaEvent.fromJson(json);
  }
  if (type == 'conversation.item.input_audio_transcription.completed') {
    return InputAudioTranscriptionCompletedEvent.fromJson(json);
  }
  if (type == 'conversation.item.input_audio_transcription.failed') {
    return InputAudioTranscriptionFailedEvent.fromJson(json);
  }
  if (type == 'conversation.item.input_audio_transcription.segment') {
    return InputAudioTranscriptionSegmentEvent.fromJson(json);
  }

  // Input audio events
  if (type == 'input_audio_buffer.committed') {
    return InputAudioBufferCommittedEvent.fromJson(json);
  }
  if (type == 'input_audio_buffer.cleared') {
    return InputAudioBufferClearedEvent.fromJson(json);
  }
  if (type == 'input_audio_buffer.speech_started') {
    return InputAudioBufferSpeechStartedEvent.fromJson(json);
  }
  if (type == 'input_audio_buffer.speech_stopped') {
    return InputAudioBufferSpeechStoppedEvent.fromJson(json);
  }

  // Response events
  if (type == 'response.created') {
    return ResponseCreatedEvent.fromJson(json);
  }
  if (type == 'response.done') {
    return ResponseDoneEvent.fromJson(json);
  }
  if (type == 'response.output_item.added') {
    return ResponseOutputItemAddedEvent.fromJson(json);
  }
  if (type == 'response.output_item.done') {
    return ResponseOutputItemDoneEvent.fromJson(json);
  }
  if (type == 'response.content_part.added') {
    return ResponseContentPartAddedEvent.fromJson(json);
  }
  if (type == 'response.content_part.done') {
    return ResponseContentPartDoneEvent.fromJson(json);
  }
  if (type == 'response.text.delta') {
    return ResponseTextDeltaEvent.fromJson(json);
  }
  if (type == 'response.text.done') {
    return ResponseTextDoneEvent.fromJson(json);
  }
  if (type == 'response.audio_transcript.delta') {
    return ResponseAudioTranscriptDeltaEvent.fromJson(json);
  }
  if (type == 'response.audio_transcript.done') {
    return ResponseAudioTranscriptDoneEvent.fromJson(json);
  }
  if (type == 'response.audio.delta') {
    return ResponseAudioDeltaEvent.fromJson(json);
  }
  if (type == 'response.audio.done') {
    return ResponseAudioDoneEvent.fromJson(json);
  }
  if (type == 'response.function_call_arguments.delta') {
    return ResponseFunctionCallArgumentsDeltaEvent.fromJson(json);
  }
  if (type == 'response.function_call_arguments.done') {
    return ResponseFunctionCallArgumentsDoneEvent.fromJson(json);
  }

  // Rate limit event
  if (type == 'rate_limits.updated') {
    return RateLimitsUpdatedEvent.fromJson(json);
  }

  // Error event
  if (type == 'error') {
    return ErrorEvent.fromJson(json);
  }

  throw FormatException('Unknown realtime event type: $type');
}