Visioconference · Schema

Video Conference Meeting

Common schema for a video conference meeting or session across video conferencing platforms

AudioChatCollaborationCommunicationConferencingLive StreamingReal-TimeRemote WorkScreen SharingVideoWebRTC

Properties

Name Type Description
id string Unique meeting identifier on the platform
topic string Meeting title or topic
status string Current status of the meeting
hostId string User ID of the meeting host
hostEmail string Email address of the meeting host
joinUrl string URL for participants to join the meeting
password string Meeting password or passcode
startTime string Scheduled or actual start time in UTC
endTime string Scheduled or actual end time in UTC
duration integer Meeting duration in minutes
timezone string IANA timezone for the meeting (e.g., America/New_York)
agenda string Meeting agenda or description
settings object Meeting configuration settings
participants array List of invited or joined participants
recording object
View JSON Schema on GitHub

JSON Schema

visioconference-meeting-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/visioconference/main/json-schema/visioconference-meeting-schema.json",
  "title": "Video Conference Meeting",
  "description": "Common schema for a video conference meeting or session across video conferencing platforms",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Unique meeting identifier on the platform"
    },
    "topic": {
      "type": "string",
      "description": "Meeting title or topic"
    },
    "status": {
      "type": "string",
      "description": "Current status of the meeting",
      "enum": [
        "waiting",
        "started",
        "ended",
        "cancelled"
      ]
    },
    "hostId": {
      "type": "string",
      "description": "User ID of the meeting host"
    },
    "hostEmail": {
      "type": "string",
      "format": "email",
      "description": "Email address of the meeting host"
    },
    "joinUrl": {
      "type": "string",
      "format": "uri",
      "description": "URL for participants to join the meeting"
    },
    "password": {
      "type": "string",
      "description": "Meeting password or passcode"
    },
    "startTime": {
      "type": "string",
      "format": "date-time",
      "description": "Scheduled or actual start time in UTC"
    },
    "endTime": {
      "type": "string",
      "format": "date-time",
      "description": "Scheduled or actual end time in UTC"
    },
    "duration": {
      "type": "integer",
      "description": "Meeting duration in minutes"
    },
    "timezone": {
      "type": "string",
      "description": "IANA timezone for the meeting (e.g., America/New_York)"
    },
    "agenda": {
      "type": "string",
      "description": "Meeting agenda or description"
    },
    "settings": {
      "type": "object",
      "description": "Meeting configuration settings",
      "properties": {
        "video": {
          "type": "object",
          "properties": {
            "hostVideoOn": {
              "type": "boolean",
              "description": "Whether host video is on by default"
            },
            "participantVideoOn": {
              "type": "boolean",
              "description": "Whether participant video is on by default"
            }
          }
        },
        "audio": {
          "type": "object",
          "properties": {
            "muteOnEntry": {
              "type": "boolean",
              "description": "Mute participants when they enter"
            }
          }
        },
        "recording": {
          "type": "object",
          "properties": {
            "autoRecord": {
              "type": "boolean",
              "description": "Automatically record the meeting"
            },
            "recordingType": {
              "type": "string",
              "enum": ["local", "cloud", "none"]
            }
          }
        },
        "waitingRoom": {
          "type": "boolean",
          "description": "Enable waiting room for participants"
        },
        "maxParticipants": {
          "type": "integer",
          "description": "Maximum number of participants"
        }
      }
    },
    "participants": {
      "type": "array",
      "description": "List of invited or joined participants",
      "items": {
        "$ref": "#/$defs/participant"
      }
    },
    "recording": {
      "$ref": "#/$defs/recording"
    }
  },
  "required": ["id", "topic", "joinUrl"],
  "$defs": {
    "participant": {
      "type": "object",
      "description": "A participant in a video conference meeting",
      "properties": {
        "id": {
          "type": "string",
          "description": "Participant identifier"
        },
        "name": {
          "type": "string",
          "description": "Display name"
        },
        "email": {
          "type": "string",
          "format": "email"
        },
        "role": {
          "type": "string",
          "enum": ["host", "co-host", "participant", "panelist", "attendee"]
        },
        "joinTime": {
          "type": "string",
          "format": "date-time"
        },
        "leaveTime": {
          "type": "string",
          "format": "date-time"
        },
        "status": {
          "type": "string",
          "enum": ["waiting", "in_meeting", "left"]
        }
      },
      "required": ["id", "name"]
    },
    "recording": {
      "type": "object",
      "description": "Meeting recording information",
      "properties": {
        "id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": ["processing", "completed", "failed", "deleted"]
        },
        "downloadUrl": {
          "type": "string",
          "format": "uri"
        },
        "duration": {
          "type": "integer",
          "description": "Recording duration in minutes"
        },
        "fileSize": {
          "type": "integer",
          "description": "File size in bytes"
        }
      }
    }
  }
}