Complete reference for the IETF vCon (Virtual Conversation) standard.
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
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)
Self-contained - All conversation data in one object
Interoperable - Standard format across systems
Extensible - Support for custom data via extensions
Secure - Support for signing (JWS) and encryption (JWE)
Flexible - Support for any communication medium
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.
Section 4.2 - Represents a participant in the conversation.
Phone call participant:
Email participant:
Full featured party:
Section 4.3 - Represents conversation content.
Required Fields
Optional Fields
Audio or video recording of the conversation.
Text-based conversation (chat, SMS, email body).
Reference to another vCon (call transfer, forwarding).
Partial or failed conversation.
Attachment Object
Section 4.4 - Supporting files and metadata.
Common Attachment Types
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:
Using schema_version - WRONG. Use schema (Section 4.5.6)
Making vendor optional - WRONG. It's REQUIRED (Section 4.5.5)
Using object type for body - WRONG. Use string (Section 4.5.7)
Transcript analysis:
Sentiment analysis:
Summary:
Encoding Options
Section 4.3.6, 4.4.7, 4.5.8 - Content encoding types.
Raw text content, no encoding.
Base64 URL-safe encoding (RFC 4648).
JSON-formatted content.
⚠️ NO DEFAULT VALUES - encoding field should NOT have a default value in database schema or type definitions. It must be explicitly set.
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:
If a vCon has must_support entries you don't understand, reject it
If a vCon has extensions you don't understand, you MAY process it
Always preserve unrecognized extension data
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
✅ vcon field must be "0.3.0"
✅ uuid must be valid UUID format
✅ created_at must be ISO 8601 timestamp
✅ parties array must have at least one party
✅ Dialog type must be one of 4 valid types
✅ Analysis vendor must be provided
Reference Validations
✅ Party indexes in dialog.parties must be valid
✅ Dialog indexes in analysis.dialog must be valid
✅ Party indexes in attachment.party must be valid
✅ Dialog indexes in attachment.dialog must be valid
✅ Timestamps must be ISO 8601 with timezone
✅ UUIDs must be RFC 4122 format
✅ encoding must be one of: none, base64url, json
✅ Phone numbers should be E.164 format
Additional Resources
IETF Working Group: https://datatracker.ietf.org/wg/vcon/
This reference is based on draft-ietf-vcon-vcon-core-00 and reflects all corrections identified in IMPLEMENTATION_CORRECTIONS.md arrow-up-right .
Last updated 3 months ago