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.txt
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
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
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:
Using
schema_version- WRONG. Useschema(Section 4.5.6)Making
vendoroptional - WRONG. It's REQUIRED (Section 4.5.5)Using
objecttype forbody- WRONG. Usestring(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:
If a vCon has
must_supportentries you don't understand, reject itIf a vCon has
extensionsyou don't understand, you MAY process itAlways 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
✅
vconfield must be"0.3.0"✅
uuidmust be valid UUID format✅
created_atmust be ISO 8601 timestamp✅
partiesarray must have at least one party✅ Dialog
typemust be one of 4 valid types✅ Analysis
vendormust be provided
Reference Validations
✅ Party indexes in
dialog.partiesmust be valid✅ Dialog indexes in
analysis.dialogmust be valid✅ Party indexes in
attachment.partymust be valid✅ Dialog indexes in
attachment.dialogmust be valid
Format Validations
✅ Timestamps must be ISO 8601 with timezone
✅ UUIDs must be RFC 4122 format
✅
encodingmust be one of:none,base64url,json✅ Phone numbers should be E.164 format
Additional Resources
Full Specification: ../background_docs/draft-ietf-vcon-vcon-core-00.txt
Privacy Primer: ../background_docs/draft-ietf-vcon-privacy-primer-00.txt
IETF Working Group: https://datatracker.ietf.org/wg/vcon/
Quick Reference: QUICK_REFERENCE.md
Database Schema: CORRECTED_SCHEMA.md
This reference is based on draft-ietf-vcon-vcon-core-00 and reflects all corrections identified in IMPLEMENTATION_CORRECTIONS.md.
Last updated