vCon Specification

Complete reference for the IETF vCon (Virtual Conversation) standard.

Overview

Specification: draft-ietf-vcon-vcon-core-00 Version: 0.3.0 Working Group: IETF vCon WG Status: Internet-Draft Full Text: ../background_docs/draft-ietf-vcon-vcon-core-00.txtarrow-up-right

The vCon (Virtual Conversation) is a standard container format for storing conversation data in a structured, interoperable way. It supports voice calls, video meetings, text chats, emails, and other communication forms.


Table of Contents


Core Concepts

What is a vCon?

A vCon is a JSON object that contains:

  • Metadata - Subject, timestamps, identifiers

  • Parties - Participants in the conversation

  • Dialog - The actual conversation content (audio, text, video)

  • Attachments - Supporting files and metadata (tags, notes)

  • Analysis - AI/ML analysis results (transcripts, sentiment, summary)

Key Principles

  1. Self-contained - All conversation data in one object

  2. Interoperable - Standard format across systems

  3. Extensible - Support for custom data via extensions

  4. Secure - Support for signing (JWS) and encryption (JWE)

  5. Flexible - Support for any communication medium

Use Cases

  • Call recording storage - Phone, video, web calls

  • Chat archival - Text conversations, emails

  • Compliance - GDPR, CCPA, HIPAA record keeping

  • Analytics - Conversation intelligence and insights

  • Training - Agent training data

  • Legal - Dispute resolution and evidence


Main vCon Object

Section 4.1 of the IETF spec defines the top-level vCon structure.

Required Fields

Optional Fields

Field Definitions

vcon (string, required)

Version of the vCon specification. Current version is "0.3.0".

uuid (string, required)

Unique identifier for the vCon. Must be a valid UUID per RFC 4122.

created_at (string, required)

When the vCon was created. ISO 8601 format with timezone.

subject (string, optional)

Human-readable title or subject for the conversation.

extensions (array, optional)

Section 4.1.3 - List of extension identifiers this vCon uses.

must_support (array, optional)

Section 4.1.4 - Extensions that MUST be understood to process this vCon.


Party Object

Section 4.2 - Represents a participant in the conversation.

Structure

Examples

Phone call participant:

Email participant:

Full featured party:


Dialog Object

Section 4.3 - Represents conversation content.

Required Fields

Optional Fields

Dialog Types

recording

Audio or video recording of the conversation.

text

Text-based conversation (chat, SMS, email body).

transfer

Reference to another vCon (call transfer, forwarding).

incomplete

Partial or failed conversation.


Attachment Object

Section 4.4 - Supporting files and metadata.

Structure

Common Attachment Types

Tags Attachment

Special attachment type for key-value metadata (used by search).

Document Attachment

Supporting document or file.

Note Attachment

Human-added notes or annotations.


Analysis Object

Section 4.5 - AI/ML analysis results.

Required Fields

Optional Fields

Critical Corrections

⚠️ Common Mistakes:

  1. Using schema_version - WRONG. Use schema (Section 4.5.6)

  2. Making vendor optional - WRONG. It's REQUIRED (Section 4.5.5)

  3. Using object type for body - WRONG. Use string (Section 4.5.7)

Examples

Transcript analysis:

Sentiment analysis:

Summary:


Encoding Options

Section 4.3.6, 4.4.7, 4.5.8 - Content encoding types.

none

Raw text content, no encoding.

base64url

Base64 URL-safe encoding (RFC 4648).

json

JSON-formatted content.

Important

⚠️ NO DEFAULT VALUES - encoding field should NOT have a default value in database schema or type definitions. It must be explicitly set.


Extensions

Section 4.1.3, 4.1.4 - Supporting custom functionality.

extensions Array

List of extension identifiers used in this vCon.

must_support Array

Extensions that MUST be understood to process this vCon correctly.

Processing Rules:

  1. If a vCon has must_support entries you don't understand, reject it

  2. If a vCon has extensions you don't understand, you MAY process it

  3. Always preserve unrecognized extension data


Security

Signing (JWS)

vCons can be signed using JSON Web Signature (JWS):

Encryption (JWE)

vCons can be encrypted using JSON Web Encryption (JWE):

Content Hashing

All content fields (body, url) can have content_hash for verification:


Complete Example

Minimal vCon:

Full-featured vCon:


Validation Rules

Required Validations

  1. vcon field must be "0.3.0"

  2. uuid must be valid UUID format

  3. created_at must be ISO 8601 timestamp

  4. parties array must have at least one party

  5. ✅ Dialog type must be one of 4 valid types

  6. ✅ Analysis vendor must be provided

Reference Validations

  1. ✅ Party indexes in dialog.parties must be valid

  2. ✅ Dialog indexes in analysis.dialog must be valid

  3. ✅ Party indexes in attachment.party must be valid

  4. ✅ Dialog indexes in attachment.dialog must be valid

Format Validations

  1. ✅ Timestamps must be ISO 8601 with timezone

  2. ✅ UUIDs must be RFC 4122 format

  3. encoding must be one of: none, base64url, json

  4. ✅ Phone numbers should be E.164 format


Additional Resources


This reference is based on draft-ietf-vcon-vcon-core-00 and reflects all corrections identified in IMPLEMENTATION_CORRECTIONS.mdarrow-up-right.

Last updated