Internet-Draft JSON vCon July 2026
Petrie Expires 2 January 2027 [Page]
Workgroup:
Virtualized Conversations
Internet-Draft:
draft-ietf-vcon-vcon-core-03
Published:
Intended Status:
Standards Track
Expires:
Author:
D. G Petrie
SIPez LLC

The JSON format for vCon - Conversation Data Container

Abstract

vCon is a standardized framework for the exchange of conversational data. Conversations, which may involve one or more participants, occur across a wide variety of modes and application platforms. This document defines a JSON format for representing conversational data, encompassing metadata, conversation media, related documents, and analysis. The goal of this standard is to provide an abstracted, platform-independent data format for conversations, regardless of the mode or application platform. By doing so, it facilitates the integration and seamless exchange of conversational data across application platforms, enterprises, and trust boundaries.

About This Document

This note is to be removed before publishing as an RFC.

The latest revision of this draft can be found at https://ietf-wg-vcon.github.io/draft-ietf-vcon-vcon-core/draft-ietf-vcon-vcon-core.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-ietf-vcon-vcon-core/.

Discussion of this document takes place on the Virtualized Conversations Working Group mailing list (mailto:vcon@ietf.org), which is archived at https://mailarchive.ietf.org/arch/browse/vcon/. Subscribe at https://www.ietf.org/mailman/listinfo/vcon/.

Source for this draft and an issue tracker can be found at https://github.com/ietf-wg-vcon/draft-ietf-vcon-vcon-core.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 2 January 2027.

Table of Contents

1. Introduction

This document specifies the vCon (Conversational Data Exchange) standard, which defines a unified format for representing and exchanging conversational data across different communication platforms and modalities. The goal of vCon is to provide a standardized, platform-agnostic structure for capturing and sharing conversational information, allowing for seamless integration between systems, enterprises, and trust boundaries.

1.1. Purpose of vCon

The vCon standard enables the abstraction of conversation data, making it easier to integrate communication platforms with external services, including post-conversation analysis tools, customer support systems, and business intelligence platforms. By defining a consistent data format, vCon ensures interoperability across various platforms, regardless of the communication mode - whether text, audio, video, or other formats.

The vCon format captures the essential components of a conversation, including metadata, media content, related documents, and post-conversation analysis. This abstraction simplifies data exchange, apply AI-driven analysis, as well as model training and testing.

1.2. Extending the vCon Schema

In addition to the core vCon schema, this document provides a framework for extending the vCon format to support specialized use cases. The vCon schema can be customized to address the needs of specific industries or applications, such as:

  • Contact Centers: Adding specific metadata related to customer service interactions, case management, and priority tracking.

  • Messaging Platforms: Supporting the integration of different message formats, including SMS, email, and chat, group concepts, along with platform-specific information.

  • ECRIT (Emergency Communication) Centers: Extending the schema to capture critical data such as location, urgency, and incident details for emergency communications.

The ability to add extensions ensure that vCon remains flexible and adaptable, enabling its use in a wide range of domains while maintaining a consistent format for data exchange.

1.3. Benefits of vCon

The vCon standard offers several key benefits:

  • Interoperability: A consistent data format for conversational data facilitates integration across diverse platforms and systems.

  • AI-Driven Analysis: By capturing data in a structured format, vCon enables the application of AI analysis such as sentiment analysis, categorization, transcription, and decision-making.

  • Data Automation: The vCon format simplifies the automation of processes involving conversational data, improving efficiency and reducing the risk of errors.

  • Enterprise Integration: The ability to integrate conversation data with third-party tools and services enhances the value of conversations by providing deeper insights and driving business decisions.

1.4. Scope of the Document

This document defines the core structure and schema for vCon as a JSON format. Detailed specifications for the various parameters and the extension framework will be provided in subsequent sections. The primary focus is on creating a flexible, extensible standard for the exchange of conversational data that can be easily adopted across industries, use cases, and communication technologies.

2. Conventions and Definitions

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

2.1. Terminology

  • analysis - analysis, transformations, summary, sentiment, or translation typically of the dialog data

  • conversation - an exchange of communication using text, audio or video medium between at least one human and one or more bots or humans

  • de-identification - removal of all information that could identify a party in a conversation. This includes PII as well as audio and video recordings. Voice recordings might be re-vocalized with a different speaker.

  • dialog - the captured conversation in its original form (e.g. text, audio or video)

  • encrypted form - encrypted JWE document with the JWS signed vCon form contained in the ciphertext

  • file - a data block either included or referenced in a vCon

  • object - JSON object containing key and value pairs

  • parameter - JSON key and value pair

  • party - an observer or participant to the conversation, either passive or active

  • payload - the contents or bytes that make up a file

  • PII - Personal Identifiable Information

  • PII masked - may include voice recordings, but PII is removed from transcripts and recordings (audio and video).

  • vCon - container for conversational information

  • vCon instance - a vCon populated with data for a specific conversation

  • vCon instance version - a single version of an instance of a conversation, which may be modified to redact or amend additional information forming a subsequent vCon instance version

  • vCon syntax version - the version for the data syntax used for form a vCon

  • signed form - JWS signed document with the unsigned vCon form contained in the payload

2.2. JSON Notation

For the ease of documentation, the convention for [JSON] notation used in this document is copied from sections 1.1-1.5 of [JMAP].

  • Date - A string that MUST have the form of an [RFC3339] date string as defined for the Date type in section 1.4 of [JMAP].

  • "*" - The type is undefined; the value can be any JSON type, although permitted values may be constrained by the context of the value, as defined in section 1.1 of [JMAP].

  • "String" - a JSON string type.

  • "UnsignedInt" - a positive JSON integer as defined in section 1.3 of [JMAP].

  • "UnsignedFloat" - a positive JSON floating point number containing a decimal point as defined in section 6 of [JSON].

  • "Mediatype" - A "String" value that MUST be of the following form as defined in section 5.1 of [MIME]:

    type "/" subtype

  • "ContentHash" - The string token value is generated using the same approach used in section 6 of [STIR-PASS]. The relevant text is copied here for convenience and to remove the normative dependency. The hash string token values are formed from combining a string that defines the crypto algorithm used to generate the digest along with the Base64Url Encoded value of the SHA-512 hash, as defined in section 6.3 and 6.4 [SHA-512], of the body of the content at the given url. The hash algorithm is identified by "sha512". SHA-512 is part of the SHA-2 set of cryptographic hash functions [SHA-512] defined by the US National Institute of Standards and Technology (NIST). Implementations MAY support additional recommended hash algorithms in [IANA-COSE-ALG]; that is, the hash algorithm has "Yes" in the "Recommended" column of the IANA registry. Hash algorithm identifiers MUST use only lowercase letters, and they MUST NOT contain hyphen characters. The character following the algorithm string MUST be a hyphen character, "-", or ASCII 45. The subsequent characters are the Base64Url encoded (see Section 2 [JWS]) digest of a canonicalized and concatenated string or binary data based on the JSON pointer referenced elements of "rcd" claim or the URI referenced content contained in the claim.

  • "SessionId" - An object with the String parameters: "local" and "remote". The String values of these parameters are UUIDs as defined in section 5 of [SESSION-ID] as "local-uuid" and "remote-uuid". This is designed to also work with the H.323 correlated [H-460-27] which refers to them as "Sender-UUID" and "Recipient-UUID".

    { "local": String, "remote": String }

  • "A[]" and array of values of type A.

All parameters are assumed to be mandatory unless other wise noted.

Objects or arrays with no or null values MAY be excluded from the vCon.

2.3. Inline Files

Objects that contain a file or data inline (i.e. within the vCon) MUST have the parameters: body and encoding. JSON does not support binary data values. For this reason inline files MUST be Base64url (see Section 2 [JWS]) encoded to be included as a valid JSON string value if they are not already valid JSON strings.

2.3.1. body

The body parameter contains the payload of the file to be included inline. Depending upon the data in the file, it may require encoding to be represented as a valid JSON value.

  • body: "*"

2.3.2. encoding

The encoding parameter describes the type of encoding, if any, that was performed to represent the file payload as the value of the body parameter. If the body parameter is provided and is not an empty string, the encoding parameter MUST be provided. In the interest of being tolerant for interoperability, if the encoding value is not provided, applications can attempt to derive the encoding token value based upon the mediatype parameter or filename extension if either is provided.

  • encoding: "String"

This MUST be one of the following strings:

  • "base64url": The payload of the file has been Base64Url encoded and provided as the string value of the body parameter.

  • "json": The value of the body parameter is a JSON value (object, array, number, string, or one of the literals true, false, or null) as defined in [JSON].

  • "none": The payload of the file is a valid JSON string and can be included without modification as the string value to the body parameter.

2.4. Externally Referenced Files

Files and data stored externally from the vCon MUST be "signed" to ensure that they have not been modified. Objects that refer to a file which is externally stored from the vCon MUST have the parameters: url, content_hash. These parameters are defined in the following subsections. The values and format of the hashes are defined in Section 2.2 type: ContentHash. The use of [SHA-512] hash for ensuring that the externally referenced data or file has not been modified, is defined in this document. Other methods of ensuring integrity may be added in the future.

2.4.1. url

The url value contains the [HTTPS] URL where the externally referenced file is stored. HTTPS MUST be used for retrieval to protect the privacy of the contents of the file.

  • url: "String"

2.4.2. content_hash

The integrity of externally referenced files are protected using a hash of the external content. The algorithm and hash value are contained in the content_hash parameter. The value of the content_hash can be a single token or an array of tokens if multiple hash algorithms are desired to be provided. The SHA-512 [SHA-512] algorithm MUST be supported. Other algorithms MAY be included. The algorithm used for signing the externally referenced file is defined in section 6.3 and 6.4 of [SHA-512].

  • content_hash: "ContentHash" | "ContentHash[]"

2.5. Extending vCon

vCon provides a means to extend the schema defined in this document. A vCon extension can define new parameters at any level of the schema. It can also redefine the semantics of or deprecate existing parameters. A vCon extension is defined in its own document. In addition to the standard sections of an Internet-Draft, a vCon extension document MUST also contain the following sections.

  • Extension Name: State the registered extensions token name for the extension. State whether and under what conditions the name appears in the extensions (Section 4.1.3) parameter, the critical (Section 4.1.4) parameter, or both. This is the name registered in the vCon Extensions Names Registry (Section 6.4) and the name against which implementations determine whether they support the extension.

  • Parameter Definitions: Define each new parameter, the level of the schema at which it appears, its value type, and its semantics. For any existing parameter whose meaning or permitted values are redefined, state the new semantics and values. For any deprecated parameter, state what is to be used in its stead and the migration approach. Use the snake case naming convention for all parameter names, as opposed to camel case. Register each new parameter in the appropriate Object registry with IANA.

  • Compatibility Considerations: Describe how the extension behaves in the presence of implementations that do not support it. Identify the parameters and semantics the extension introduces or changes, and explain for each why an implementation that does not recognize the extension can continue to process the vCon correctly by ignoring the additions, or state the conditions under which that holds. An extension that is Compatible under all conditions states so explicitly and justifies that claim.

  • Incompatibility Considerations: Demonstrate either that the extension introduces no incompatibilities, or enumerate each incompatibility that it does introduce. For each incompatibility, state the processing that is affected, for example redaction versus transcription, whether the extension name is therefore required in the critical (Section 4.1.4) parameter, and the behavior required of implementations that do not support the extension. An extension that claims to be Compatible uses this section to show why no incompatibility exists.

  • Privacy and Integrity Considerations: Describe how the extension's parameters interact with redaction and de-identification, including whether any of them can carry party-identifying data or PII and how a redactor is expected to handle them. State whether the extension introduces any new external content references, and if so, the integrity mechanism that protects them, such as Section 2.4.2.

Extensions to the vCon schema can be classified into two categories:

  • Compatible: These extensions introduce additional data or fields without altering the meaning or structure of existing elements. Implementations that do not recognize these extensions can safely ignore them while maintaining valid processing of the vCon.

  • Incompatible: These extensions modify existing semantics or schema definitions in ways that render a vCon incompatible with implementations that do not support the extension. Interpreting such a vCon correctly requires explicit awareness of the extension.

Wherever feasible, extensions SHOULD be designed as Compatible to preserve compatibility with existing implementations. The question of Compatible vs Incompatible is a little subjective. A transcriber for vCon can be fairly tolerant of changes adding new parameters or objects to a vCon. On the other hand, a redactor must be aware of the implications of all parameters in the vCon to be sure to redact all of the objective information. In these cases a transcriber will likely only need to look at the critical extensions. However the redactor perhaps should reject vCons with any extension that it does not support.

However, when disruptive extensions are necessary, the names of all such extensions MUST be listed in the critical (Section 4.1.4) parameter of the vCon. This allows implementations to determine whether they are capable of processing the vCon safely and accurately.

Implementations that encounter a vCon containing a disruptive extension listed in the critical parameter, but do not support that extension, MUST NOT process the vCon except to reject it or notify the user.

3. vCon JSON Object

The JSON form of a vCon is contained in a JSON object in one of three forms:

The unsigned form of the vCon has a single top level object. This top level vCon object is also contained as described in the signed (Section 5.2) and encrypted (Section 5.3) forms of the vCon. The selection of the JSON format enables interchange between application and lower layers of the network stack, critical for enablement of analysis of conversations. The signed form of vCon is defined in Section 5.2 using [JWE] to provide integrity and proof of the conversation data. The encrypted form of vCon is defined in Section 5.3 to provide complete privacy of the conversational data. Partial privacy or data minimization can be provide for a vCon using the Section 4.1.8 construct.

4. Unsigned Form of vCon Object

The unsigned form of the top level vCon object is necessary as in many cases, a vCon will be partially constructed and in process as conversation data is collected. This may change while the conversation is in progress or on-going. The vCon may start with only meta data and party information, then progress to contain dialog information. It may then get analysis added or it could be passed to another security domain for analysis.

A vCon may be constructed across several security domains. When a vCon is to be exported from one security domain to another, it SHOULD be signed or encrypted by the domain that constructed it. The subsequent domain may have need to redact or amend data to the vCon. Alternatively the originating domain may want to redact the vCon before providing it to an other domain. The second or subsequent domain, MAY modify the prior vCon instance version and when complete or exporting to another security domain, it SHOULD sign or encrypt the new vCon instance version. The new vCon instance version SHOULD refer to the prior vCon instance version via the redacted (Section 4.1.8) or amended (Section 4.1.9) parameters.

4.1. vCon JSON Object Keys and Values

The keys and values for the top level vCon JSON object are defined in the following subsections.

4.1.1. vcon

The "vcon" parameter is DEPRECATED as of the publication of this document as an RFC. The "vcon" parameter was used to differentiate schema changes to the vCon core container when incompatibilities were created in Internet-Draft versions. The extension mechanism replaces the need for schema versioning. The vcon parameter was used to contain the syntactic version of the JSON format used in the vCon. (see Non-Upward Compatible Changes to the vCon Container (Section 7))

  • vcon: "String"

For syntax defined in this document, the string MUST have the value: "0.4.0"

4.1.2. uuid

The [UUID] for the vCon is used to refer to it when privacy or security may not allow for inclusion or URL reference to a vCon. The UUID MUST be globally unique.

  • uuid: "String"

The value of the string SHOULD be generated using the version 8 UUID defined in [UUID] which is generated identically to a version 7 UUID with the exception that:

  • rand_b/custom_c is generated from the high 62 bits of the SHA-1 hash of the FQHN string

  • the variant and version fields are set as described for version 8 UUID

The DNS name string used in generating the uuid value SHOULD be the same FQHN, or a subdomain to allow for more distributed generation of UUIDs, as would used in the signing certificate as they are the same domains of uniqueness.

4.1.3. extensions

The vCon schema can be extended through the definition of new extensions. The extensions parameter SHOULD contain the list of names of all vCon extensions for any parameters used that are not defined in this core vCon schema document.

  • extensions: "String[]"

4.1.4. critical

Implementations that include extensions which are incompatible with the core vCon schema MUST list the names of those extensions in the critical parameter. A vCon that includes a critical parameter indicates that correct interpretation of the vCon requires explicit support for the listed extensions. An implementation that does not recognize or support the extensions listed in the critical parameter MUST NOT attempt to process or operate on the vCon, except to reject it or report unsupported content.

  • critical: "String[]"

4.1.5. created_at

The created_at parameter provides the creation time of this vcon, which MUST be present, and should not change once the vcon object is created.

  • created_at: "Date"

4.1.6. updated_at

The updated_at parameter provides the last modified time of this vcon, which MAY be present. For unsigned forms, the updated_at of the vcon object SHOULD be updated as it is modified. For signed forms of the vCon object, the updated_at contains the time when this vcon was last signed. Future updates MUST first set the updated_at to the new signing time as the vcon object is signed again.

  • updated_at: "Date"

4.1.7. subject

The subject or the topic of the conversation is provided in the subject parameter. This parameter is optional as not all conversations have a defined subject. Email threads and prescheduled calls and video conferences typically have a subject which can be captured here. The subject may also be derived from analysis of the dialog.

  • subject: "String" (optional)

The string value of the subject parameter is a free formed JSON string with no constrained syntax.

4.1.8. redacted

A redacted vCon SHOULD provide a reference to the unredacted or prior, less redacted, vCon instance version of itself. The purpose of the Redacted Object (Section 4.1.8.1) is to provide the reference to the unredacted or less redacted version of the vCon from which this vCon was derived. For privacy reasons, it may be necessary to redact a vCon to construct another vCon without the PII. This allows the non-PII portion of the vCon to still be analyzed or used in a broader scope. The Redacted Object (Section 4.1.8.1) SHOULD contain the uuid parameter and MAY include the url, content_hash parameters (see Externally Referenced Files (Section 2.4)). If a reference to the unredacted vCon is provided in the url parameter, the access to that URL MUST be restricted to only those who should be allowed to see the identity or PII for the redacted vCon.

The method(s) for redaction of text, audio and video can be done with existing post processing of media. The method of redaction is out of scope of this document. The assurance of the accuracy of the redaction is made by the entity that creates the redaction which SHOULD sign the redacted version of the vCon.

All data and parameters in the prior, less redacted, vCon instance version are either:

  • Removed entirely in the redacted version

  • Copied and partially redacted

  • Copied as is

Data which is to be completely removed from the redacted version, that is contained in a JSON array in the unredacted vCon, SHOULD create an empty placeholder such that object array indices do not change for the rest of the elements of the array.

  • redacted: "Redacted" (optional, mutually exclusive with amended parameter)

4.1.8.1. Redacted Object

A Redacted Object contains the following parameters:

  • uuid: "String"

The value contains the uuid string value (Section 4.1.2) of the unredacted/prior vCon instance version. The absence of a value for uuid indicates that the less redacted version of this vCon is not available or does not exist.

  • type: "String"

The value of the redacted type parameter is used to indicate the type of redaction that was performed on this vCon relative to the less redacted version referenced by the redacted uuid parameter. This should indicate the type of information that was redacted.

The the location of the referenced vCon MAY be provided as defined in Externally Referenced Files (Section 2.4) by including url and content_hash. content_hash MUST be included if url is provided.

  • url: "String"

  • content_hash: "ContentHash" | "ContentHash[]"

The following diagram illustrates an example partial JSON object tree for a redacted vCon. The top level object is a JWS signed vCon which contains a vCon in the unsigned form in the payload parameter. The second level object is the redacted vcon which refers to the encrypted unredacted vCon in it's redacted parameter. Note that the redacted vCon references the JWE encrypted vCon by UUID and may reference it by URL or direct inclusion. The JWE encrypted unredacted vCon contains the signed version of the unredacted vCon in the ciphertext parameter. The signed unredacted vCon contains the unredacted vCon in the unsigned form in it's payload parameter.

                --------------
Signed          | JWS   uuid-|-- redacted vCon uuid in header
redacted vCon:  |            |
                |    payload-|-- unsigned redacted vCon in
                -------------- / payload parameter
                              /
            -------------    /
vCon which  |vCon       |<---
has been    |           |
redacted:   |  redacted-|-- Redacted Object
            ------------- / refers to JWE
                         / encrypted unredacted vCon
                        /
                       /
                      /
                     /
                    / ---------------   signed unredacted vCon
                    ->| JWE    uuid-|-- uuid in unprotected
Encrypted signed      |             |
unredacted vCon:      |  cyphertext-|--- JWS signed
                      ---------------  / unredacted vCon
                                      / in cyphertext
                 /-------------------/ parameter
                /
               /  -------------
Signed         -> |JWS   uuid-|-- unredacted vCon uuid in header
unredacted vcon:  |           |
                  |   payload-|-- unsigned unredacted vCon
                  -------------  \ in payload
                                  \   ----------
                                   -->| vCon   |
Unsigned unredacted vCon:             |        |
                                      ----------
Figure 1: redacted vCon object tree

4.1.9. amended

A signed or encrypted vCon cannot be modified without invalidating it. In these cases, to allow for adding of additional information a new vCon instance version MUST be created. The prior vCon instance version is referenced by the Amended Object (Section 4.1.9.1). The vCon with amended data contains all of the data that is in the referenced vCon with the exception of data that is amended. That is to say that the newer version of the vCon is a deep copy of the prior version with the amended and additional data added to it.

The prior vCon instance version SHOULD be referenced via the uuid of the prior vCon instance version, and MAY include the url and content_hash parameters (see Externally Referenced Files (Section 2.4)).

  • amended: "Amended" (optional, mutually exclusive with redacted parameter)

4.1.9.1. Amended Object

The Amended Object contains the following parameters:

  • uuid: "String" (optional if inline or external reference provided)

The value contains the uuid string value (Section 4.1.2) of the unredacted/original vCon instance version.

The location of the referenced vCon MAY be provided, as defined in Externally Referenced Files (Section 2.4) by including url and content_hash. content_hash MUST be provided if url is provided.

  • url: "String"

  • content_hash: "ContentHash" | "ContentHash[]"

The following figure illustrates an example partial JSON object tree for an amended vCon. The top level object is the JWS signed amended vCon which contains the unsigned form of the vCon in it's payload parameter. The second level object is the amended vCon with additional conversational data (e.g. analysis data). It refers to its original parent (or prior vCon instance version) of the vCon in its amended parameter. Note: the amended parameter may refer to the prior version of the vCon via URL. The amended vCon in this figure refers to the JWS signed version of the vCon, which in turn contains the original vCon in unsigned form in its payload parameter.

                --------------
Signed          | JWS   uuid-|-- amended vCon uuid in header
amended vCon:   |            |
                |    payload-|-- payload parameter
                -------------- / contains unsigned
                              / amended vCon
            -------------    /
vCon with   |vCon       |<---
amended     |           |
data:       |   amended-|--- amended parameter
            |  analysis-|  / refers to JWS
            ------------- / signed original vCon
                         / along with additional
                        / conversational data
                       / (e.g. analysis)
                      /
                     /
                    / ------------
                    ->| JWS uuid-|-- original vCon uuid in header
signed                |          |
original vCon:        |  payload-|--- payload parameter
                      ------------  / contains unsigned
                                   / original vCon
                  -------------   /
Original vCon:    |vCon       |<--
                  |           |
                  |   parties |
                  |   dialog  |
                  -------------
Figure 2: amended vCon object tree

4.1.10. parties Objects Array

The name, identity or contact information of all of the parties involved with the conversation are included in the parties object array. Whether the parties were observers, passive or active participants in the conversation, they each are included as a Party Object in the parties array.

  • parties: "Party[]"

The value of the parties parameter is an array of Party Objects (Section 4.2).

4.1.11. dialog Objects Array

The actual conversation which occurred over text, audio or video that was captured, is contained in the dialog Objects Array.

  • dialog: "Dialog[]" (optional)

The value of the dialog parameter is an array of Dialog Objects (Section 4.3). It should be noted that the Dialog Objects may not be sorted in chronological order. They are in the order that they were added. It is the applications responsibility to sort dialog and transcriptions if they are needed in chronological order.

4.1.12. analysis Objects Array

Analysis, which is performed on the conversational data, is stored in the analysis Objects array.

  • analysis: "Analysis[]" (optional)

The value of the analysis parameter is an array of Analysis Objects (Section 4.5).

4.1.13. attachments Objects Array

Ancillary documents, discussed, presented, referenced or related to the conversation may be stored in the attachments array. It should be noted that the Attachment Objects may not be sorted in chronological order. They are in the order that they were added.

  • attachments: "Attachment[]" (optional)

The value of the attachments parameter is an array of Attachment Objects (Section 4.4).

4.2. Party Object

A Party Object contains information about a specific party or participant in the conversation. The information that is available about the party varies with the context, the communication mode and platform. There are times when no information is available for a party either initially or over the entire life of the vCon. In such situations, it is possible to have a Party Object with no parameters in it. A Party Object SHOULD be created for each participant. This may result in more than one empty Party Object. They are distinct by the order or index in the Party Object array.

4.2.1. tel

If the tel URL for the party is known, it can be included in the tel parameter.

  • tel: "String" (optional)

The value of the tel parameter SHOULD be a valid [TEL] URL. The URL scheme prefix (i.e. "tel:") is optional.

4.2.2. sip

The [SIP] URL for the party can be provided in the sip parameter.

  • sip: "String" (optional)

    The value of the sip parameter is the addr-spec as defined in section 25.1 of [SIP].

4.2.3. stir

If the STIR [PASSporT] was provided to identify the party, the PASSporT can be included in the stir parameter for the party.

  • stir: "String" (optional)

The string value of the stir parameter contains the [PASSporT] in the JWS Compact Serialization form.

4.2.4. mailto

If the mailto URL is known for the party, it can be included in the mailto parameter.

  • mailto: "String" (optional)

The value of the mailto parameter is a string containing an email address for the party. It MAY be provided in any common form, such as a bare address or a [MAILTO] URL; when a [MAILTO] URL is used, the "mailto:" scheme prefix is optional.

4.2.5. name

If the party's name is known, it can be included in the name parameter.

  • name: "String" (optional)

The string value of the name parameter is a free form JSON string in which part or all of the party's name can be included. It may be necessary, for privacy reasons, to not identify any information about the party. This MAY be indicated by creating a Party Object with only the name parameter and setting its value to "anonymous". A Party Object SHOULD be create for each anonymous party in the conversation. This is necessary to capture the number of parties and distinction between which party contributed what data or dialog in the conversation. Hence it is possible to have multiple anonymous Party Objects in the vCon. They are distinct by the order or index in the Party Object array.

4.2.6. did

If a Decentralized Identifier [DID] is known for the party, it can be included in the did parameter.

  • did: "String" (optional)

The value of the did parameter MUST be a valid DID URI that enables verifiable, decentralized digital identity for the party. DIDs are designed to be decoupled from centralized registries and identity providers, allowing the controller of the DID to prove control without requiring permission from other parties. The DID can refer to any subject (person, organization, thing, etc.) as determined by the controller of the DID.

4.2.7. validation

Proof of authorization of the communication channel through STIR, login or possession of a device, is often not sufficient proof of the identity of the person at the other end of the communications channel. It is common in call centers to validate the identity of the person on the communication channel through verification of some sort of personal identification information. The methods used, often varies with the situation and is business practices specific. The purpose of the validation parameter, is to allow the validator to save a label or token which identifies the method of identity validation used to identify the person at the other end of the communication channel. For confidentially reasons, it SHOULD NOT contain the data used to validate the name. However it MAY name the data used to validate the name (e.g. "SSN", "DOB", "user ID and password"). It is up to the domain creating the vCon to define the set of tokens or values to be used for the validation parameter.

  • validation: "String" (SHOULD be provided if name parameter is provided)

The value of the validation string MAY be "none" or enterprise or domain defined token or string values.

4.2.8. gmlpos

If the geolocation of the party is known, it can be added in the gmlpos parameter. The gmlpos parameter contains the latitude and longitude of the location of the party at the time of the conversation start.

  • gmlpos: "String" (optional)

The gmlpos parameter value contains a string of the same format as the gml:pos element defined in section 3.2 of the [PIDF-LO] PIDF.

4.2.9. civicaddress

The the civicaddress parameter value contains a Civicaddress Object which is optional and contains civic address information about the location for the party.

  • civicaddress: "Civicaddress" (optional)

The Civicaddress Object MAY contain any or all of the following parameters: country, a1, a2, a3, a4, a5, a6, prd, pod, sts, hno, hns, lmk, loc, flr, nam, pc as defined in section 2.2.1 of [GEOPRIV]. The values of all of these parameters are of type String. Note that the parameter names MUST be in lower case when contained in the Civicaddress Object even though they are in upper case in [GEOPRIV].

  • country: "String" (optional)

  • a1: "String" (optional)

  • a2: "String" (optional)

  • a3: "String" (optional)

  • a4: "String" (optional)

  • a5: "String" (optional)

  • a6: "String" (optional)

  • prd: "String" (optional)

  • pod: "String" (optional)

  • sts: "String" (optional)

  • hno: "String" (optional)

  • hns: "String" (optional)

  • lmk: "String" (optional)

  • loc: "String" (optional)

  • flr: "String" (optional)

  • nam: "String" (optional)

  • pc: "String" (optional)

4.2.10. uuid

The uuid is a unique identifier for the participant. In a contact center, this is particularly important for the call agent participant, and must be static across interactions to allow correlation with the actual agent configuration provisioned into the systems.

  • uuid: "String" (optional)

4.2.11. type

There are different types of parties that participate in or contribute information to a conversation. The type parameter may be used to indicate the type of participant represented by the Party Object.

  • type: "String" (optional)

The value of the type parameter SHOULD be one of the following: "person", "bot", "organization"

4.2.12. org

The party may belong to or be an organization. The org parameter is a free form text string for containing the organization identifier.

  • org: "String" (optional)

4.2.13. dept

The party may belong to a department with in an organization. The dept parameter is a free form text string for containing the party's department identifier.

  • dept: "String" (optional)

4.3. Dialog Object

The Dialog object references or contains text, audio or video captured from the conversation. Currently five types of dialog objects are defined in this document:

  • Text based media communications

  • Audio or Video recorded media communications

  • Metadata for failed or incompleted communications

  • Metadata for providing relationships between other Dialog Objects in transfer scenarios

  • Metadata for providing relationships between recording Dialog Objects in recording-set scenarios

Media-based Dialog Objects (type text and recording) SHOULD contain only media that is transcribable. Media that is transcribable can be converted into a textual representation of sequential communication between parties. While images such as sunsets, cows, photographs of documents, or application forms may be describable, they are not transcribable in a concise manner and SHOULD NOT be included as Dialog Objects. They SHOULD be included as Attachment Objects.

Text and audio may be subject to interpretation, but they are transcribable to a precise dialog representation. Although transcriptions may not always be accurate, there exists a single correct transcription for any given content.

Media that is not transcribable SHOULD be included in the vCon as Attachment Objects rather than Dialog Objects.

For example, a fax or photograph of a text-based letter is transcribable and MAY be included as a Dialog Object. Most other faxes and photographs SHOULD be included as Attachment Objects and SHOULD NOT be included as Dialog Objects. Similarly, a musical recording, even if it is in MP3 audio format, SHOULD be included as an Attachment and SHOULD NOT be included as a Dialog Object.

It may not always be known at the time of vCon construction whether an image or recording is transcribable.

This distinction is important for interoperability. If it is ambiguous as to what belongs in a Dialog Object versus an Attachment Object, interoperability cannot be achieved, as vCon constructors will not be able to consistently determine where content should be placed and users of vCons will not know where content can be found within the vCon.

There are situations when no information is available for a dialog either initially or over the entire life of the vCon and yet it is known that the dialog occurred. For example this may occur in some call transfer cases where there is nothing known about the consultative call. In such situations, it is possible to have a Dialog Object with no parameters in it. There may even be more than one empty Dialog Object. They are distinct by the order or index in the Dialog Object array.

4.3.1. type

  • type: "String"

The sting MUST have the value of either "recording", "recording-set", "text", "transfer" or "incomplete". A dialog of type "recording" has Dialog Content that either contains a body or refers to via url, which is a recording of the video and/or audio of a segment of the conversation. A dialog of type "recording-set" contains metadata describing a set of "recording" Dialog Objects that collectively represent a call or session. A dialog of type "text" has Dialog Content that either contains a body or refers to via url, which contains the text from one of the parties for a segment of the conversation. A dialog of type "transfer" does not capture actual conversation exchange, but rather captures operations, parties and relations between dialog segments. A dialog of type "incomplete", "transfer" or "recording-set" MUST NOT have Dialog Content. In the "incomplete" case the call or conversation failed to be setup to the point of exchanging any conversation. Incomplete Dialog Objects MUST have a disposition parameter which indicates why the call or conversations failed. In the "transfer" case, the conversation is recorded in other Dialog Objects. In the "recording-set" case, the conversation is recorded in one or more "recording" Dialog Objects. The Dialog Transfer parameters are used to show the roles and relationships between the parties and other Dialog Objects as the transfer process occurred. The recording-set parameters are used to identify the set of "recording" Dialog Objects that collectively represent a call or session.

4.3.2. start

The start parameter contains the date and time for the beginning of the captured piece of dialog. For text it is the time that the party started typing or if not available, then it is the time the text was sent. For audio and video recordings, it is the time which corresponds to the beginning of the recording. For a recording-set Dialog Object, it is the time corresponding to the beginning of the call or session. It should be noted that Dialog Objects may not be ordered by the value of the start parameter. Dialog Objects in the dialog array are in order that they were added to the vCon and cannot be reordered with out correcting the dialog indices which occur in other Objects in the vCon.

  • start: "Date"

4.3.3. duration

The duration parameter contains the duration in seconds of the referenced or included piece of dialog. For text, if known, it is the time duration from when the party started typing to when they completed typing and the text was sent. For recordings, it is the duration of the recording. For a recording-set Dialog Object, it is the duration of the call or session. The start and duration parameters of a recording-set Dialog Object identify the complete time interval represented by the associated recording Dialog Objects.

  • duration: "UnsignedInt" | "UnsignedFloat" (optional)

The value MUST be the dialog duration in seconds.

4.3.4. parties

The party(s) which generated the text or recording for this piece of dialog are indicated in the parties parameter.

  • parties: "UnsignedInt" | "UnsignedInt[]" | ("UnsignedInt" | "UnsignedInt[]")[]

Single channel recordings should have a parties value of the form: "UnisignedInt" or "UnsignedInt[]" where the integer value or array of integer values are the indices to the Party Object(s) in the parties array that contributed to the mix for the single channel recording. The index for the Party Object SHOULD be included even if the indicated party was silent the entire piece of dialog.

Multi-channel recordings MUST have a parties value that is an array of the same size as the number of channels in the recording. The values in that array are either an integer or an array of integers which are the indices to the parties that contributed to the mix for the associated channel of the recording. The index for Party Objects SHOULD be included even if the party was silent the entire conversation. If not all channels are used in a recording, such that no parties are recorded on one or more channels, a null placeholder MUST be inserted into the parties array for the corresponding channel.

Some recording systems represent a single call or session using multiple recording Dialog Objects. This may occur when recordings are periodically segmented or when separate recordings are created for each party and talk spurt. In these cases, a single recording Dialog Object identifies only the parties captured, or potentially captured, in that recording. Other participants are identified only in the recording Dialog Objects in which they are captured or potentially captured. As a result, no single recording Dialog Object necessarily identifies all parties participating in the conversation. Similarly, party_events need to be associated with a Dialog Object, but a recording Dialog Object may not exist for the point in time at which the event occurs. A recording-set Dialog Object MAY be used to represent the complete call or session. The start parameter of a recording-set Dialog Object identifies the beginning of the call or session. The duration parameter of a recording-set Dialog Object identifies the duration of the call or session. The parties parameter of a recording-set Dialog Object SHOULD contain all parties known to participate in the call or session, regardless of whether they contribute recorded media.

It is implied that the first party in the dialog Object parties list, is the originator of the dialog. However, in some situations, it is difficult to impose the constraint that the first channel of a recording is the originator. If ensuring that the first channel and party listed is the originator is not possible, the optional originator parameter indicates the originator party. In other cases, there may be a separate recording file for each party in a conversation, where only one party is recorded per file. In this situation, it is necessary to indicate the originator as the dialog Object parties parameter may contain only one party and may not be the originator. It should be noted that the recordings may be shorter than the collective conference when there is a separate recording per speaker/party. For example the recording(s) of the individual speaker may be trimmed to only the parts where they are actually speaking.

In the email context, [SMTP] messages have the headers From, To, Cc and Bcc that all correspond to parties to the text Dialog Object. The From header should be the first party index in the parties parameter for the text Dialog Object. They are the implied originator. The parties listed in the To, Cc and Bcc [SMTP] headers (if present) should all be added in that order to the parties parameter in the text Dialog Object. The sender SHOULD be allowed to set a policy, through out of band means, as to whether they would like their application or server to include the Bcc parties in the vCon. A text Dialog Object should only contain a single [SMTP] message. Each may have a different set of parties.

4.3.5. originator

The originator party for this dialog. For email and text, this is the sender of the text. For audio and video, this is the caller or host of the call or conference. The originator parameter is only provided if the first party of the dialog Object parties list is NOT the originator.

  • originator: "UnsignedInt" (optional)

The originator value is the index into the parties Objects Array, to the party that originated the dialog.

4.3.6. recordings

The recordings parameter identifies the recording Dialog Objects that are part of the recording-set Dialog Object.

  • recordings: "UnsignedInt[]"

The recordings parameter contains the indices of all recording Dialog Objects that are part of the recording-set. The recordings parameter MUST be present in recording-set Dialog Objects. The recordings parameter MUST NOT be present in other Dialog Object types.

4.3.7. recording_set

The recording_set parameter identifies the recording-set Dialog Object to which the recording Dialog Object belongs.

  • recording_set: "UnsignedInt" (optional if not part of a recording-set)

The recording_set parameter SHOULD be present when a recording Dialog Object is part of a recording-set Dialog Object. The recording_set parameter MUST NOT be present in other Dialog Object types.

4.3.8. mediatype

The media type for the piece of dialog included or referenced is provided in the mediatype parameter. The mediatype parameter MUST be provided for inline dialog files and MUST be provided if the Content-Type header in the [HTTPS] response for the externally referenced URL is not provided.

  • mediatype: "Mediatype" (optional for externally referenced files, if absent, this is provided in the [HTTPS] Content-Type header)

The media types SHOULD be one of the following strings:

  • "text/plain"

  • "audio/x-wav"

  • "audio/x-mp3"

  • "audio/x-mp4"

  • "audio/ogg"

  • "video/x-mp4"

  • "video/ogg"

  • "multipart/mixed"

    Note: multi-part will also likely include the boundary parameter

4.3.9. filename

It is sometimes useful to preserve the name of the file which originally contained this piece of dialog. This can be done in the filename parameter.

  • filename: "String" (optional)

4.3.10. Dialog Content

The Dialog Object SHOULD contain the body and encoding parameters or the url and content_hash parameters for all dialog types other than "incomplete", "transfer" and "recording-set", these parameters MUST NOT be present for "incomplete", "transfer" or "recording-set" dialog types (see Inline Files (Section 2.3) and Externally Referenced Files (Section 2.4)). The exception to this is that the body or url MAY be absent if it is redacted.

For inline included dialog:

  • body: "*" (optional in an a redacted vCon)

  • encoding: "String"

Alternatively, for externally referenced dialog:

  • url: "String" (optional in an a redacted vCon)

  • content_hash: "ContentHash" | "ContentHash[]"

4.3.11. disposition

If the dialog type is "incomplete", it must have a disposition parameter. The value of the disposition parameter provides the reason that the "call control" failed. The term: "call control" is used in a loose sense, as there in not always a call involved, to differentiate from a call disposition that an agent may assign to a call to indicate the reason, issue addressed or outcome of a conversation. This latter definition of call disposition is not dialog, but analysis of the conversation and is not included in the dialog portion.

  • disposition: "String" (required for incomplete type Dialog Objects, SHOULD NOT be present for other dialog types)

The value of the disposition parameter MUST be one of the following string:

  • "no-answer" - a call or connection was attempted, but no one answered or accepted the connection

  • "congestion" - a call or connection was attempted, but was unable to be completed due to system load

  • "failed" - a call or connection was attempted, but failed

  • "busy" - a call or connection was attempted, but the party was busy with another conversation

  • "hung-up" - a call or connection was made, but the party hung-up before any conversation occurred

  • "voicemail-no-message" - a call or connection was made, the voicemail system answered, but no message was left

    Note: if a message was left with the voicemail system this is no longer an "incomplete" type dialog, it is a "recording" type and the conversation SHOULD be included in the Dialog Content.

4.3.12. session_id

The [SESSION-ID] MAY be included for the dialog. If the same [SESSION-ID] applies to all the parties in a dialog, than a single instance of the SessionId Object is provided as the value of session_id. If some parties have a different or no associated [SESSION-ID] for this Dialog Object, then the array structure of the session_id objects MUST correlate to the array structure of the Dialog Object's parties index array. Parties which do not have a [SESSION-ID] associated with this dialog, MUST have an empty object ({}) for the SessionId Object. That an empty Object and not an Object with two "nil UUIDs" as defined in section 7 of [SESSION-ID]. It is also possible that the SessionId Object will not have values for both the local and remote parameters in some conferencing situations (See [SESSION-ID]). In the case that one end of the [SESSION-ID} does not have a UUID, the "nil UUID" String value SHOULD be used as defined in section 7 of [SESSION-ID].

  • session_id: "SessionId" | "SessionId[]" | ("SessionId" | "SessionId[]")[] (optional)

4.3.13. party_history Objects Array

Participants in a dialog may not all join and leave at the same time. To support the capturing of the information when parties join, drop, go on hold or mute and unmute, the party_history array may be added to the Dialog Object.

  • party_history: "Party_History[]" (optional)

4.3.13.1. Party_History Object

The Party_History Object contains the following parameters:

  • party: "UnsignedInt"

    The index of the party for this event.

  • time: "Date"

    The time at which this event occurred.

  • event: "String"

    The string token for the event which MUST be one of the following:

    • "join" - when the party joins the dialog

    • "drop" - when the party drops out of the dialog

    • "hold" - when the party is put on hold

    • "unhold" - when the part is taken off hold

    • "mute" - when the party is muted

    • "unmute" - when the part is taken off mute

    • "keydown" - when a DTMF or application key/button was pressed

    • "keyup" - when a DTMF or application key/button was released

  • button: "String" - (required for keydown and keyup events)

The button parameter value is the String value of the DTMF digit, character or string label for the button that was pressed or released.

4.3.14. Dialog Transfer

A dialog of type "transfer" documents the roles of three parties and the relationship between 2 or three dialog segments. In a transfer operation, the roles of the three parties to a transfer are defined in [SIP-XFER] as:

  • Transferee

  • Transferor

  • Transfer Target

There are two or three calls in which the parties are connected:

  • original call

  • consultative call (optional as this call may not get created)

  • target call

To capture the above roles and dialog segments, the following parameters are defined and SHOULD be present in the "transfer" type dialog and MUST NOT be present in other dialog types.

  • transferee: "UnsignedInt"

The value of the transferee parameter is the index into the parties Object array to the party that played the role of the Transferee.

  • transferor: "UnsignedInt"

The value of the transferor parameter is the index into the parties Object array to the party that played the role of the Transferor.

  • transfer_target: "UnsignedInt" | "UnsignedInt[]"

The value of the transfer_target parameter is the index into the parties Object array to the party that played the role of the Transfer Target.

The consultation, target_dialog and original parameters all refer to the Dialog Objects that correspond to the 2 to 3 calls that are part of a transfer. These calls may end up spread across multiple Dialog Objects due to the nature of how the calls are recorded. For example each party may be recorded in a separate file which will result in a dialog for each. Alternatively a call may go on hold where recording is stopped and back off again resulting where recording is started again in a separate recording file, resulting in multiple Dialog Objects. For this reason, the values for the consultation, target_dialog and original parameters MAY have a single UnsignedInt or an array of UnsignedInt.

There are scenarios where we know that a transfer has occurred, but we have no Dialog Object information for one or two of the consultation, target or transfer calls. In this case an empty Dialog Object is created and its index is used for the consultation, target_dialog or original parameter. A unique Dialog Object SHOULD be referenced for each role in the transfer. However a Dialog Object may be referenced in more than one transfer dialogs when multiple transfers occur.

  • original: "UnsignedInt" | "UnsignedInt[]"

The value of the original parameter is the index/indices into the dialog Object array to the "recording" or "text" type Dialog Object for the original dialog between the Transferee and the Transferor.

  • consultation: "UnsignedInt" | "UnsignedInt[]" (optional)

The value of the consultation parameter is the index/indices into the Dialog Object array to the "recording", "text" or "incomplete" type Dialog Object for the consultative dialog between the Transferor and the Transfer Target. It is also possible for there to be more than one consultation. This may occur for a number of reasons. Call attempts may fail. The caller may decide the consultation with a party is not the desired transfer target.

  • target_dialog: "UnsignedInt" | "UnsignedInt[]"

The value of the target_dialog parameter is the index/indices into the Dialog Object array to the "recording", "text" or "incomplete" type dialog for the target dialog between the Transferee and the Transfer Target.

A "transfer" type dialog MUST NOT contain the parties, originator, mediatype, filename or Dialog Content parameters.

The "transfer" type dialog only captures the roles, operations and events of the parties and the dialog setup. It does not capture the purpose or reason for the transfer as that is analysis to be captures in the analysis section of the Vcon after the conversation has occurred.

4.3.15. application

The application parameter is used to capture the application, communication channel or context over which the conversation was held. The conversation mode can be identified by looking at the dialog type. However that does not different between different communication platform service providers or hosting service. For example, the application parameter can be used to identify the web conference hosting service.

  • application "String" (optional)

4.3.16. message_id

Some messaging systems assign a unique message identifier to each message. The message_id parameter may be used to label the message for either cross referencing back to the messaging system or to prevent the addition of duplicate messages to the vCon. For example SMTP [SMTP] messages have a message-id in the SMTP header. In the SMTP case a message may exist in multiple mailboxes or tags. When exporting these SMTP messages, the message_id parameter may be used to avoid adding the same message, to the vCon containing the email thread, more than once.

  • message_id: "string" (optional)

4.4. Attachment Object

Ancillary documents to the conversation are included or referenced in the Attachment Object. There is no constraint on the types files which can be included or referenced. As most modes of communication, that allow the exchange of files, do not constrain the file type, any file type may be included here.

4.4.1. purpose

The purpose parameter may be used to provide a text base description of the purpose or point of the attachment. There is no restricted set of values for this description.

  • purpose: "String" (optional)

4.4.2. start

The start parameter contains the date and time that the Attachment Object was sent/exchanged. It should be noted that Attachment Objects may not be ordered by the value of the start parameter. Attachment Objects in the attachments array are in order that they were added to the vCon and cannot be reordered with out correcting the attachment indices which may occur in other Objects in the vCon.

  • start: "Date"

4.4.3. party

In most conversations, ancillary documents originate from one of the parties involved in the conversation. This party is not necessarily the document's author, but rather the party that distributed the document. The distributing party is identified by the party parameter in the Attachment Object. To provide provenance for the attachment, the party index MUST be specified. The identified party need not be a participant in the conversation itself. For example, an organization that processes or constructs the vCon may add attachments containing information about the conversation. The organization or entity that adds the attachment SHOULD be represented as a Party Object.

  • party: "UnsignedInt"

The value of the party parameter is the index into the Party Object array to the party that contributed the attachment.

4.4.4. dialog

Attachments are added as data related to the dialog. The dialog parameter is used to identify the dialog that the attachment is part of. The dialog is identified by the index to the dialog Object in the dialog objects array.

  • dialog: "UnsignedInt"

4.4.5. mediatype

The media type for the included or referenced attachment file is provided in the mediatype parameter.

  • mediatype: "Mediatype" (optional for externally referenced files, if absent, this is provided in the [HTTPS] Content-Type header)

The mediatype string contains the media type or [MIME] type of the attached file.

4.4.6. filename

It is sometimes useful to preserve the name of the file which originally contained this attachment file. This can be done in the filename parameter.

  • filename: "String" (optional)

The file name string contains an optional name for the attachment file referenced in this Attachment Object.

4.4.7. Attachment Content

The Attachment Object SHOULD contain the body and encoding parameters or the url and content_hash parameters (see Inline Files (Section 2.3) and Externally Referenced Files (Section 2.4)). The exception to this is that the body or url MAY be absent if it is redacted.

For inline included attachments:

  • body: "*"

  • encoding: "String"

Alternatively, for externally referenced attachments:

  • url: "String"

  • content_hash: "ContentHash" | "ContentHash[]"

4.5. Analysis Object

Analysis is a broad and in some cases developing field. This document does not attempt to suggest a SHOULD support list of types. Nor are formats for analysis data defined in this document. That is for research and specification outside the scope of this document. For this reason the Analysis Object provides multiple ways to define the media type of the analysis file. If a well known media type is defined, it SHOULD be used. For analysis data or files types for which a media type is not defined, the vendor and schema parameters SHOULD be used.

4.5.1. type

The type parameter is used to label the semantic type of analysis data.

  • type: "String"

The string value SHOULD be one of the following:

  • "report"

  • "sentiment"

  • "summary"

  • "transcript"

  • "translation"

  • "tts"

4.5.2. dialog

Analysis typically pertains to one or more of the Dialog Objects in the dialog array. The dialog parameter is used to indicate which Dialog Objects this analysis was based upon.

  • dialog: "UnsignedInt" | "UnsignedInt[]" (optional only if the analysis was not derived from any of the dialog)

The value of the dialog parameter is the index to the dialog or array of indices to the Dialog Object array to which this analysis object corresponds.

4.5.3. attachment

The analysis may pertain to one or more of the Attachment Objects in the attachment array. The attachment parameter is used to indicate which Attachment Objects this analysis was based upon.

  • attachment: "UnsignedInt" | "UnsignedInt[]" (optional only if the analysis was not derived from any of the attachments)

The value of the attachment parameter is the index to the attachment or array of indices to the Attachment Object array to which this analysis object corresponds.

4.5.4. mediatype

The media type for the included or referenced analysis file is provided in the mediatype parameter.

  • mediatype: "Mediatype" (optional for externally referenced files, if absent, this is provided in the [HTTPS] Content-Type header)

The mediatype string contains the media type or [MIME] type of the analysis file.

4.5.5. filename

It is sometimes useful to preserve the name of the file which originally contained this analysis data. This can be done in the filename parameter.

  • filename: "String" (optional)

The file name string contains an optional name for the analysis data file referenced in this Analysis Object.

4.5.6. vendor

There may not be a IANA registered media type for the file format containing the analysis data. Even if a media type is defined, it is often useful to keep a record of the vendor that produced the software that produced the analysis. Different implementations perform differently and knowing the implementation can be useful in interpreting the analysis. For this reason, the vendor or product name is provided in the vendor parameter.

  • vendor: "String"

The vendor string value contains the vendor or product name of the software which generated this analysis.

4.5.7. product

As the vendor may have more than one product, the product parameter may be used to differentiate it from other products which may have different schemas of analysis data.

  • product: "string" (optional)

4.5.8. schema

The same vendor or software product may produce different formats or data for the same analysis. The schema parameter allows the data format, schema or configuration used to generate the analysis to be saved with the included or referenced analysis data.

  • schema: "String" (optional)

The schema string contains a token or label for the data format or schema for the analysis data. As the vendor name may not be specific enough to identify the format of the analysis, the schema value is provide to differentiate from potentially multiple data formats for analysis provided by the same vendor or software.

4.5.9. Analysis Content

The Analysis Object SHOULD contain the body and encoding parameters or the url and content_hash parameters (see Inline Files (Section 2.3) and Externally Referenced Files (Section 2.4)). The exception to this is that the body or url MAY be absent if it is redacted.

For inline included analysis:

  • body: "*"

  • encoding: "String"

Alternatively, for externally referenced analysis:

  • url: "String"

  • content_hash: "ContentHash" | "ContentHash[]"

5. Security Considerations

The security concerns for vCons can put into two categories: making the conversation immutable through integrity verification and protecting the confidentiality of privacy of the parties to the conversation and/or their PII. These requirements along with need to evolve a vCon (e.g. adding analysis, translations and transcriptions) conflict in some ways. To enable this, multiple versions of a vCon may be created. Versions of a vCon may add information (e.g. analysis added to a prior vCon referenced by the amended (Section 4.1.9)) and versions that remove information (e.g. redactions of privacy information removed from the vCon referenced in the redacted (Section 4.1.8)). Redactions may be at different levels for example:

Different parts and versions of a vCon may be created in different security domains over a period of time. In addition, some conversation data may be referenced externally through an HTTPS URL as opposed to completely contained within the vCon. Typically a conversation of one mode, will be hosted or observed in a single domain. This will likely fall into one of the following hosting situations:

The distinction among these has gotten clouded over recent years. The import consideration is that each is a different security domain. Information about a conversation captured in an enterprise communications system (e.g. meta data and Dialog Object(s) recorded in an IP PBX) is a different security domain from a SaaS transcription service (i.e. an Analysis Object). Before a vCon leaves a security domain, it SHOULD be signed to prevent it from being altered. If the new security domain needs to alter it, a new vCon is created with the removed or added data and the prior version is referenced (i.e. via the redacted (Section 4.1.8) or amended (Section 4.1.9)). See the redacted vCon object tree figure-1 and amended vCon object tree figure-2. If information is redacted for privacy reasons, the vCon referenced in the redacted (Section 4.1.8), if inline, SHOULD be encrypted to protect the privacy information in the unredacted version of the vCon.

The secure storage and access of externally referenced conversation data is considered out of scope from this document. Secure mechanisms for HTTPS access and storage of files are well defined. Identity and credentials for accessing externally stored data will be exchanged out of band from the vCon. The one requirement for externally referenced data from the perspective of this document, is proof of integrity of that data.

Using the above described approach for redaction and amending of data, we can reduce the security operations on a vCon to signing and encryption. Two approaches to signing are needed as we have data, in JSON format, that is contained within the vCon and may have data (typically media and file formats, often binary) not contained, inline in the vCon, that is externally referenced.

Externally referenced data will be "signed" using [SHA-512] hash which along with the URL of the externally referenced data is included in the vCon. [SHA-512] was chosen due to the relatively low cost to generate and verify the signature for what could be very large externally referenced media files. As the hash for each externally referenced file is contained in the vCon which will be signed, the chain of authentication is provided via the signature on the vCon itself.

This document specifies the JSON format for vCons. So it seemed the logical solution for signing vCons, is JOSE [JWS] JSON Serialization and likewise for encrypting vCons is JOSE [JWE] JSON Serialization. The solutions are well documents, implementations are readily available and tested.

Methods of redaction exist for text, audio and video using post processing of the media. The method of redaction used is out of the scope of this document. A redacted vCon SHOULD reference it's non-redacted version. The non-redacted version of the vCon referenced from the redacted vCon MUST be encrypted such that only those with permission to view the non-redacted content can decrypt it.

Any time a vCon is shared outside its original security domain, it SHOULD be signed and optionally encrypted. Files externally referenced by a vCon SHOULD always be signed with the verification information included in the vCon that references the external file as defined in Externally Referenced Files (Section 2.4) and Signing Externally Referenced Files (Section 5.1). Externally referenced files SHOULD only be transported over [HTTPS] and SHOULD be access controlled to those who are permitted to read the contents of that non-redacted vCon. vCons transported over non-secure channels such as email MUST be in the encrypted form.

5.1. Signing Externally Referenced Files

In some deployments, it is not practical to include all of the file contents of a vCon inline. In support of that, a file may be externally referenced. When external files are referenced, the signature on the vCon does not secure the file contents from modification. For this reason any externally referenced files SHOULD also have a signature. vCons use the [SHA-512] hash method for integrity checking of externally referenced file content and include its url and content_hash in the vCon which are included in the integrity signature for the whole vCon.

After retrieving externally referenced files, before using its content, the payload of the HTTPS request should be verified using the signature parameter value for the hash for the url body using the procedure defined in section 6.3 and 6.4 of [SHA-512].

5.2. Signed Form of vCon Object

A signed vCon uses [JWS] and takes the General JWS JSON Serialization Syntax form as defined in section 7.2.1 of [JWS]. The vCon General JWS JSON Serialization MUST include x5c or x5u in the unprotected header.

  • payload: "String"

The value of the payload is the Base64Url Encoded string containing either: the unsigned form of the JSON vCon; or the gzipped [GZIP] unsigned form of the JSON vCon. The general construction of the payload string value is described in section 7.2.1 of [JWK]

  • signatures "Signature[]"

The value of signatures is an array of Signature Objects (Section 5.2.1)

5.2.1. Signature Object

The Signature Object MUST contain a header, protected and signature parameter as defined in section 7.2.1 of [JWS].

  • header: "Header"

The value of header is defined in Header Object (Section 5.2.2)

  • protected: "String"

  • signature" "String"

5.2.2. Header Object

The Header Object and its contents are defined in section 4 of [JWS]. The Header Object for a signed vCon MUST include the alg and either the x5c or x5u arrays. The x5c or x5u requirement makes the management and use of vCons easier, allowing the certificate chain to be found as the vCon is moved.

  • alg: "String"

The string value of alg is defined in section 4.1.1 of [JWS]. For a signed vCon this value SHOULD be "RS256" to maximize interoperability.

  • x5c: "String[]" (MUST provide x5c or x5u)

The array of string values for x5c are defined in section 4.1.6 of [JWS].

  • x5u: "String" (MUST provide x5c or x5u)

The string value of x5u MUST contain an [HTTPS] URL as defined in section 4.1.5 of [JWS].

  • uuid: "String" (SHOULD be provided)

The string value of the UUID for the vCon contained in the payload parameter. This is added for convenience to not require verification of the signed vCon to get it's UUID. When the vCon is verified, the value of this uuid parameter SHOULD be verified against the UUID in the signed vCon.

5.2.3. Long Term Archiving of Signed vCons

In some use cases, it may be necessary to store or archive signed vCons for compliances or records purposes for as long as 10 years or more. In most cases the keys and certificates used to sign the vCon and construct the [JWS] or signed form of the vCon, will have an expiration on the order of a few years at best. Below is an approach on how integrity may be maintained on the archived vCon. There may be other approaches to this as well.

For our example illustrated below, we have a vCon which was signed (labeled as JWS1). The certificate used to sign JWS1 has an expiration date. Before the expiration of the JWS1 signing certificate, the content of JWS1 (the vCon) is verified and then JWS1 is signed as the payload to construct JWS2. Before the expiration of the JWS2 certificate, the contents of JWS2 (JWS1) is verified and then JWS2 is signed as the payload to construct JWS3. The process is continued for the life of the vCon archiving.

When it is desired to access the data in the archived vCon, first the outer JWS (JWS3 in diagram) is verified (payload of JWS2), then the vCon (payload in JWS1) is assumed to have valid integrity.

 ____________
|    JWS3    |
| __________ |
||   JWS2   ||
|| ________ ||
|||  JWS1  |||
||| ______ |||
|||| vCon ||||
||||______||||
|||________|||
||__________||
|____________|

5.3. Encrypted Form of vCon Object

A vCon MUST be signed first using JWS as defined in Signed Form of vCon Object (Section 5.2), then encrypted using JWE as opposed to just encrypted with integrity protection. The rationale is that meta data and dialog will typically be collected in one security domain, then may be stored or exported to another. The signing is likely for the lifetime of the vCon, where the encryption may be shorter term or domain specific. vCons may be stored in unencrypted form, but the signed form MUST be maintained to ensure its integrity.

A encrypted vCon uses [JWE] and takes the General JWE JSON Serialization Syntax form as defined in section 7.2.1 of [JWE].

  • unprotected: "Unprotected"

  • recipients: "Recipient[]"

  • iv: "String"

The string value of iv is the Initialization Vector as constructed as defined in section 7.2.1 of [JWE].

  • ciphertext: "String"

The string value of ciphertext is constructed as defined in section 7.2.1 of [JWE] using the signed form of the vCon as the plaintext input for encryption.

  • tag: "String"

The string value of tag is the the Authentication Tag as defined in section 7.2.1 of [JWE].

5.3.1. Unprotected Object

  • cty: "String"

The string value of cty SHOULD be either "application/vcon" or "application/vcon+gzip"

  • enc: "String"

The string value of enc SHOULD be "A256CBC-HS512"

  • uuid: "String" (SHOULD be provided)

The string value of the UUID for the vCon contained in the ciphertext parameter. This is provided for identification of the encrypted vCon without the need of the key to decrypt the vCon. The value of this uuid parameter SHOULD be verified when the vCon is decrypted.

5.3.2. Recipient Object

  • header: "Header"

  • encrypted_key: "String"

The string value of encrypted_key is defined in section 7.2.1 of [JWE].

5.3.3. Header Object

  • alg: "String"

The string value of alg SHOULD be "RSA-OAEP".

5.4. Differentiation of unsigned, signed and encrypted forms of vCon

vCons in the unsigned, signed and encrypted form are all valid JSON. It is necessary to distinguish which form a vCon is in order to properly handle it. For example a signed vCon needs to be verified. The following is the recommended approaches to identifying which form a particular vCon is in:

  • unsigned

    The presence of one or more of the following parameters indicates that the vCon is in the unsigned form:

    • parties

    • dialog

    • analysis

    • attachments

  • signed (JWS)

    The presence of both of the following parameters indicates that the vCon is in the signed (JWS) form:

    • payload

    • signatures

  • encrypted (JWE)

    The presence of both of the following parameters indicates that the vCon is in the encrypted (JWE) form:

    • ciphertext

    • recipients

6. IANA Considerations

This section includes the information required for IANA to register the application/vcon media type per [MEDIATYPE].

6.1. JSON Format vCon Mediatype

The JSON format for vCon is mandatory to implement.

  • Type name: application

  • Subtype name: vcon

  • Required parameters: N/A

  • Optional parameters: N/A; unrecognized parameters should be ignored.

  • Encoding considerations: 8bit

  • Additional information: [JSON] format

  • Security considerations: See Security Considerations section of this document.

  • Interoperability considerations: The vCon schema is defined in RFC XXXX. The schema may be extended through extensions as defined there.

  • Published specification: [VCON], this document: RFC XXXX

  • Applications that use this media type:

  • Fragment identifier considerations: N/A

  • Additional Information:

    • Deprecated alias names for this type: N/A

    • Magic number(s): N/A

    • File extension(s): "vcon"

    • Macintosh file type code(s): N/A

    • Windows Clipboard Name: VCON

  • Author: See the Author's Addresses section of this document.

  • Change controller: IETF

6.2. gzip Format vCon Mediatype

A gzip format vCon is a JSON format vCon that has been compressed using the gzip [GZIP] compression algorithm. The gzip format is used to reduce the size of potentially very large vCons containing audio or video media in dialog objects. Applications SHOULD support the receiving of gzip format vCons, but do not need to use the gzip format when sending.

  • Type name: application

  • Subtype name: vcon+gzip

  • Required parameters: N/A

  • Optional parameters: N/A; unrecognized parameters should be ignored.

  • Encoding considerations: binary

  • Additional information: [GZIP] compression of [JSON] format

  • Security considerations: See Security Considerations section of this document.

  • Interoperability considerations: The vCon schema is defined in RFC XXXX. The schema may be extended through extensions as defined there.

  • Published specification: [VCON], this document: RFC XXXX

  • Applications that use this media type:

  • Fragment identifier considerations: N/A

  • Additional Information:

    • Deprecated alias names for this type: N/A

    • Magic number(s): N/A

    • File extension(s): "vcon"

    • Macintosh file type code(s): N/A

    • Windows Clipboard Name: VCON

  • Author: See the Author's Addresses section of this document.

  • Change controller: IETF

6.3. vCon JSON Registry

This document defines a number of new IANA registries for the JSON vCon schema. Each Object (i.e. dict, map, dictionary) has its own registry of parameter names. All of those registries have the same registry template which is defined in the following subsection. When registering new entries, the following template should be used.

6.3.1. Object Registry Template

Parameter Name:

The string name of a parameter to be used within the Object. The name is case sensitive. Names may not match other registered names in a case-insensitive manner unless the Designated Experts state that there is a compelling reason to allow an exception.

Parameter Description:

Brief description of the parameter

Change Controller:

For Standards Track RFCs, list the "IESG". For others, give the name of the responsible party. Other details (e.g., postal address, email address, home page URI) may also be included.

Specification Document(s):

Reference to the document or documents that specify the parameter, preferably including URIs that can be used to retrieve copies of the documents. An indication of the relevant sections may also be included but is not required.

6.3.2. vCon Object Parameter Names Registry

The following defines the initial values for the vCon Object Parameter Names Registry. Use the template in Object Registry Template (Section 6.3.1) when registering additional entries to this table.

Table 1
Parameter Name Parameter Description Change Controller Specification Document(s)
vcon Schema version number IESG Section 4.1.1 RFC XXXX
uuid vCon instance UUID IESG Section 4.1.2 RFC XXXX
extensions list of extensions used IESG Section 4.1.3 RFC XXXX
critical list of incompatible extensions used IESG Section 4.1.4 RFC XXXX
created_at creation date IESG Section 4.1.5 RFC XXXX
updated_at modification date IESG Section 4.1.6 RFC XXXX
subject conversation subject IESG Section 4.1.7 RFC XXXX
redacted Redacted Object IESG Section 4.1.8 RFC XXXX
amended Amended Object IESG Section 4.1.8 RFC XXXX
group reserved for future extension IESG RFC XXXX
parties Party Objects array IESG Section 4.1.10 RFC XXXX
dialog Dialog Objects array IESG Section 4.1.11 RFC XXXX
analysis Analysis Objects array IESG Section 4.1.12 RFC XXXX
attachments Attachment Objects array IESG Section 4.1.13 RFC XXXX

6.3.3. Party Object Parameter Names Registry

The following defines the initial values for the Party Object Parameter Names Registry. Use the template in Object Registry Template (Section 6.3.1) when registering additional entries to this table.

Table 2
Parameter Name Parameter Description Change Controller Specification Document(s)
tel tel URL IESG Section 4.2.1 RFC XXXX
sip SIP URL IESG Section 4.2.1 RFC XXXX
stir STIR token IESG Section 4.2.3 RFC XXXX
mailto mailto URL IESG Section 4.2.4 RFC XXXX
name participant name IESG Section 4.2.5 RFC XXXX
validation validation method IESG Section 4.2.7 RFC XXXX
gmlpos participant geolocation IESG Section 4.2.8 RFC XXXX
civicaddress civic address IESG Section 4.2.9 RFC XXXX
uuid participant UUID IESG Section 4.2.10 RFC XXXX
type participant type IESG Section 4.2.11 RFC XXXX
org participant organization IESG Section 4.2.12 RFC XXXX
dept participant department IESG Section 4.2.13 RFC XXXX

6.3.4. Dialog Object Parameter Names Registry

The following defines the initial values for the Dialog Object Parameter Names Registry. Use the template in Object Registry Template (Section 6.3.1) when registering additional entries to this table.

Table 3
Parameter Name Parameter Description Change Controller Specification Document(s)
type dialog type name IESG Section 4.3.1 RFC XXXX
start dialog start time IESG Section 4.3.2 RFC XXXX
duration dialog duration period IESG Section 4.3.3 RFC XXXX
parties dialog parties list IESG Section 4.3.4 RFC XXXX
originator dialog originator party IESG Section 4.3.5 RFC XXXX
mediatype dialog content media type IESG Section 4.3.8 RFC XXXX
filename dialog content filename IESG Section 4.3.9 RFC XXXX
body dialog inline content IESG Section 4.3.10 RFC XXXX
encoding dialog inline content encoding IESG Section 4.3.10 RFC XXXX
url dialog referenced content URL IESG Section 4.3.10 RFC XXXX
content_hash dialog content hash IESG Section 4.3.10 RFC XXXX
disposition dialog disposition IESG Section 4.3.11 RFC XXXX
session_id RFC7989 session ID IESG Section 4.3.12 RFC XXXX
party_history dialog party events history IESG Section 4.3.13 RFC XXXX
transferee transferee party index IESG Section 4.3.14 RFC XXXX
transferor transferor party index IESG Section 4.3.14 RFC XXXX
transfer_target transfer target party index IESG Section 4.3.14 RFC XXXX
original original transfer dialog index IESG Section 4.3.14 RFC XXXX
consultation consultation`transfer dialog index IESG Section 4.3.14 RFC XXXX
target_dialog target_dialog transfer dialog index IESG Section 4.3.14 RFC XXXX
application dialog source application IESG Section 4.3.15 RFC XXXX
message_id dialog message id IESG Section 4.3.16 RFC XXXX
recordings multi recording dialog reference IESG Section 4.3.6 RFC XXXX
recording_set recording_set dialog reference IESG Section 4.3.7 RFC XXXX
6.3.4.1. Dialog Type Name Registry

This document defines a new registry for the token name values that are permitted as values to the dialog type (Section 4.3.1) parameter.

6.3.4.1.1. Dialog Type Name Registration Template

Dialog Type Name:

The string token name of a Dialog Object Type The name is case sensitive. Names may not match other registered names in a case-insensitive manner unless the Designated Experts state that there is a compelling reason to allow an exception.

Dialog Type Description:

Brief description of the Dialog Object type

Change Controller:

For Standards Track RFCs, list the "IESG". For others, give the name of the responsible party. Other details (e.g., postal address, email address, home page URI) may also be included.

Specification Document(s):

Reference to the document or documents that specify the parameter, preferably including URIs that can be used to retrieve copies of the documents. An indication of the relevant sections may also be included but is not required.

6.3.4.1.2. Dialog Type Name Registration Initial Values

The following table defines the initial values for the Dialog Object Types Registry.

Table 4
Dialog Type Name Dialog Type Description Change Controller Specification Document(s)
text text dialog IESG Section 4.3.1 RFC XXXX
recording recording dialog IESG Section 4.3.1 RFC XXXX
transfer transfer dialog IESG Section 4.3.1 RFC XXXX
incomplete incomplete dialog IESG Section 4.3.1 RFC XXXX
recording-set multi-recording dialog IESG Section 4.3.1 RFC XXXX

6.3.5. party_history Object Parameter Names Registry

This initial values for the party_history Object Parameter Names Registry are listed in the following table. Use the template in Object Registry Template (Section 6.3.1) when registering additional entries to this table.

Table 5
Parameter Name Parameter Description Change Controller Specification Document(s)
party event party index IESG Section 4.3.13.1 RFC XXXX
time time event occurred IESG Section 4.3.13.1 RFC XXXX
event event type IESG Section 4.3.13.1 RFC XXXX
6.3.5.1. party_event Event Name Registry

This document defines a new registry for the token name values that are permitted as values to the party_event Object event (Section 4.3.13.1) parameter.

6.3.5.1.1. party_event Event Name Registration Template

party_event Event Name:

The string token name of a party_event Object event type. The name is case sensitive. Names may not match other registered names in a case-insensitive manner unless the Designated Experts state that there is a compelling reason to allow an exception.

party_event Event Description:

Brief description of the party_event Object Event

Change Controller:

For Standards Track RFCs, list the "IESG". For others, give the name of the responsible party. Other details (e.g., postal address, email address, home page URI) may also be included.

Specification Document(s):

Reference to the document or documents that specify the parameter, preferably including URIs that can be used to retrieve copies of the documents. An indication of the relevant sections may also be included but is not required.

6.3.5.1.2. party_event Type Name Registration Initial Values

The following table defines the initial values for the Dialog Object Types Registry.

Table 6
party_event Event Name party_event Event Description Change Controller Specification Document(s)
join party join event IESG Section 4.3.13.1 RFC XXXX
drop party drop event IESG Section 4.3.13.1 RFC XXXX
hold party on hold event IESG Section 4.3.13.1 RFC XXXX
unhold party off hold event IESG Section 4.3.13.1 RFC XXXX
mute party on mute event IESG Section 4.3.13.1 RFC XXXX
unmute party off mute event IESG Section 4.3.13.1 RFC XXXX
keydown DTMF/app key/button press event IESG Section 4.3.13.1 RFC XXXX
keyup DTMF/app key/button release event IESG Section 4.3.13.1 RFC XXXX

6.3.6. Attachment Object Parameter Names Registry

The following defines the initial values for the Attachment Object Parameter Names Registry. Use the template in Object Registry Template (Section 6.3.1) when registering additional entries to this table.

Table 7
Parameter Name Parameter Description Change Controller Specification Document(s)
purpose attachment object purpose description IESG Section 4.4.1 RFC XXXX
start attachment start time IESG Section 4.4.2 RFC XXXX
party sending party index IESG Section 4.4.3 RFC XXXX
dialog associated dialog index IESG Section 4.4.4 RFC XXXX
mediatype attachment body media type IESG Section 4.4.5 RFC XXXX
filename attachment content filename IESG Section 4.4.6 RFC XXXX
body attachment inline content IESG Section 4.4.7 RFC XXXX
encoding attachment inline content encoding IESG Section 4.4.7 RFC XXXX
url attachment referenced content URL IESG Section 4.4.7 RFC XXXX
content_hash attachment content hash IESG Section 4.4.7 RFC XXXX

6.3.7. Analysis Object Parameter Names Registry

The following defines the initial values for the Analysis Object Parameter Names Registry. Use the template in Object Registry Template (Section 6.3.1) when registering additional entries to this table.

Table 8
Parameter Name Parameter Description Change Controller Specification Document(s)
type analysis type IESG Section 4.5.1 RFC XXXX
dialog associated dialog index IESG Section 4.5.2 RFC XXXX
attachment associated attachment index IESG Section 4.5.3 RFC XXXX
mediatype analysis body media type IESG Section 4.5.4 RFC XXXX
filename analysis content filename IESG Section 4.5.5 RFC XXXX
vendor vendor producing content IESG Section 4.5.6 RFC XXXX
product vendor product producing content IESG Section 4.5.7 RFC XXXX
schema product schema of content IESG Section 4.5.8 RFC XXXX
body analysis inline content IESG Section 4.5.9 RFC XXXX
encoding analysis inline content encoding IESG Section 4.5.9 RFC XXXX
url analysis referenced content URL IESG Section 4.5.9 RFC XXXX
content_hash analysis content hash IESG Section 4.5.9 RFC XXXX

6.3.8. Redacted Object Parameter Names Registry

The following defines the initial values for the Redacted Object Parameter Names Registry. Use the template in Object Registry Template (Section 6.3.1) when registering additional entries to this table.

Table 9
Parameter Name Parameter Description Change Controller Specification Document(s)
uuid less redacted vCon UUID IESG Section 4.1.8.1 RFC XXXX
type redaction type or reason IESG Section 4.1.8.1 RFC XXXX
url referenced less redacted vCon URL IESG Section 4.1.8.1 RFC XXXX
content_hash less redacted vCon hash IESG Section 4.1.8.1 RFC XXXX

6.3.9. Amended Object Parameter Names Registry

The following defines the initial values for the Amended Object Parameter Names Registry. Use the template in Object Registry Template (Section 6.3.1) when registering additional entries to this table.

Table 10
Parameter Name Parameter Description Change Controller Specification Document(s)
uuid prior vCon version UUID IESG Section 4.1.9.1 RFC XXXX
url referenced prior version vCon URL IESG Section 4.1.9.1 RFC XXXX
content_hash prior version vCon hash IESG Section 4.1.9.1 RFC XXXX

6.4. vCon Extensions Names Registry

This document defines and new registry for the token name values that are permitted as values to the [extensions]s(#extensions) parameter. However it does not define any values for this registry. Values for this registry are to be defined in subsequent documents which define extensions to the vCon schema.

6.4.1. Extensions Registration Template

Extension Name:

The string token name of an extension to the vCon JSON schema. The name is case sensitive. Names may not match other registered names in a case-insensitive manner unless the Designated Experts state that there is a compelling reason to allow an exception.

Extension Description:

Brief description of the the vCon extension

Change Controller:

For Standards Track RFCs, list the "IESG". For others, give the name of the responsible party. Other details (e.g., postal address, email address, home page URI) may also be included.

Specification Document(s):

Reference to the document or documents that specify the parameter, preferably including URIs that can be used to retrieve copies of the documents. An indication of the relevant sections may also be included but is not required.

6.5. JSON Web Signature and Encryption Header Parameters

This document registers the following new parameter in the [JWS] JSON Web Signature and Encryption Header Parameters registry.

7. Non-Upward Compatible Changes to the vCon Container

7.1. Version 0.3.0 to 0.4.0

  • The "appended" Object was renamed to "amended"

  • The "must_support" parameter was renamed to "critical" to be consistent with other IETF JSON schema extension mechanisms.

  • The "session_id" Dialog Object parameter was changes from a String to a SessionId Object.

7.2. Version 0.0.2 to 0.3.0

  • "transfer-target" parameter was renamed to "transfer_target" to be consistent with other compound names that use the underscore ("_").

  • "target-dialog" parameter was renamed to "target_dialog" to be consistent with other compound names that use the underscore ("_").

7.3. Version 0.0.1 to 0.0.2

  • "mimetype" parameters were renamed to "mediatype"

  • "alg" and "signature" were combined into "content_hash"

8. References

8.1. Normative References

[DID]
W3C, "Decentralized Identifiers (DIDs) v1.0", , <https://www.w3.org/TR/did-core/>.
[GEOPRIV]
Peterson, J., "A Presence-based GEOPRIV Location Object Format", RFC 4119, DOI 10.17487/RFC4119, , <https://www.rfc-editor.org/rfc/rfc4119>.
[GZIP]
Deutsch, P., "GZIP file format specification version 4.3", RFC 1952, DOI 10.17487/RFC1952, , <https://www.rfc-editor.org/rfc/rfc1952>.
[H-460-27]
"End-to-End Session Identifier for H.323 Systems", H.460.27, , <https://www.itu.int/rec/T-REC-H.460.27>.
[HTTPS]
Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, Ed., "HTTP Semantics", STD 97, RFC 9110, DOI 10.17487/RFC9110, , <https://www.rfc-editor.org/rfc/rfc9110>.
[IANA-COSE-ALG]
"COSE Algorithms", n.d., <<https://www.iana.org/assignments/cose/cose.xhtml>>.
[JMAP]
Jenkins, N. and C. Newman, "The JSON Meta Application Protocol (JMAP)", RFC 8620, DOI 10.17487/RFC8620, , <https://www.rfc-editor.org/rfc/rfc8620>.
[JSON]
Bray, T., Ed., "The JavaScript Object Notation (JSON) Data Interchange Format", STD 90, RFC 8259, DOI 10.17487/RFC8259, , <https://www.rfc-editor.org/rfc/rfc8259>.
[JWE]
Jones, M. and J. Hildebrand, "JSON Web Encryption (JWE)", RFC 7516, DOI 10.17487/RFC7516, , <https://www.rfc-editor.org/rfc/rfc7516>.
[JWK]
Jones, M., "JSON Web Key (JWK)", RFC 7517, DOI 10.17487/RFC7517, , <https://www.rfc-editor.org/rfc/rfc7517>.
[JWS]
Jones, M., Bradley, J., and N. Sakimura, "JSON Web Signature (JWS)", RFC 7515, DOI 10.17487/RFC7515, , <https://www.rfc-editor.org/rfc/rfc7515>.
[MAILTO]
Duerst, M., Masinter, L., and J. Zawinski, "The 'mailto' URI Scheme", RFC 6068, DOI 10.17487/RFC6068, , <https://www.rfc-editor.org/rfc/rfc6068>.
[MEDIATYPE]
Freed, N., Klensin, J., and T. Hansen, "Media Type Specifications and Registration Procedures", BCP 13, RFC 6838, DOI 10.17487/RFC6838, , <https://www.rfc-editor.org/rfc/rfc6838>.
[MIME]
Freed, N. and N. Borenstein, "Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies", RFC 2045, DOI 10.17487/RFC2045, , <https://www.rfc-editor.org/rfc/rfc2045>.
[PASSporT]
Wendt, C. and J. Peterson, "PASSporT: Personal Assertion Token", RFC 8225, DOI 10.17487/RFC8225, , <https://www.rfc-editor.org/rfc/rfc8225>.
[PIDF-LO]
Winterbottom, J., Thomson, M., and H. Tschofenig, "GEOPRIV Presence Information Data Format Location Object (PIDF-LO) Usage Clarification, Considerations, and Recommendations", RFC 5491, DOI 10.17487/RFC5491, , <https://www.rfc-editor.org/rfc/rfc5491>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC3339]
Klyne, G. and C. Newman, "Date and Time on the Internet: Timestamps", RFC 3339, DOI 10.17487/RFC3339, , <https://www.rfc-editor.org/rfc/rfc3339>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.
[SESSION-ID]
Jones, P., Salgueiro, G., Pearce, C., and P. Giralt, "End-to-End Session Identification in IP-Based Multimedia Communication Networks", RFC 7989, DOI 10.17487/RFC7989, , <https://www.rfc-editor.org/rfc/rfc7989>.
[SMTP]
Klensin, J., "Simple Mail Transfer Protocol", RFC 5321, DOI 10.17487/RFC5321, , <https://www.rfc-editor.org/rfc/rfc5321>.
[TEL]
Schulzrinne, H., "The tel URI for Telephone Numbers", RFC 3966, DOI 10.17487/RFC3966, , <https://www.rfc-editor.org/rfc/rfc3966>.
[UUID]
Peabody, B. and K. R. Davis, "New UUID Formats", Work in Progress, Internet-Draft, draft-peabody-dispatch-new-uuid-format-04, , <https://datatracker.ietf.org/doc/html/draft-peabody-dispatch-new-uuid-format-04>.

8.2. Informative References

[CBOR]
Bormann, C. and P. Hoffman, "Concise Binary Object Representation (CBOR)", STD 94, RFC 8949, DOI 10.17487/RFC8949, , <https://www.rfc-editor.org/rfc/rfc8949>.
[CDDL]
Birkholz, H., Vigano, C., and C. Bormann, "Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, , <https://www.rfc-editor.org/rfc/rfc8610>.
[CDR]
ITU, "Recommendation Q.825: Specification of TMN applications at the Q3 interface: Call detail recording", n.d., <https://www.itu.int/rec/T-REC-Q.825>.
[ISOBMFF]
"Information technology -- Coding of audio-visual objects -- Part 12: ISO base media file format", ISO/IEC 14496-12:2022, , <https://www.iso.org/standard/83102.html>.
[JWT]
Jones, M., Bradley, J., and N. Sakimura, "JSON Web Token (JWT)", RFC 7519, DOI 10.17487/RFC7519, , <https://www.rfc-editor.org/rfc/rfc7519>.
[PY-VCON]
"Python open source vCon command line interface, library and workflow server", n.d., <https://github.com/py-vcon/py-vcon>.
[SHA-512]
Eastlake 3rd, D. and T. Hansen, "US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)", RFC 6234, DOI 10.17487/RFC6234, , <https://www.rfc-editor.org/rfc/rfc6234>.
[SIP]
Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M., and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, DOI 10.17487/RFC3261, , <https://www.rfc-editor.org/rfc/rfc3261>.
[SIP-XFER]
Sparks, R., Johnston, A., Ed., and D. Petrie, "Session Initiation Protocol (SIP) Call Control - Transfer", BCP 149, RFC 5589, DOI 10.17487/RFC5589, , <https://www.rfc-editor.org/rfc/rfc5589>.
[STIR-PASS]
Wendt, C. and J. Peterson, "PASSporT Extension for Rich Call Data", Work in Progress, Internet-Draft, draft-ietf-stir-passport-rcd-26, , <https://datatracker.ietf.org/doc/html/draft-ietf-stir-passport-rcd-26>.
[vCard]
Kewisch, P., "jCard: The JSON Format for vCard", RFC 7095, DOI 10.17487/RFC7095, , <https://www.rfc-editor.org/rfc/rfc7095>.
[vCon-white-paper]
Howe, T., Petrie, D., Lieberman, M., and A. Quayle, "vCon: an Open Standard for Conversation Data", n.d., <https://github.com/vcon-dev/vcon/blob/main/docs/vCons_%20an%20Open%20Standard%20for%20Conversation%20Data.pdf>.

Appendix A. Example vCons

This appendix contains example vCons in the unsigned, signed and encrypted form. The JSON has been indented for readability. The vCons have been formatted such that long text lines have been wrapped with a left hand white space indent for readability purposes. Links for unformatted versions of the vCons are provided for each of the examples. The example vCons in this document were generated using the [PY-VCON] command line interface.

A.1. Two Party Call vCon With Inline Recording

This example vCon is for a simple 2 party PSTN call. It has a single Dialog Object which contains a single channel wav format recording with the two parties audio mixed into the single channel.

The unformatted version of the following example can be downloaded from: https://raw.githubusercontent.com/ietf-wg-vcon/draft-ietf-vcon-vcon-core/refs/heads/main/examples/ab_call_int_rec.vcon

{
  "parties": [
    {
      "tel": "+12345678901",
      "name": "Alice"
    },
    {
      "tel": "+19876543210",
      "name": "Bob"
    }
  ],
  "dialog": [
    {
      "type": "recording",
      "start": "2022-06-21T17:53:26.000+00:00",
      "duration": 4.72,
      "parties": [
        0,
        1
      ],
      "mediatype": "audio/x-wav",
      "filename": "ab_call.wav",
      "encoding": "base64url",
      "body": "UklGRioeAABXQVZFZm10IBQAAAAxAAEAQB8AAFkGAABBAAAAAg
        BAAWZhY3QEAAAAgJMAAGRhdGH2HQAAoxjXHYXCRekuye4gK4Tsiv4wZeN
        htuvu3RMkgyPXme4NeahQLG0yeLayx5HCIiRWK7psbQrQTFm57NwQJvIb
        q1aNxk6VpMYAXSm5Bb1rgStIStvEzmCaOIabxs2gjReJ02Rk0BQtOxHkh
        UTIZd4VGKoq1KuoCGhrZTx1vRZICuZEcgkGjdH2jiCU1a0NMW6BE8lVHN
        -OYFPHcZspr0CSl1aeo2hOWUx3CbovpGqKsApWteunk8gMPMOdynRVFWR
        5o0l2BvaQDcWugGRHrQa9NcEbG1LWQq_AWLpsXKdMQefGrZu4ZE2ZSDIR
        GJLTKpIzDybqSyZishQmjuVGztMKNlcyt2vW546JsutgllyppQWroAtHb
        kyrrGAx3bIiX81g1sR-oVaBbtkobA08fpJYscQSlHHcGm7hDriuWTRm8A
        6GKQ1Fbcn10M30DcHctnEchwaAI7dxI2knYCQ5biNHB2Djxm3bFmyU5TA
        3ALZt3DaSeABIkiRJcm0AxpEkSZI7AEiSJEmSwUYZ1mQLYNu2bdumPWDb
        tm3b9gOAJEmSJFkFgCRJkiQZbHRhTccDtm3btm0qAEaOJEmSPABIkiRJk
        jAASJIkSZLBRhfW9CKAJEmS49gCgCRJkiQ5P2Dbtm3bZgSAJEmSJClkcm
        VNLgBIkiRJkm8ASJIkSZIvAkiSJEmOswM2btu2bcMVmd3kIoDkyJEkySO
        AJEmS3AgGgCRJkhypC2DjuG3j9mxOWQiyEUQ1DAtyvQJS9aTWWc4KuFqL
        O9F4CCJX4yeFkMaSUWSLYMkYinzGa4HzyrEi6-pgHVdXe6mugKzW7VqHY
        OzcDDsXWnJkeVXHFKpuLDZSrAroZOQohtASpE4dyZSRxozJQC6hJE2OLG
        iNYLM1ruIWzsCcRhEW6c3AJhq6bmp9cZ0IvAy2a5xJVcUMNE8Qq3G0CEJ
        y30SNxwrUqUy5NczWkI3S7UCk4iyrBM3AzCvJqkisQPQkcekWjYDoJk4D
        pWiPmUzXCtKFMkuy1g7MtWnrqLwMSqpjR8vXDipSKzk1D-bOjdLzgNQol
        lapqqCUmjChmctA6jRmYPOLYJtHbatocTAZCfAQ3LHs6O2zDuCC_LyStA
        gkklFHZesUspXsSr0S5lCRYg-hXc2tKqMsgeqYkNzSVmLc9mk08zbhzUK
        O3fhkzJQsvBTCcNk2s-oUxO5zpatkETyFn-xtrxRaTR0hZk3WDo5ELiFW
        Oq7hmMxgKjdcY0SO4Fk7cijHC6EYNXEZI6oDUQz2EeJMMh1orxSOup04u
        UUjOtyjwVQ3HdhpuSRyJv0WzpRTo-so7pMpdgKWUk0jlEwjiqBJAwcuw5
        lca39VznGdMLAg6o-EEenbKEQxgkeS0xxEteISQcQUNPm8KxaV1xKKIq-
        BFEpsm_bjIFPLiJwpRoEoSZEuqWuBJLuu1oxZC8ksQB0Wkt_IqrwaSMq8
        p4mzEPrFksdx9i9KZVv36AvGkMmyKsHI864U2eThk-iNKRsvgRsqL1vMT
        UHbPK2ZqVwNHW3oEIay3EaN7xJGgV4mmK8Q1k0O4jHPCFpRzHYxBtbOEZ
        FMQeMoOVQ2F8GTOXvh9-qARmvOaH9MYaOpdTIFaS-ZJO4OGmZOvo3fEig
        5M8lQvwxinfXKhc4QrPGM0pIJthKKkixBYjvlZJlNwXTljSW8VWFex6ts
        hg7BUiVuU8VoDtlMwRBEkqXknPYWWNFMRtW_FMhsVIpV4RDESZlqtFXHV
        I3GSmHZyNFMV24h48qsHAdLYeumkSKhTYG1Qp0LpWhr1UitEmaJ1DxuXw
        gGEe62VbkIUKKbdkv2CFhIZMdnkebSjRKzoCG7Uc32ywDkqkauEsuAzOq
        K1vnNoKFOtloMaa5YBWwbZI_aPtKzFMpyqx7WNBXEqt43TasSiiaAKW8U
        2NSFxMuA6htzZ8ougZAbtgLVamHcwpHZgq6B40DSETuvriVpKyFIUpxog
        TQvwrBFaY5MScRRE6GFMFGqYp5L26r4Eo2kooM941UsSSRC6NVuXVFmol
        1pueTN7sLdPY-uiHbuECmzJFAvywh-KivWrRRtmK4u4p1Va666LNhrFMt
        F3tZKlTDvgdOFlqN-zUGbWLWajishIrY5DTNLYovSDJJ2co6MCCwrxmmd
        6u0wU-CtiptRtUQohlesWT1X0I4kR-NrCEmIIFRGelq51TpDpN2jnuxFr
        UWfaop44QqkpsixOkeSsFwpyiIoHV4IN-NAtFJboRbtIqoILbeS0SJe1i
        2_tl8Xi4xizaGMTbVg3w4C6biZ8LrTot8bmqK5TWIKQWqUWloIyQhHJaA
        MTQaq4SQWNzTeTaoc5MHEkWrWHEY8moxcmLeQkQStoV9lsiM7S6HlKE6n
        LKfAJK3GVq0WQeK8fmKNcascCXElWJJd9iwvNSi9mNvGsRwsvvxyHsw0O
        qqptnxsWafZojyKIykTLXobrtrgcAoryw9tNE7TVstKaCBBmEJ2LMUsXJ
        KCCBk1kWpsul1ZnZRgWoSnleyJ9njK9VrZXCrYFojg6ofqqAam-jOFbEv
        QIIcLJF9f-quNDsQiS9ac_ljMEE30OjQXKrmVeCxG7iE3UmIcLO4g0zVP
        FXAN5biakMaMydRuQRlJ2NuaTOEqKabgJg8hc8KNG6PLgDxn1fDGZAzRL
        OsMhnEGF6--CEZJU6ly4hJmqiXpha4Wumlis26U5hAVtMxgmpVUIzPOoF
        gpsVVLLOHiSOrKysoBq0Zx4xZZTVFJOwqozvXM7WEQtpmkq7GqF-ZKnqo
        2YBGysVvsSJPm0I1kDMHOdHEkN09hm8NtJWnmgA1HDhVoL2ENW6odeXkN
        2SjJCmjxotduUws-l3OyDu8KtGUMMc7ICrJu6XpMSsdQkSTuwEC3ddtk1
        sBUQyktmMqA8Ti6G-crYSsVVlmFXE5VLeQOtC5kuFCrCEaqTeuJWQu662
        W5sr4KQGcrRVjLFlHVdK1AV8Wt23ivgJmLsuU8TcEjG_ZdREvB1iiaHKh
        cz1xJMxPOah1FhvcK8lOaK1nSFjSPk8iRxghUySuliw230olEzwCfOKfz
        Wq1gbFMH82iPYAk3rlNhzICdTIYblWwvYSnWDliN3TRvLwcmQhMcPlYJ2
        G0NuYpJD0KtVEqpSuaU1fJLgdp0aRyn1kAzM6_jW-6Ab1vxovqtwJTZzm
        Z3YM0gTVgRVm-zNm61DvaQaqVr1A4IUsQ8LLkMJpXarHRIxlLSNK3Akqh
        uGv2uQA6pcuSkrmCpllETvY4g4sgt3IZgbhUtSQ3orOouknUJ1taUPXRI
        Dbq5EVeuvgzEsQQ5jgvmTk10zaCg2G2Tm9ZAzCJO3ZSLwN3M9XWerUD9y
        motaWDvHEm_DMyQrMou9w7OsB05t1MLNLZrvBlRCyiKjkSNicYUzuazIJ
        WzclQ3ziAtZVVs5a6Azhg6GYPKYGHFPaTKYO5ULdIIuIVksabFDJrRRdw
        9tAxEiUvZpcIOmrAj69TTtpaJsMpgneyUu9ZtweRYk6l2zKDS5JJsq0xh
        JBfulMtcL5kscBlAcSNHUsIK9qirs87yELpvrLnOzBCklpo5lYvGlJFUj
        IBTKTkkcU2BGheP1KqrgF1TrSljrYDcpm5KK2RSYU1nAERu3LaNXQDIce
        RIjmMASHIjSZI0AkiS5EiSgUcX1gQDgCRJkiR5B2Akx5EkqQOAJEmSJJk
        FgOQ4kiQZcJQhMbwENm7bxnHnBLZx3MaRbwBIkiTJcTcAOHIkSZLBNhvW
        xiSAJEmS5DgFYBxJkiRpB4AkSZIkeTxg27Zt28ZoLB1FqA84qpop2DMPx
        B3yyHWxCEq-fmsS1w4YUjo9rZTHlFH0q2AdUZIptdIgy0RuGddqgdyotU
        Kb6kDbE4ukV4FunQyxDEpOHKgiUSHekezIka8Kys0TR3PlCFqPHrR10te
        OkYSnQKOlepQdzQALJTqbhIqAomiNxIiNQFTXZWWneXHhSPESVm4lyc1O
        EahpnMKFsBQojionS9MISIq9u9dX59iNgu2gpbd5mlatoGmpjpyqjmBt5
        mp0Za5gpVZzpUR17lgp0gqgLVIIdvMIpMbktErBDJqS65hy7ApUjiOjsZ
        jXVtnitEDxJq5aG66ApGvxHWmugByp0ds4LmGdNmmEymntVCmzCtSY5M1
        qUBO8kizbWc8NqLsw9nW0Gs7tY1vtFaiWTVDsoGVNdfvy7EFD0zJMJMuh
        I8etAzstQSK9TqvpdEzdBMUeNm5USi3YDuxszZiSWgyyWeoovtoMyHWWq
        2ZV91RVoMpgpZpQ1zgMgaS7rZxLzEDtpK2trKygm6OGJjhtTtkkxQyorh
        vXclcNUm6s1VLtDlhq1joy3Qo2RpWU-ZK3zs1CNSH1RJqjWGsho6Zx2oS
        sgGJIcZs6ziDMOLLqmo20XU34CDxWFAlOzAwIclQXst8MptWj3tLfCOz1
        7dx5VMYMkhLXgCU1Tg1GjMAbNW7bZkNg47Zt2-bugBtDMS63bTCdKbESG
        k7cNHK5EMBNJbmW4hLKcq0pfkQL4lCtJpZcZ5lRYExhk0XS7spt4ROnLe
        TaHEJbJykFmkoBhLVwfG1lDRkpRBIW0aM6dXgKONwlc6IpD-5YTcW9ySC
        6cTwpkhfWUFbUi2AfdLNotAyhFTuqiuqzQF43RreH1EHc2G2famXv3GQz
        EbaFWyWKvA54ay1HF-0WaJMjq906C-JtlpSGDtaOkSItYVtKktMmrGCT1
        qEbaSxh1DZOJObUoCBLiW2dhTBZSboKOn4bOVnLCsim9Vyu6wioklaqLM
        wMRpELrXJT15RJUHWB4zRiZbPWgFzGEW1m7GCjCpoi6w7ArGdeWR1xUdV
        E4AhQkiPNbtYLqG2e6JS1CkRf_tqZwgo4U6xWhpT3lokwzIBRsy3tVIsg
        WTSNDUusYBTn6eN4rWCcrBCVxGDNVEXBCm6R5sZ2KBO2buNHk98WyK7DX
        HWwCsQ1pNVVy-YUSnKsYVypCiTXrkDsqC4TR61A2aJ02vjOIJ2ujquiZO
        -cSL4MSpGOSs3HCiZxVDdx8hbGiZS5qekUStXiHI5P1o5N0sqA6vpMc_u
        tIDWYcuJI7GB2uf5jpa2A1k7O2hJ1S50MvwjebFu4sckMmFXwNDJdC2gP
        GbeqYB24bSA5bg7XWI0ky2DTiDPkIu6A4WapZRrtoJu8rhnJy4CktZkdm
        2QuWUj0CnjWs1anShG4kiTXnKkQFnggS42-DhS-8spVTOYSjjIvgZtOSi
        QV7IC9NHYYg8yAy-Sq4mduYeU4rsSaXE-dSdsI1MmiVVS8ErZp3kBO5wj
        EUZ4litUKhlYLm5QIFtPFgkxBVCWnInXNoIVYldbH66DrRk768I6gWceU
        HbhsbZ1MuBLKqaPWZtUSumrm0pKsEkSW8bZx9gzKVdvYjBkIn41UzoBFK
        3LyJsuA6kZz3MUuQeU0DhvnbYEcW5bdqWANoUQrDbibYg2RxwykcQtFxu
        oKIuEcw871DDhunD4tzhWRiZKuwORIrt6cHWGatkIUN7RA5GRSnbytgA2
        mUh5lce5QSPAOVI1y5IjtErKQGbd1vwxM0p1FrtcMZJIdtTLS1s6NgKxA
        tkKwi3lMgWQ3umtJ7EAdaSMlRayAXbdarDp5LxEpxAgMd4zJkKwMhp4iu
        TKzDKaQSkOh3w7Gkde4udP2zowSzGDUzMPuSMvAJUlVLASPgOSocix9s4
        DzYFbqOmlN2Si5CDBPTUeN3AyiSASTj_gKQrGctqdxE0QupVatDbeMTdK
        KQCOVhgu562BiGc8kqZSgbmtJFpWswNs2N6N8cTEdLcAIqLKKN2nHDKay
        FL-VSAtmrgY5caoKppCbxnRPxkzJ4IxAzLamG0dPweK2jp0WzCAUF4lmu
        GuB5PqpZGWxi-Tdu83IkRu58bvpIpTjyo49xVau11BOPq_Mb1I30pTKhu
        LbE-qCppVr1bMoG5MWofRNaO9FTtUULKkcxK1se60u4PnCSpYeriVaxor
        WtSTbT3ZK-p8kPe3OUiL2Y0mSV6vGnamuo-xkacV8jGIsCdadKA_ipsBK
        XQamggPJeduCoXCctcQSaILpxDhsIvSya1mXrwzUEtw0g9UKyjCDNMmYF
        xWa1G6BBUWGlK_WoJooLVmiBGHikq3TOO9AEUt8yriBEt1F5gjCrW17ll
        gN6E7bRoi2FDau7PaxcRMsVt5Wr9go19VEzaBf2C4UUY5gmjI1SF2MQJU
        7ZWVKrUDpFujiln1R4UivHsaQmzSNxgpGtiM9t9kSpn4bzbHvCnaKZmWq
        2AfTjebrYBCpdao7zaCoRVZr8-pgwzgwjVDtAJ0mjdKkiRBhRbsKSrXlN
        KtbD-aKFDROcw1Ehiq5jtAIKHooV3bV9lCVdKsge8N14oiuIJm0ccukra
        AjR32iF89grKzNdamJcSEltQ7aTZpjxc0KIillx5XHCHysPSmv5gx4W2O
        7Nxf4EFLybMEchVUcy81g-kryZoEsoRzLTe5Iz2DuuJGTo4TWsS7EEqZq
        ZPWVzwm8cSfnTlMNZnTdRBWqLFRO0FhyCwrNsgWL4WWmlaQNfAKyp7a_o
        iJiLDOWg3KsAU5ZdmQWsYhsm3Ua6JUbian3EvyU9yIn9BBIfVv4gU81SF
        F9pZFK-RRuGcuho3tJyUIEIdS4jUsJZ2ElNbAWKI9ApOJ10yWFL91xwha
        ia6MmSbQUVIm9V4avEEx1c5up0g7a8M1AJlYnF9pUb4H7NrZay2vBJrc2
        k2XXIB0rbxGVbEHSTPLkdHVP3SiyFkrSfMuqxxSoUywTl7IK1nkqWR3qF
        NigHFmJWfeOTZKu4OsYU5RWNWLaxG3QKsxAH0Xr5MYsgRRlrRxdeTFZKP
        QOWKXeYsHHFFSVOiuy4xLmktxOiccSTLEdt06UeF2KVM1gajRx2oivgNS
        oT9Uo1WEamTIm9CohXLeNQMbUdBiaxp2WflvGlTgayFeymZpJEhaXJbvJ
        bhY-6rEiNo1q35r2NWEeGLEiFZUh7qBmzS6rAtsoEfP2qgIqN07jV62KJ
        L5mJ8xvQMXyuSqOmKTZmr0gILnRjZnWLNy3E6apVcqEmXur4e1Ezc0Mhk
        FCmGVjYezBbFiQqsRKoZqj4hX5pCtSP8sQhnUaqW1RJSqSNgF3q6VIkts
        6gbI6OvI3h4nQmlz1ozQkau0juIS0Qiw7auE3tEEvYXRsZuaB2jJr6uOY
        LyWaxR4Y1iR7T2sS6u4Z3ULmGNjN21tO7hS4nJs8rxUoT9HUi6Ds6-5mx
        y1BJLdNZmZPgc7IbpV61UCqx7FkV4FwUSi1CpI5kpRt8Agwbx1liMIIYg
        vVuNbBCKTsXsSQmQeVyYQ0IV2XedKKrSAvabkyS-5gMV0WNe3twGuVgdy
        kiZNZTb8MQkvFX_GvDiqZ7Jqx6Qy4kc0YieoUxlCMptKYB1WRQO_AZunS
        7XqsYBZOkdyUruCy6A2gRc6A21apH0mB9Slu2wbkbbohLvQWuEnhBE2qF
        qZQlXpJsBRaRZ4qzkyZ5SIjVEHMJknKsq1BI7RtG_eKABbHbKrC7kCkWI
        dGQ4GyoUnzCjItYBipvAq8yFbt7WcMKI5j6s3iDkRSmwxGV-cOlub0oNv
        Y0poFzYBrV5kx60thYpm17IgtARLGrKsJfdFYkcIUJrr1mHrzCMLzKzV9
        xgy6Vh1Hpe0SuDYd125Nm9hzUw-hHjlS3JiNQJ1Ijdu2fWbj2CcZ14pk8
        msp48awbTU3Vhr-TrTvKFIcJPojF333KkjyGUaSZTV6aQ3L1U5roOuwHE
        eaE3BkySIiTaBS7LYsgZnfdoSZBqHdpK1LJ6nQXJpwFchNZ-vv8xp4cqv
        Lqa0cGpWl9XayEpCRW4nNE_pKXYuXQZRLUfXLKmFox06kAmxhaUUlY2rP
        QBndZc5KgVBZVccIYtqqta31CDpUHcdw6hTWRcLIlSsKUoKsXoqS1xKRs
        q3AEDV1YXdNQVsLcavky2BUuV3TLK2A5BI-god9seFE9A6yU9tW2-oKUq
        Z0RZLgCjw5p0l25BC4kZnYadDW1I1grKALt9LbprSAbMalGvUuQSahbhP
        JagGlRHEktWixXCXhDOQRDBlSVh0mU7LYCU0RTgM_Q7Y6EtCuUUuyS_aO
        ldRNYTI30c12jsDe9orzdy2Bs1qyYl1X4TtVsuuqWM4YTasUyMbarHYtE
        byJ3Bo12BWYivAUrq0sGlIcSajNGBOaV83iXSaO2orMgR1LTvvmbqIkV1
        bqhycBO6edpup4cqVNsBKorPfKk-kQVj4uOb2vFDR71CiSzRK2yQu9bRk
        2U5GA74Bmmc-a3Duh2wt71OqKId1YaORWTKF70pIrx4lS3SjKDFAtoq5N
        RBOoUKRmaXYWRJGeyNbGFNphZDhQSOeQyWBtYUOViaKmq4Ds5tTbOi1hV
        D-ObJWqoF3EMeuQZM0kSbIUxka8to7uDEI22iqLLA1GVqU1kdkKUm7juL
        HMxtBJwoygoxXHHceqgNI0coPGksAkukX7kCphGrtuXkWBENVIzxI-MSU
        nUrAIukf69lHJDDYvE0teUQ1Y1V9IUo3mzkVUz6AUtQccy8pgLSQ5BXnL
        IBYzmirr7WBhyUVr9WjuHE0rCwhyWueNtw5IbfpWqrgUNnoiaXLDCiy50
        lvsjtdQkWKLAKNekZZirKCnaDVvVu3gHNlVYX3MQLIoSq6KgTCdRPIO0I
        2jusa2CmbG5uautQ5Ipl3WT64IOLVbW9PQKNcZZ8-A7Dp3pswbQdQ6PYG
        NK6HaxUDiVs2AZRnOzRaRUJ1Z6RRI0iTHyfYKRI4cOjrxEqgqospuKyO4
        VZK_1lMokw2JQ2EolrXkqIzAI9wynWjn4FHvUqacrIC0RnZac4WPmUzNE
        CZOpSgqWw2qbCREedIMNFu0NS7rDCQRm5iOledUzULLgCLLkIOJzyDaI6
        6hO--g3DQi01zLYCJHtJ2biVHhKPYMtKkxqW7hDEp1K9Uh1g6aTE04qTY
        AYJ3fXApcCBWS5MWA3OSpIoePwJXFTVo2rGAVRlHst8tgbmeSpDZxUJUk
        sA6kcd4lkuUIso2UtZG9ClrW79RZ6QpmbuLiclb31E2k7CAqw45ki60A4
        6rW27Yq4D2fkhOizUDkok4SxYkyWSmyCFauWgc2xgT6dKJu7dAIqpENKQ
        bnCDROpEfX1vfUiXK1YHY3fvRXzGD8yJUhCY0A3TJtU4XvgNpMip1KbQ-
        VLPQMwoxUJ1rIDDQuKyN5qg5Ek_28smIPSHotx9XY9lJF5MxAqi4uJffq
        QLS4qSZr12BVG3lb7q1gmRdtnJiNcF0kyAqGNkw5KuoOyG3XXJbpCMxxZ
        zuZ9A7IjBzXzRQHk4Xi66Ciak0sa9ZAk7uQJJmtIBrDQhIZDCCisukrYW
        2QWUj1CrhUGrmp9grYb-oYUuwMOGlkzJLUCMht7lzQHpubADSzYJ1ftv4
        KrIGVNW4YtUphGyv65IpeYkaXigzfwRxbJK4eULOsuofVTeKhI0V7rVx6
        syVN58RFipMWLcXb7HWa0ool1tVSbRerw1U13_R970Yst2rTUDSHiqJEk
        dDB3u8tLXXEZRi3iLuKOJJsq89gTZ4TTUs9wXJSZIUvXR-7sZUYe8uDt1
        KkJhPJMc6uUfVsadMGMupEzmqFtXHdstEeH4X3qL6u60iO3kZOOfwyo_K
        eppGj8RXzk2zV00dWW80n0QTMxLbTfSB8jmdFp02aKlNlK1l97XheSYTX
        kOLGwR4faduDnqHCOE2_ZLbx6rq35oJe0p26lepuXOWTt7Ie_DmLNi4ID
        SZom4YzSEtD47tmVUra4GERBpUJACE0Uua5njuKvpK2ddy599W22r4k_U
        2rbBguUz2dY6tWrvTZuZr9sdZE7-olvZu1lUrIGj9QIfauaCtaeXRZr4k
        fW5Hlxb0fr3U2lWqt6sOSaYEyZJEIdkWdSu89fZvqdnrVNRmum_xp2jTn
        h2ISAYJiKwN0oNFtnSyD5Eiyw3dPBAY5diql0b9ecXVDBo2Rs63nWNr6t
        fuyXTmu8nIabShdNojSNGobq52IxMKBgybmG60GIeX0pUNWh0AA9KxbRY
        yBJnluZH2Jc4hI2iigbuXGkTgINqqeKLVUDKTR2dQt6gpWMhzXTRd4B2B
        ULCDiSHXDgy8AnTuMqiROgCsJsYs4tGAjt1WcVdE2SATnCLSKbNhtyAJQ
        ciPHaL0Eyo0bWcX0DiZu29hwFntXxIIy4KuVckrtDCD4tGYSHctAFDmNz
        VbPQCvDauJGqTgafrcINDGcNGnZR7Zt3PoALxSCUqY0wbyrSHmTIZc"
    }
  ],
  "analysis": [],
  "attachments": [],
  "uuid": "019f155a-5131-80ec-b9a2-279e0d16bc46"
}

A.2. Email Thread Multipart vCon

The following is an unsigned form of an vCon for a 2 message email thread between 2 parties. The email messages are multipart MIME message bodies.

The unformatted version of the following example can be downloaded from: https://raw.githubusercontent.com/ietf-wg-vcon/draft-ietf-vcon-vcon-core/refs/heads/main/examples/ab_email_acct_prob_thread.vcon

{
  "group": [],
  "parties": [
    {
      "mailto": "b@example.com",
      "name": "Bob"
    },
    {
      "mailto": "a@example.com",
      "name": "Alice"
    }
  ],
  "dialog": [
    {
      "type": "text",
      "start": "2022-09-23T21:44:25.000+00:00",
      "duration": 0,
      "parties": [
        0,
        1
      ],
      "mediatype": "multipart/mixed; \n\tboundary=\"----=_Part_38
        8314_1108189513.1663969465698\"",
      "encoding": "none",
      "body": "------=_Part_388314_1108189513.1663969465698\r\nCo
        ntent-Type: multipart/alternative;\r\n\tboundary=\"----=_
        Part_388313_805631480.1663969465697\"\r\n\r\n------=_Part
        _388313_805631480.1663969465697\r\nContent-Type: text/pla
        in; charset=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\n\
        r\nAlice:Please find the image attached.\r\n\r\nRegards,B
        ob\r\n\r\n------=_Part_388313_805631480.1663969465697\r\n
        Content-Type: text/html; charset=UTF-8\r\nContent-Transfe
        r-Encoding: 7bit\r\n\r\n<html><head></head><body><div cla
        ss=\"yahoo-style-wrap\" style=\"font-family:Helvetica Neu
        e, Helvetica, Arial, sans-serif;font-size:16px;\"><div di
        r=\"ltr\" data-setdir=\"false\"><div><div dir=\"ltr\" sty
        le=\"font-family: &quot;Helvetica Neue&quot;, Helvetica,
        Arial, sans-serif; font-size: 16px;\">Alice:</div><div di
        r=\"ltr\" style=\"font-family: &quot;Helvetica Neue&quot;
        , Helvetica, Arial, sans-serif; font-size: 16px;\">Please
         find the image attached.<br></div><div dir=\"ltr\" style
        =\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Ar
        ial, sans-serif; font-size: 16px;\"><br></div><div dir=\"
        ltr\" style=\"font-family: &quot;Helvetica Neue&quot;, He
        lvetica, Arial, sans-serif; font-size: 16px;\">Regards,</
        div><div dir=\"ltr\" style=\"font-family: &quot;Helvetica
         Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16p
        x;\">Bob</div></div><br></div></div></body></html>\r\n---
        ---=_Part_388313_805631480.1663969465697--\r\n\r\n------=
        _Part_388314_1108189513.1663969465698\r\nContent-Type: im
        age/png\r\nContent-Transfer-Encoding: base64\r\nContent-D
        isposition: attachment; filename=\"=?UTF-8?b?c2NyZWVuc2hv
        dC5wbmc=?=\"\r\nContent-ID: <c4c28087-6fa1-395e-e50f-dcef
        d3d6bf96@yahoo.com>\r\n\r\niVBORw0KGgoAAAANSUhEUgAAACYAAA
        AeCAIAAADPdvs5AAAAA3NCSVQICAjb4U/gAAAAGXRFWHRT\r\nb2Z0d2F
        yZQBnbm9tZS1zY3JlZW5zaG907wO/PgAAALpJREFUSInl1t0NgzAMBOC7
        qPvP1gW6Qjdo\r\nj4f0J4qAJI6NROvniE8+mwCvtzv6imTnyf1K/UclH
        UFWjIvaIL3CHCABSPKKtJckWfY6zw+sj5dq\r\nISdVIzmj2klzTZG2Rm
        e7NKgOwY6qPrMcUs+2PqchL14P+oyz+fHx77K5Sv8xyxAyZ0uBaxn/Spc
        U\r\n8NxcosAut1Y3NtjVX7UjZlmpgWTSFyvVQPKB16tSqW53bFnKtyyZ
        vYT3rSsAWADWAlOjseYFfwAA\r\nAABJRU5ErkJggg==\r\n\r\n-----
        -=_Part_388314_1108189513.1663969465698--\r\n",
      "message_id": "<1126698042.388315.1663969465698@mail.yahoo.
        com>"
    },
    {
      "type": "text",
      "start": "2022-09-23T21:44:59.000+00:00",
      "duration": 0,
      "parties": [
        1,
        0
      ],
      "mediatype": "multipart/alternative; \n\tboundary=\"----=_P
        art_390234_811845464.1663969499935\"",
      "encoding": "none",
      "body": "------=_Part_390234_811845464.1663969499935\r\nCon
        tent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-
        Encoding: 7bit\r\n\r\n Hi Bob:Got it. Thanks.\r\n\r\n
        On Friday, September 23, 2022, 9:44:40 PM UTC, Bob <b@exa
        mple.com> wrote:  \r\n \r\n Alice:Please find the image a
        ttached.\r\n\r\nRegards,Bob\r\n  \r\n------=_Part_390234_
        811845464.1663969499935\r\nContent-Type: text/html; chars
        et=UTF-8\r\nContent-Transfer-Encoding: 7bit\r\n\r\n<html>
        <head></head><body><div class=\"ydp89e479a0yahoo-style-wr
        ap\" style=\"font-family:Helvetica Neue, Helvetica, Arial
        , sans-serif;font-size:16px;\"><div></div>\r\n        <di
        v><div><div dir=\"ltr\" style=\"font-family: Helvetica Ne
        ue, Helvetica, Arial, sans-serif; font-size: 16px;\">Hi B
        ob:</div><div dir=\"ltr\" style=\"font-family: Helvetica
        Neue, Helvetica, Arial, sans-serif; font-size: 16px;\">Go
        t it. Thanks.</div></div><br></div><div><br></div>\r\n
             \r\n        </div><div id=\"ydpdc5150a3yahoo_quoted_
        4829810715\" class=\"ydpdc5150a3yahoo_quoted\">\r\n
              <div style=\"font-family:'Helvetica Neue', Helvetic
        a, Arial, sans-serif;font-size:13px;color:#26282a;\">\r\n
                        \r\n                <div>\r\n
                On Friday, September 23, 2022, 9:44:40 PM UTC, Bo
        b &lt;b@example.com&gt; wrote:\r\n                </div>\
        r\n                <div><br></div>\r\n                <di
        v><br></div>\r\n                <div><div id=\"ydpdc5150a
        3yiv4578005613\"><div><div style=\"font-family:Helvetica
        Neue, Helvetica, Arial, sans-serif;font-size:16px;\" clas
        s=\"ydpdc5150a3yiv4578005613yahoo-style-wrap\"><div dir=\
        "ltr\"><div><div dir=\"ltr\" style=\"font-family:Helvetic
        a, Arial, sans-serif;font-size:16px;\">Alice:</div><div d
        ir=\"ltr\" style=\"font-family:Helvetica, Arial, sans-ser
        if;font-size:16px;\">Please find the image attached.<br><
        /div><div dir=\"ltr\" style=\"font-family:Helvetica, Aria
        l, sans-serif;font-size:16px;\"><br></div><div dir=\"ltr\
        " style=\"font-family:Helvetica, Arial, sans-serif;font-s
        ize:16px;\">Regards,</div><div dir=\"ltr\" style=\"font-f
        amily:Helvetica, Arial, sans-serif;font-size:16px;\">Bob<
        /div></div><br></div></div></div></div></div>\r\n
            </div>\r\n        </div></body></html>\r\n------=_Par
        t_390234_811845464.1663969499935--\r\n",
      "message_id": "<2031327240.390235.1663969499936@mail.yahoo.
        com>"
    }
  ],
  "analysis": [],
  "attachments": [],
  "created_at": "2026-06-29T23:03:01.095+00:00",
  "redacted": {},
  "subject": "Account problem",
  "uuid": "019f159f-2cfb-8d95-b9a2-279e0d16bc46"
}

A.3. Email Thread Text vCon

The following is an unsigned form of an vCon for a 3 message email thread between 2 parties. The email messages are plain text message bodies.

The unformatted version of the following example can be downloaded from: https://raw.githubusercontent.com/ietf-wg-vcon/draft-ietf-vcon-vcon-core/refs/heads/main/examples/ab_email_prob_followup_text_thread.vcon

{
  "group": [],
  "parties": [
    {
      "mailto": "a@example.com",
      "name": "Alice"
    },
    {
      "mailto": "b@example.com",
      "name": "Bob"
    }
  ],
  "dialog": [
    {
      "type": "text",
      "start": "2022-09-23T23:24:59.000+00:00",
      "duration": 0,
      "parties": [
        0,
        1
      ],
      "mediatype": "text/plain",
      "encoding": "none",
      "body": "Hi Bob:\nI just wanted to follow up to see that yo
        ur account is ok now.\n\nRegards,\nAlice\n\n",
      "message_id": "<2031327240.390235.1663969499936@mail.yahoo.
        com>"
    },
    {
      "type": "text",
      "start": "2022-09-23T23:34:32.000+00:00",
      "duration": 0,
      "parties": [
        1,
        0
      ],
      "mediatype": "text/plain; charset=UTF-8",
      "encoding": "none",
      "body": "Hi Alice:\nAll is fine. Thanks.\n\n    On Friday,
        September 23, 2022, 23:24:59 PM UTC, Alice <a@example.com
        > wrote:  \n \n  Hi Bob:\n  I just wanted to follow up to
         see that your account is ok now.\n  \n  Regards,\n  Alic
        e\n",
      "message_id": "<1126698042.388315.1663969465698@mail.yahoo.
        com>"
    },
    {
      "type": "text",
      "start": "2022-09-23T23:38:12.000+00:00",
      "duration": 0,
      "parties": [
        0,
        1
      ],
      "mediatype": "text/plain",
      "encoding": "none",
      "body": "Awesome!\n\n    On Friday, September 23, 2022, 23:
        34: PM UTC, Bob <b@example.com> wrote:  \n\n  Hi Alice:\n
          All is fine. Thanks.\n  \n      On Friday, September 23
        , 2022, 23:24:59 PM UTC, Alice <a@example.com> wrote:  \n
           \n    Hi Bob:\n    I just wanted to follow up to see t
        hat your account is ok now.\n    \n    Regards,\n    Alic
        e\n",
      "message_id": "<2031327240.390235.1663969499936@mail.yahoo.
        com>"
    }
  ],
  "analysis": [],
  "attachments": [],
  "created_at": "2026-06-29T23:11:16.017+00:00",
  "redacted": {},
  "subject": "Account issue followup",
  "uuid": "019f15a6-ba37-8ed3-b9a2-279e0d16bc46"
}

A.4. Two Party Call vCon With Externally Referenced Recording

This example vCon is for a simple 2 party PSTN call. It has a single Dialog Object which reference a single channel wav format recording with the two parties audio mixed into the single channel.

The unformatted version of the following example can be downloaded from: https://raw.githubusercontent.com/ietf-wg-vcon/draft-ietf-vcon-vcon-core/refs/heads/main/examples/ab_call_ext_rec.vcon

{
  "parties": [
    {
      "tel": "+12345678901",
      "name": "Alice"
    },
    {
      "tel": "+19876543210",
      "name": "Bob"
    }
  ],
  "dialog": [
    {
      "type": "recording",
      "start": "2022-06-21T17:53:26.000+00:00",
      "duration": 33.12,
      "parties": [
        0,
        1
      ],
      "url": "https://github.com/ietf-wg-vcon/draft-ietf-vcon-vco
        n-core/raw/refs/heads/main/examples/ab_call.mp3",
      "mediatype": "audio/x-mp3",
      "filename": "ab_call.mp3",
      "content_hash": "sha512-GLy6IPaIUM1GqzZqfIPZlWjaDsNgNvZM0iC
        ONNThnH0a75fhUM6cYzLZ5GynSURREvZwmOh54-2lRRieyj82UQ"
    }
  ],
  "analysis": [],
  "attachments": [],
  "uuid": "019f15a6-a752-826f-b9a2-279e0d16bc46"
}

A.5. Two Party Call vCon with Analysis

TODO: fix diarization in transcript

The unformatted version of the following example can be downloaded from: https://raw.githubusercontent.com/ietf-wg-vcon/draft-ietf-vcon-vcon-core/refs/heads/main/examples/ab_call_ext_rec_analysis.vcon

{
  "parties": [
    {
      "tel": "+12345678901",
      "name": "Alice"
    },
    {
      "tel": "+19876543210",
      "name": "Bob"
    }
  ],
  "dialog": [
    {
      "type": "recording",
      "start": "2022-06-21T17:53:26.000+00:00",
      "duration": 33.12,
      "parties": [
        0,
        1
      ],
      "url": "https://github.com/ietf-wg-vcon/draft-ietf-vcon-vco
        n-core/raw/refs/heads/main/examples/ab_call.mp3",
      "mediatype": "audio/x-mp3",
      "filename": "ab_call.mp3",
      "content_hash": "sha512-GLy6IPaIUM1GqzZqfIPZlWjaDsNgNvZM0iC
        ONNThnH0a75fhUM6cYzLZ5GynSURREvZwmOh54-2lRRieyj82UQ"
    }
  ],
  "analysis": [
    {
      "type": "transcript",
      "dialog": 0,
      "body": {
        "metadata": {
          "transaction_key": "deprecated",
          "request_id": "019f15a6-c5e6-7d72-a534-e0243ea2c868",
          "sha256": "04dc074100461f5082f2a7a286d0161f0e2728025e83
            c20592aa7ea3724c2933",
          "created": "2026-06-29T23:11:19.157Z",
          "duration": 33.119938,
          "channels": 1,
          "models": [
            "2187e11a-3532-4498-b076-81fa530bdd49"
          ],
          "model_info": {
            "2187e11a-3532-4498-b076-81fa530bdd49": {
              "name": "general-nova-3",
              "version": "2025-07-31.0",
              "arch": "nova-3"
            }
          }
        },
        "results": {
          "channels": [
            {
              "alternatives": [
                {
                  "transcript": "Hello. This is example.com. My n
                    ame is Bob. How can I help you? Hi. I'd like
                    to add Fu to my service. Okay. Can you give m
                    e your name and phone number so I can look up
                     your account? My name is Alice, and my numbe
                    r is 1234567890. Thank you. Okay. I've added
                    two to your service. Is there anything else t
                    hat I can help you with? No. Thank you. Goodb
                    ye. Goodbye. Have a nice day.",
                  "confidence": 1,
                  "words": [
                    {
                      "word": "hello",
                      "start": 1.1999999,
                      "end": 1.76,
                      "confidence": 0.9946289,
                      "speaker": 0,
                      "speaker_confidence": 0.13952476,
                      "punctuated_word": "Hello."
                    },
                    {
                      "word": "this",
                      "start": 1.76,
                      "end": 2.24,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.13952476,
                      "punctuated_word": "This"
                    },
                    {
                      "word": "is",
                      "start": 2.24,
                      "end": 2.3999999,
                      "confidence": 0.9970703,
                      "speaker": 0,
                      "speaker_confidence": 0.13952476,
                      "punctuated_word": "is"
                    },
                    {
                      "word": "example.com",
                      "start": 2.3999999,
                      "end": 3.4399998,
                      "confidence": 0.90738934,
                      "speaker": 0,
                      "speaker_confidence": 0.13952476,
                      "punctuated_word": "example.com."
                    },
                    {
                      "word": "my",
                      "start": 3.4399998,
                      "end": 3.6,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.51462495,
                      "punctuated_word": "My"
                    },
                    {
                      "word": "name",
                      "start": 3.6,
                      "end": 3.6799998,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.51462495,
                      "punctuated_word": "name"
                    },
                    {
                      "word": "is",
                      "start": 3.6799998,
                      "end": 3.84,
                      "confidence": 0.99902344,
                      "speaker": 0,
                      "speaker_confidence": 0.51462495,
                      "punctuated_word": "is"
                    },
                    {
                      "word": "bob",
                      "start": 3.84,
                      "end": 4.3199997,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.51462495,
                      "punctuated_word": "Bob."
                    },
                    {
                      "word": "how",
                      "start": 4.3199997,
                      "end": 4.48,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.51462495,
                      "punctuated_word": "How"
                    },
                    {
                      "word": "can",
                      "start": 4.48,
                      "end": 4.72,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.51462495,
                      "punctuated_word": "can"
                    },
                    {
                      "word": "i",
                      "start": 4.72,
                      "end": 4.7999997,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.51462495,
                      "punctuated_word": "I"
                    },
                    {
                      "word": "help",
                      "start": 4.7999997,
                      "end": 5.04,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.51462495,
                      "punctuated_word": "help"
                    },
                    {
                      "word": "you",
                      "start": 5.04,
                      "end": 5.52,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.51462495,
                      "punctuated_word": "you?"
                    },
                    {
                      "word": "hi",
                      "start": 5.6,
                      "end": 6.3199997,
                      "confidence": 0.9995117,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "Hi."
                    },
                    {
                      "word": "i'd",
                      "start": 6.3199997,
                      "end": 6.72,
                      "confidence": 0.99560547,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "I'd"
                    },
                    {
                      "word": "like",
                      "start": 6.72,
                      "end": 6.8799996,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "like"
                    },
                    {
                      "word": "to",
                      "start": 6.8799996,
                      "end": 6.96,
                      "confidence": 0.99902344,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "to"
                    },
                    {
                      "word": "add",
                      "start": 6.96,
                      "end": 7.2799997,
                      "confidence": 0.9819336,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "add"
                    },
                    {
                      "word": "fu",
                      "start": 7.2799997,
                      "end": 7.68,
                      "confidence": 0.36791992,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "Fu"
                    },
                    {
                      "word": "to",
                      "start": 7.68,
                      "end": 8,
                      "confidence": 0.99609375,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "to"
                    },
                    {
                      "word": "my",
                      "start": 8,
                      "end": 8.16,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "my"
                    },
                    {
                      "word": "service",
                      "start": 8.16,
                      "end": 8.799999,
                      "confidence": 0.9892578,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "service."
                    },
                    {
                      "word": "okay",
                      "start": 9.2,
                      "end": 9.839999,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "Okay."
                    },
                    {
                      "word": "can",
                      "start": 10.16,
                      "end": 10.4,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "Can"
                    },
                    {
                      "word": "you",
                      "start": 10.4,
                      "end": 10.559999,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "you"
                    },
                    {
                      "word": "give",
                      "start": 10.559999,
                      "end": 10.719999,
                      "confidence": 0.99902344,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "give"
                    },
                    {
                      "word": "me",
                      "start": 10.719999,
                      "end": 10.88,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.576506,
                      "punctuated_word": "me"
                    },
                    {
                      "word": "your",
                      "start": 10.88,
                      "end": 11.04,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.27221602,
                      "punctuated_word": "your"
                    },
                    {
                      "word": "name",
                      "start": 11.04,
                      "end": 11.2,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.27221602,
                      "punctuated_word": "name"
                    },
                    {
                      "word": "and",
                      "start": 11.2,
                      "end": 11.44,
                      "confidence": 0.99902344,
                      "speaker": 0,
                      "speaker_confidence": 0.27221602,
                      "punctuated_word": "and"
                    },
                    {
                      "word": "phone",
                      "start": 11.44,
                      "end": 11.599999,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.27221602,
                      "punctuated_word": "phone"
                    },
                    {
                      "word": "number",
                      "start": 11.599999,
                      "end": 11.84,
                      "confidence": 0.99902344,
                      "speaker": 0,
                      "speaker_confidence": 0.27221602,
                      "punctuated_word": "number"
                    },
                    {
                      "word": "so",
                      "start": 11.84,
                      "end": 12.08,
                      "confidence": 0.8935547,
                      "speaker": 0,
                      "speaker_confidence": 0.27221602,
                      "punctuated_word": "so"
                    },
                    {
                      "word": "i",
                      "start": 12.08,
                      "end": 12.16,
                      "confidence": 0.99902344,
                      "speaker": 0,
                      "speaker_confidence": 0.27221602,
                      "punctuated_word": "I"
                    },
                    {
                      "word": "can",
                      "start": 12.16,
                      "end": 12.32,
                      "confidence": 0.99902344,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "can"
                    },
                    {
                      "word": "look",
                      "start": 12.32,
                      "end": 12.48,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "look"
                    },
                    {
                      "word": "up",
                      "start": 12.48,
                      "end": 12.639999,
                      "confidence": 0.9980469,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "up"
                    },
                    {
                      "word": "your",
                      "start": 12.639999,
                      "end": 12.799999,
                      "confidence": 0.9980469,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "your"
                    },
                    {
                      "word": "account",
                      "start": 12.799999,
                      "end": 13.12,
                      "confidence": 0.9980469,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "account?"
                    },
                    {
                      "word": "my",
                      "start": 13.735,
                      "end": 14.135,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "My"
                    },
                    {
                      "word": "name",
                      "start": 14.135,
                      "end": 14.295,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "name"
                    },
                    {
                      "word": "is",
                      "start": 14.295,
                      "end": 14.455,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "is"
                    },
                    {
                      "word": "alice",
                      "start": 14.455,
                      "end": 15.174999,
                      "confidence": 0.9355469,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "Alice,"
                    },
                    {
                      "word": "and",
                      "start": 15.174999,
                      "end": 15.335,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "and"
                    },
                    {
                      "word": "my",
                      "start": 15.335,
                      "end": 15.575,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "my"
                    },
                    {
                      "word": "number",
                      "start": 15.575,
                      "end": 15.8949995,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "number"
                    },
                    {
                      "word": "is",
                      "start": 15.8949995,
                      "end": 16.455,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "is"
                    },
                    {
                      "word": "1234567890",
                      "start": 16.455,
                      "end": 20.615,
                      "confidence": 0.9999512,
                      "speaker": 0,
                      "speaker_confidence": 0.65581185,
                      "punctuated_word": "1234567890."
                    },
                    {
                      "word": "thank",
                      "start": 20.775,
                      "end": 21.095,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "Thank"
                    },
                    {
                      "word": "you",
                      "start": 21.095,
                      "end": 21.654999,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "you."
                    },
                    {
                      "word": "okay",
                      "start": 22.935,
                      "end": 23.335,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "Okay."
                    },
                    {
                      "word": "i've",
                      "start": 24.134874,
                      "end": 24.534874,
                      "confidence": 0.99560547,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "I've"
                    },
                    {
                      "word": "added",
                      "start": 24.534874,
                      "end": 24.854876,
                      "confidence": 0.9873047,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "added"
                    },
                    {
                      "word": "two",
                      "start": 24.854876,
                      "end": 25.094875,
                      "confidence": 0.79541016,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "two"
                    },
                    {
                      "word": "to",
                      "start": 25.094875,
                      "end": 25.254875,
                      "confidence": 0.8339844,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "to"
                    },
                    {
                      "word": "your",
                      "start": 25.254875,
                      "end": 25.414875,
                      "confidence": 0.99902344,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "your"
                    },
                    {
                      "word": "service",
                      "start": 25.414875,
                      "end": 25.734875,
                      "confidence": 0.99560547,
                      "speaker": 0,
                      "speaker_confidence": 0.6558119,
                      "punctuated_word": "service."
                    },
                    {
                      "word": "is",
                      "start": 25.734875,
                      "end": 25.894875,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.49876177,
                      "punctuated_word": "Is"
                    },
                    {
                      "word": "there",
                      "start": 25.894875,
                      "end": 26.054874,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.49876177,
                      "punctuated_word": "there"
                    },
                    {
                      "word": "anything",
                      "start": 26.054874,
                      "end": 26.294874,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.49876177,
                      "punctuated_word": "anything"
                    },
                    {
                      "word": "else",
                      "start": 26.294874,
                      "end": 26.534874,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.49876177,
                      "punctuated_word": "else"
                    },
                    {
                      "word": "that",
                      "start": 26.534874,
                      "end": 26.694874,
                      "confidence": 0.63183594,
                      "speaker": 0,
                      "speaker_confidence": 0.49876177,
                      "punctuated_word": "that"
                    },
                    {
                      "word": "i",
                      "start": 26.694874,
                      "end": 26.774876,
                      "confidence": 0.99902344,
                      "speaker": 0,
                      "speaker_confidence": 0.49876177,
                      "punctuated_word": "I"
                    },
                    {
                      "word": "can",
                      "start": 26.774876,
                      "end": 26.934875,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.49876177,
                      "punctuated_word": "can"
                    },
                    {
                      "word": "help",
                      "start": 26.934875,
                      "end": 27.094875,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.49876177,
                      "punctuated_word": "help"
                    },
                    {
                      "word": "you",
                      "start": 27.094875,
                      "end": 27.174875,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.49876177,
                      "punctuated_word": "you"
                    },
                    {
                      "word": "with",
                      "start": 27.174875,
                      "end": 27.734875,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.49876177,
                      "punctuated_word": "with?"
                    },
                    {
                      "word": "no",
                      "start": 28.054874,
                      "end": 28.534874,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.49876177,
                      "punctuated_word": "No."
                    },
                    {
                      "word": "thank",
                      "start": 28.534874,
                      "end": 28.774876,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.5973705,
                      "punctuated_word": "Thank"
                    },
                    {
                      "word": "you",
                      "start": 28.774876,
                      "end": 29.334873,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.5973705,
                      "punctuated_word": "you."
                    },
                    {
                      "word": "goodbye",
                      "start": 29.334875,
                      "end": 29.974874,
                      "confidence": 0.99902344,
                      "speaker": 0,
                      "speaker_confidence": 0.5973705,
                      "punctuated_word": "Goodbye."
                    },
                    {
                      "word": "goodbye",
                      "start": 30.374874,
                      "end": 31.014874,
                      "confidence": 0.9995117,
                      "speaker": 0,
                      "speaker_confidence": 0.5973705,
                      "punctuated_word": "Goodbye."
                    },
                    {
                      "word": "have",
                      "start": 31.014874,
                      "end": 31.334875,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.5973705,
                      "punctuated_word": "Have"
                    },
                    {
                      "word": "a",
                      "start": 31.334875,
                      "end": 31.494875,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0.5973705,
                      "punctuated_word": "a"
                    },
                    {
                      "word": "nice",
                      "start": 31.494875,
                      "end": 31.654875,
                      "confidence": 0.99902344,
                      "speaker": 0,
                      "speaker_confidence": 0.5973705,
                      "punctuated_word": "nice"
                    },
                    {
                      "word": "day",
                      "start": 31.654875,
                      "end": 31.894875,
                      "confidence": 1,
                      "speaker": 0,
                      "speaker_confidence": 0,
                      "punctuated_word": "day."
                    }
                  ],
                  "paragraphs": {
                    "transcript": "\nSpeaker 0: Hello. This is ex
                      ample.com. My name is Bob. How can I help y
                      ou? Hi.\n\nI'd like to add Fu to my service
                      . Okay. Can you give me your name and phone
                       number so I can look up your account? My n
                      ame is Alice, and my number is 1234567890.
                      Thank you.\n\nOkay. I've added two to your
                      service. Is there anything else that I can
                      help you with? No. Thank you.\n\nGoodbye. G
                      oodbye. Have a nice day.",
                    "paragraphs": [
                      {
                        "sentences": [
                          {
                            "text": "Hello.",
                            "start": 1.1999999,
                            "end": 1.76
                          },
                          {
                            "text": "This is example.com.",
                            "start": 1.76,
                            "end": 3.4399998
                          },
                          {
                            "text": "My name is Bob.",
                            "start": 3.4399998,
                            "end": 4.3199997
                          },
                          {
                            "text": "How can I help you?",
                            "start": 4.3199997,
                            "end": 5.52
                          },
                          {
                            "text": "Hi.",
                            "start": 5.6,
                            "end": 6.3199997
                          }
                        ],
                        "speaker": 0,
                        "num_words": 14,
                        "start": 1.1999999,
                        "end": 6.3199997
                      },
                      {
                        "sentences": [
                          {
                            "text": "I'd like to add Fu to my ser
                              vice.",
                            "start": 6.3199997,
                            "end": 8.799999
                          },
                          {
                            "text": "Okay.",
                            "start": 9.2,
                            "end": 9.839999
                          },
                          {
                            "text": "Can you give me your name an
                              d phone number so I can look up you
                              r account?",
                            "start": 10.16,
                            "end": 13.12
                          },
                          {
                            "text": "My name is Alice, and my num
                              ber is 1234567890.",
                            "start": 13.735,
                            "end": 20.615
                          },
                          {
                            "text": "Thank you.",
                            "start": 20.775,
                            "end": 21.654999
                          }
                        ],
                        "speaker": 0,
                        "num_words": 36,
                        "start": 6.3199997,
                        "end": 21.654999
                      },
                      {
                        "sentences": [
                          {
                            "text": "Okay.",
                            "start": 22.935,
                            "end": 23.335
                          },
                          {
                            "text": "I've added two to your servi
                              ce.",
                            "start": 24.134874,
                            "end": 25.734875
                          },
                          {
                            "text": "Is there anything else that
                              I can help you with?",
                            "start": 25.734875,
                            "end": 27.734875
                          },
                          {
                            "text": "No.",
                            "start": 28.054874,
                            "end": 28.534874
                          },
                          {
                            "text": "Thank you.",
                            "start": 28.534874,
                            "end": 29.334873
                          }
                        ],
                        "speaker": 0,
                        "num_words": 20,
                        "start": 22.935,
                        "end": 29.334873
                      },
                      {
                        "sentences": [
                          {
                            "text": "Goodbye.",
                            "start": 29.334875,
                            "end": 29.974874
                          },
                          {
                            "text": "Goodbye.",
                            "start": 30.374874,
                            "end": 31.014874
                          },
                          {
                            "text": "Have a nice day.",
                            "start": 31.014874,
                            "end": 31.894875
                          }
                        ],
                        "speaker": 0,
                        "num_words": 6,
                        "start": 29.334875,
                        "end": 31.894875
                      }
                    ]
                  }
                }
              ]
            }
          ]
        }
      },
      "encoding": "json",
      "vendor": "deepgram",
      "schema": "deepgram_prerecorded",
      "product": "transcription"
    }
  ],
  "attachments": [],
  "uuid": "019f15a6-a752-826f-b9a2-279e0d16bc46"
}

A.6. Signed vCon

This example vCon is the signed form of the Two Party Call vCon With Externally Referenced Recording (Appendix A.4) example. The private key used to sign this can be found at:

https://raw.githubusercontent.com/vcon-dev/vcon/main/certs/fake_grp.key

The certificate chain is included in the x5c parameter of the header Object.

The unformatted version of the following example can be downloaded from: https://raw.githubusercontent.com/ietf-wg-vcon/draft-ietf-vcon-vcon-core/refs/heads/main/examples/ab_call_ext_rec_signed.vcon

{
  "payload": "eyJwYXJ0aWVzIjpbeyJ0ZWwiOiIrMTIzNDU2Nzg5MDEiLCJuYW1
    lIjoiQWxpY2UifSx7InRlbCI6IisxOTg3NjU0MzIxMCIsIm5hbWUiOiJCb2Ii
    fV0sImRpYWxvZyI6W3sidHlwZSI6InJlY29yZGluZyIsInN0YXJ0IjoiMjAyM
    i0wNi0yMVQxNzo1MzoyNi4wMDArMDA6MDAiLCJkdXJhdGlvbiI6MzMuMTIsIn
    BhcnRpZXMiOlswLDFdLCJ1cmwiOiJodHRwczovL2dpdGh1Yi5jb20vaWV0Zi1
    3Zy12Y29uL2RyYWZ0LWlldGYtdmNvbi12Y29uLWNvcmUvcmF3L3JlZnMvaGVh
    ZHMvbWFpbi9leGFtcGxlcy9hYl9jYWxsLm1wMyIsIm1lZGlhdHlwZSI6ImF1Z
    GlvL3gtbXAzIiwiZmlsZW5hbWUiOiJhYl9jYWxsLm1wMyIsImNvbnRlbnRfaG
    FzaCI6InNoYTUxMi1HTHk2SVBhSVVNMUdxelpxZklQWmxXamFEc05nTnZaTTB
    pQ09OTlRobkgwYTc1ZmhVTTZjWXpMWjVHeW5TVVJSRXZad21PaDU0LTJsUlJp
    ZXlqODJVUSJ9XSwiYW5hbHlzaXMiOltdLCJhdHRhY2htZW50cyI6W10sInV1a
    WQiOiIwMTlmMTVhNi1hNzUyLTgyNmYtYjlhMi0yNzllMGQxNmJjNDYifQ",
  "signatures": [
    {
      "header": {
        "x5c": [
          "MIID0TCCArkCAQEwDQYJKoZIhvcNAQELBQAwgasxCzAJBgNVBAYTAl
            VTMQswCQYDVQQIDAJNQTERMA8GA1UEBwwIRmFrZXRvd24xETAPBgN
            VBAoMCEZha2VWY29uMREwDwYDVQQLDAhEaXZpc2lvbjEYMBYGA1UE
            AwwPZGl2LmZha2V2Y29uLmlvMSEwHwYJKoZIhvcNAQkBFhJhZG1pb
            kBmYWtldmNvbi5vcmcxGTAXBgNVHREMEGRpdi5mYWtldmNvbi5vcm
            cwHhcNMjIwNjA0MDE0MzI1WhcNMzIwNjAxMDE0MzI1WjCBsDELMAk
            GA1UEBhMCVVMxCzAJBgNVBAgMAk1BMREwDwYDVQQHDAhGYWtldG93
            bjERMA8GA1UECgwIRmFrZVZjb24xDjAMBgNVBAsMBUdyb3VwMRwwG
            gYDVQQDDBNncnAuZGl2LmZha2V2Y29uLmlvMSEwHwYJKoZIhvcNAQ
            kBFhJhZG1pbkBmYWtldmNvbi5vcmcxHTAbBgNVHREMFGdycC5kaXY
            uZmFrZXZjb24ub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
            CgKCAQEAtMtTCxeIROb1FmWIexe7Op95qYIVNEqn+fDghxWqoYm6T
            75BGsl4rB9txFQeef3Q5SJIzeqffJDssXDsyREuwQ2iTcOrZaZxs8
            h1NX9NjVD6MMAwx7tw0Cgmu8rj6+/Kjs0KI8OzCuDXZGTGf/bH6EQ
            W85qYh9IF0Pvijf3uq+HCke6WApusx76LpUp36IzvYEuTbWBFeoLo
            +dyUdWmXpj0ghHiWZtT5zxJn9VrUhJX5KlaI0palWd0fOnr7mkdq7
            9sFsKjEOcr1lanceAicCpD3/zRW+7AS8atGKAMfe2CcXEABucI7Dt
            tLMXcDIJM6EOkyW7n4due1RXGuNgnjeQIDAQABMA0GCSqGSIb3DQE
            BCwUAA4IBAQAQLjhKomSx1OqThhcO+aK0rzX6RjKh0eM0X7O7pPC8
            1HxZKCDLhDvnUO9++17U6ba0bTnznKYKKG7HnDcB4dKBbH8XP2u3E
            nDskyoMrKpYRsRKwwJa8+RwOS7JEg+OtXYCRbWZvPjAC/z6o6OZK+
            QPTyK5Grw2Px2mTr6BAdBQv7XsYWBRwOZyvSGnKyK60jcPlYUnu6Q
            t0fYXiYp6qF5l956fuT0d2UyDkM7S/Z7K+OC9+aIBNKH32B3nfXqZ
            PuP8WuiTOxcMwnefPwjxaqndFUkyk2Y+i6nXU8oN/DGUOTfY4xbm3
            s3q7Dq5QPtq5kljB9yYkvcOULCSAmWBZl+G",
          "MIIEyTCCArECAQEwDQYJKoZIhvcNAQELBQAwgagxCzAJBgNVBAYTAl
            VTMQswCQYDVQQIDAJNQTERMA8GA1UEBwwIRmFrZXRvd24xFTATBgN
            VBAoMDEZha2VWY29uIEluYzESMBAGA1UECwwJQ29ycG9yYXRlMRQw
            EgYDVQQDDAtmYWtldmNvbi5pbzEhMB8GCSqGSIb3DQEJARYSYWRta
            W5AZmFrZXZjb24ub3JnMRUwEwYDVR0RDAxmYWtldmNvbi5vcmcwHh
            cNMjIwNTI5MjEzOTMxWhcNMzIwNTI2MjEzOTMxWjCBqzELMAkGA1U
            EBhMCVVMxCzAJBgNVBAgMAk1BMREwDwYDVQQHDAhGYWtldG93bjER
            MA8GA1UECgwIRmFrZVZjb24xETAPBgNVBAsMCERpdmlzaW9uMRgwF
            gYDVQQDDA9kaXYuZmFrZXZjb24uaW8xITAfBgkqhkiG9w0BCQEWEm
            FkbWluQGZha2V2Y29uLm9yZzEZMBcGA1UdEQwQZGl2LmZha2V2Y29
            uLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM81
            SKie1S78VAOBDc3LflYNSL9phecmjQs/9P+iqDXSVm3xpoqszGoLn
            7w21aUAxl++F9Z80Tc70URn2qqUcVTYcx3SmgHuYgspEmJsMRor/m
            n3HpHr2ajh+26RKgDGPBrtebeH1si8mX15a/ICzHxrUaE2Y/6DZ/2
            wGTXrAE4bYAOUaYft5GGSZl6yP6dXg3EJy2bK2cUTdMIZG/Y7Ny1D
            3N4V7MBirDd5FU7k6pMbyr3d/xoi8VL8F1mRCf6zxfFOjaMFT0atE
            iTp3M0rw6iS08hy0cDFsPJzIcPgXEitUgGPo/NLgeb8ZmL1kg9B2v
            MgaanbuZB6il79A4GgDIUCAwEAATANBgkqhkiG9w0BAQsFAAOCAgE
            AWOJJlvSQDsDROQZNdX3kMkAH3HYyAlE7LHNtIYHVhyt7I7WuqS6Z
            GvSoxSfkT0GdAN7cV+jchdZpAnpCXGX+yHuSvrw4oSqigdSLeSUMx
            2zaSv4wLAvydC/zDkHIRObyuDEKyy/pa4Na0aunPU3E1Bg0V+JqQ3
            RUJIy1v6AGLrliwaEIgP3Clzi/u640dWBHabOEjxFj9bX73+FRWhi
            t4EzOJYKvti1EXlmRjMbj3SmsrcbGMrpu4WipEG5S05VlMhXXSyQq
            9IScFho5CFtamDgI3jL49lyrx0+CcjDkw0nW9fXdAtB3BhSYEXdLu
            JAvLRQixUQFwH23doumPi1uW8euEhHTRo1pEFWQ5U59NOTUA5Ghuu
            po0aM2CnDD5Re8uO3ChilCUb0FlwgMD/7ABSd1LChU8iluhKy9CEB
            R2zc8uTqW43Gcv/psBaejgOKJlxZuusGVvuV1nTHRa4hmFYxxPel7
            ogeZzGQqFjBlb35CE+BcGYY0ViaHefy+fmi/fN6NrrN6pBOPjVZbp
            CFn+wFTUyrMU5Vq/FaPe0us7i3paQcwIz9wyide5OztpxebY8UnXm
            y22X+6PkHB0jnL35Qe8xl7Z0nMZNdy4xkzGgaa6talRDPhKkY1lId
            w+KdCXJuUc7rkLKa5po9SPdvVLhEPu26SHkI0I+d5hz+gMp8=",
          "MIIGMzCCBBugAwIBAgIUHk/6QbzjDZ9AONAFvwYJqB/jbvowDQYJKo
            ZIhvcNAQELBQAwgagxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJNQTE
            RMA8GA1UEBwwIRmFrZXRvd24xFTATBgNVBAoMDEZha2VWY29uIElu
            YzESMBAGA1UECwwJQ29ycG9yYXRlMRQwEgYDVQQDDAtmYWtldmNvb
            i5pbzEhMB8GCSqGSIb3DQEJARYSYWRtaW5AZmFrZXZjb24ub3JnMR
            UwEwYDVR0RDAxmYWtldmNvbi5vcmcwHhcNMjIwNTI5MjEzOTMxWhc
            NMzIwNTI2MjEzOTMxWjCBqDELMAkGA1UEBhMCVVMxCzAJBgNVBAgM
            Ak1BMREwDwYDVQQHDAhGYWtldG93bjEVMBMGA1UECgwMRmFrZVZjb
            24gSW5jMRIwEAYDVQQLDAlDb3Jwb3JhdGUxFDASBgNVBAMMC2Zha2
            V2Y29uLmlvMSEwHwYJKoZIhvcNAQkBFhJhZG1pbkBmYWtldmNvbi5
            vcmcxFTATBgNVHREMDGZha2V2Y29uLm9yZzCCAiIwDQYJKoZIhvcN
            AQEBBQADggIPADCCAgoCggIBAMIeaqkm8pn6mwUzWBgnQiY9Jr3Vy
            VamxBc9/duT8eCN9mmANGzX5zGj86KtGjlDcoAzANrtsr2Dpz4zra
            29HWbwbOa1ZTOOaR93QgifkS802zp+zHGGRaKlq3euDqDVzyXinhs
            vXOVlEwkOrAvV6kUcTIzcxVibrFfHttzv/hXUNxjCouAE7MIG6wO8
            y+E2bBkg7R5ydfeU4Q9npBefwtiQ8oWf0C46mDYFQ8l31goae17Vp
            iyS3t4h5HL+1yqdYJSWms5Qh0vp9req5AjwuHIDBxNLpO2gY1SQmS
            dO03oLcZwBglGKlpQSwYgr9J5uo2B+NV9aYKEO51bySinSF8T4D/o
            4cq6oyJLXBwmSsLbjjVIQBoSdRBmWh8zE2ZzFNaaBlYO9ikIaWXwb
            tkbsE+4QpOaOj/kUIHLFI9iOhOidsInaOfgYzw12FtGE1Wq5x5Xsz
            wWpPWU8NQw8gzTzFzVObxrfcsXrs0s6feuTCDMt5Zht2HCWFr9TmY
            DFAfOB05kFWTi5sE5KYaP54iJvjAFmuTDjlif7Z8ZWVal9XB+g3sM
            yQ8DVEj/0dXS+nRVuJQlUH4ql9SUIwK63RKdedALYC6X1j2lgK9aT
            uL+cyNJ5SbuNA95CxNgvWtBrcO6HxlbmIDxKrAAo5aj4hnlQcY4RR
            bNwppCAjK+zcASlpyvRAgMBAAGjUzBRMB0GA1UdDgQWBBSSDtfqU6
            +DEyYPCar08yVnnZSFzTAfBgNVHSMEGDAWgBSSDtfqU6+DEyYPCar
            08yVnnZSFzTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUA
            A4ICAQC8JDxTdmc86YFdKElWQnWxoPMsPeRyDYQoVTC2wydZsdJ5d
            GbkAhYlPPxK+zypP18fGry5PHAHl9mZYz+FdGjNTwllcfN9/G0Sdo
            y4kU9eN9KfC9OUIkBIq8D0r7ANT3l3XmGbnIxWJEtb0SyTcqk3dwW
            cNTqGguhQ03jUKW5yUpVoQjN4TtmHyweoYTNi+HKsCUvEXGdA9wdh
            4jVOqYeepmsax5eTUJsKuCKqQ3+xB7JONw85imfVotySCXsoMe7lu
            SRYuldn8SBIpKYUGJlpWIi6Gr0mLwHarrYoi9bwtcKAxRNXZiGQgh
            iUw2Zsw+jmgBrEtI4Iarg8wWqJ5Mov7MsTVpnoZ5Xywr0GznDlgcN
            tyqMibOULeM8yLPQrHn/tQjSiP3eUPz6+Zb9FqzQJCCi2UiauD4mO
            gzBSCCbew9PDYb2QeMZqNZmN3eVNMV4hh7t9jTc0zqPF5jluddVmp
            dHxLx/T9XZuSV21p8clNprJNQxprtHpxDxjhNMIrcV39rzi9tNikw
            mzRMf0r40f/JWnaV668sekDXtvIj8pZwyE4FNuaiJwojkQxDfjqk6
            7Qs5NUQsFcaIwMes8It74ASHm8DUKEhDT2ASgMtUDwKWrOBefrSPq
            jY7+EMh2yVZnQhMwpx4s7CH0za32Yq+KC8GotHdI6jisDEom7aHgl
            g=="
        ],
        "alg": "RS256",
        "uuid": "019f15a6-a752-826f-b9a2-279e0d16bc46"
      },
      "signature": "bm5QIMo_J7XBhB6oRYaHo-0ENKjY7jJvrIq1mtm0BBXp7
        Qdw4b8tC5ehb6fpebyLNrwp39S7MomHD85jj0pVyP7U5SX9q3x_otyGBV
        -T4Jlm8tpBLKnvqS-5Q80tBClVfF6BOck2iFuWcOdCk_zGUpl32lgNzXs
        HDQPUGVrzXDm0E3KrI625SiFKwX36Le56RfTrNLyT62R7DNYPpaNYtmqz
        fDmLkO_vYu0rGBRksp2qK-xU12cF7A077fozpPD52qUNFF4NuiinGMQP3
        hd4NuQRTZhos_n5PRTDI1AoVTSu1hOh2l-nrfhVNA13uVU6rm7JDaIAEv
        GvoITPqg7H6A",
      "protected": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6W
        yJNSUlEMFRDQ0Fya0NBUUV3RFFZSktvWklodmNOQVFFTEJRQXdnYXN4Q3
        pBSkJnTlZCQVlUQWxWVE1Rc3dDUVlEVlFRSURBSk5RVEVSTUE4R0ExVUV
        Cd3dJUm1GclpYUnZkMjR4RVRBUEJnTlZCQW9NQ0VaaGEyVldZMjl1TVJF
        d0R3WURWUVFMREFoRWFYWnBjMmx2YmpFWU1CWUdBMVVFQXd3UFpHbDJMb
        VpoYTJWMlkyOXVMbWx2TVNFd0h3WUpLb1pJaHZjTkFRa0JGaEpoWkcxcG
        JrQm1ZV3RsZG1OdmJpNXZjbWN4R1RBWEJnTlZIUkVNRUdScGRpNW1ZV3R
        sZG1OdmJpNXZjbWN3SGhjTk1qSXdOakEwTURFME16STFXaGNOTXpJd05q
        QXhNREUwTXpJMVdqQ0JzREVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQ
        kFnTUFrMUJNUkV3RHdZRFZRUUhEQWhHWVd0bGRHOTNiakVSTUE4R0ExVU
        VDZ3dJUm1GclpWWmpiMjR4RGpBTUJnTlZCQXNNQlVkeWIzVndNUnd3R2d
        ZRFZRUUREQk5uY25BdVpHbDJMbVpoYTJWMlkyOXVMbWx2TVNFd0h3WUpL
        b1pJaHZjTkFRa0JGaEpoWkcxcGJrQm1ZV3RsZG1OdmJpNXZjbWN4SFRBY
        kJnTlZIUkVNRkdkeWNDNWthWFl1Wm1GclpYWmpiMjR1YjNKbk1JSUJJak
        FOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBdE10VEN
        4ZUlST2IxRm1XSWV4ZTdPcDk1cVlJVk5FcW4rZkRnaHhXcW9ZbTZUNzVC
        R3NsNHJCOXR4RlFlZWYzUTVTSkl6ZXFmZkpEc3NYRHN5UkV1d1EyaVRjT
        3JaYVp4czhoMU5YOU5qVkQ2TU1Bd3g3dHcwQ2dtdThyajYrL0tqczBLST
        hPekN1RFhaR1RHZi9iSDZFUVc4NXFZaDlJRjBQdmlqZjN1cStIQ2tlNld
        BcHVzeDc2THBVcDM2SXp2WUV1VGJXQkZlb0xvK2R5VWRXbVhwajBnaEhp
        V1p0VDV6eEpuOVZyVWhKWDVLbGFJMHBhbFdkMGZPbnI3bWtkcTc5c0ZzS
        2pFT2NyMWxhbmNlQWljQ3BEMy96UlcrN0FTOGF0R0tBTWZlMkNjWEVBQn
        VjSTdEdHRMTVhjRElKTTZFT2t5VzduNGR1ZTFSWEd1TmduamVRSURBUUF
        CTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBUUxqaEtvbVN4MU9xVGho
        Y08rYUswcnpYNlJqS2gwZU0wWDdPN3BQQzgxSHhaS0NETGhEdm5VTzkrK
        zE3VTZiYTBiVG56bktZS0tHN0huRGNCNGRLQmJIOFhQMnUzRW5Ec2t5b0
        1yS3BZUnNSS3d3SmE4K1J3T1M3SkVnK090WFlDUmJXWnZQakFDL3o2bzZ
        PWksrUVBUeUs1R3J3MlB4Mm1UcjZCQWRCUXY3WHNZV0JSd09aeXZTR25L
        eUs2MGpjUGxZVW51NlF0MGZZWGlZcDZxRjVsOTU2ZnVUMGQyVXlEa003U
        y9aN0srT0M5K2FJQk5LSDMyQjNuZlhxWlB1UDhXdWlUT3hjTXduZWZQd2
        p4YXFuZEZVa3lrMlkraTZuWFU4b04vREdVT1RmWTR4Ym0zczNxN0RxNVF
        QdHE1a2xqQjl5WWt2Y09VTENTQW1XQlpsK0ciLCJNSUlFeVRDQ0FyRUNB
        UUV3RFFZSktvWklodmNOQVFFTEJRQXdnYWd4Q3pBSkJnTlZCQVlUQWxWV
        E1Rc3dDUVlEVlFRSURBSk5RVEVSTUE4R0ExVUVCd3dJUm1GclpYUnZkMj
        R4RlRBVEJnTlZCQW9NREVaaGEyVldZMjl1SUVsdVl6RVNNQkFHQTFVRUN
        3d0pRMjl5Y0c5eVlYUmxNUlF3RWdZRFZRUUREQXRtWVd0bGRtTnZiaTVw
        YnpFaE1COEdDU3FHU0liM0RRRUpBUllTWVdSdGFXNUFabUZyWlhaamIyN
        HViM0puTVJVd0V3WURWUjBSREF4bVlXdGxkbU52Ymk1dmNtY3dIaGNOTW
        pJd05USTVNakV6T1RNeFdoY05Nekl3TlRJMk1qRXpPVE14V2pDQnF6RUx
        NQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdNQWsxQk1SRXdEd1lEVlFR
        SERBaEdZV3RsZEc5M2JqRVJNQThHQTFVRUNnd0lSbUZyWlZaamIyNHhFV
        EFQQmdOVkJBc01DRVJwZG1semFXOXVNUmd3RmdZRFZRUUREQTlrYVhZdV
        ptRnJaWFpqYjI0dWFXOHhJVEFmQmdrcWhraUc5dzBCQ1FFV0VtRmtiV2x
        1UUdaaGEyVjJZMjl1TG05eVp6RVpNQmNHQTFVZEVRd1FaR2wyTG1aaGEy
        VjJZMjl1TG05eVp6Q0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQ
        URDQ0FRb0NnZ0VCQU04MVNLaWUxUzc4VkFPQkRjM0xmbFlOU0w5cGhlY2
        1qUXMvOVAraXFEWFNWbTN4cG9xc3pHb0xuN3cyMWFVQXhsKytGOVo4MFR
        jNzBVUm4ycXFVY1ZUWWN4M1NtZ0h1WWdzcEVtSnNNUm9yL21uM0hwSHIy
        YWpoKzI2UktnREdQQnJ0ZWJlSDFzaThtWDE1YS9JQ3pIeHJVYUUyWS82R
        FovMndHVFhyQUU0YllBT1VhWWZ0NUdHU1psNnlQNmRYZzNFSnkyYksyY1
        VUZE1JWkcvWTdOeTFEM040VjdNQmlyRGQ1RlU3azZwTWJ5cjNkL3hvaTh
        WTDhGMW1SQ2Y2enhmRk9qYU1GVDBhdEVpVHAzTTBydzZpUzA4aHkwY0RG
        c1BKekljUGdYRWl0VWdHUG8vTkxnZWI4Wm1MMWtnOUIydk1nYWFuYnVaQ
        jZpbDc5QTRHZ0RJVUNBd0VBQVRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQW
        dFQVdPSkpsdlNRRHNEUk9RWk5kWDNrTWtBSDNIWXlBbEU3TEhOdElZSFZ
        oeXQ3STdXdXFTNlpHdlNveFNma1QwR2RBTjdjVitqY2hkWnBBbnBDWEdY
        K3lIdVN2cnc0b1NxaWdkU0xlU1VNeDJ6YVN2NHdMQXZ5ZEMvekRrSElST
        2J5dURFS3l5L3BhNE5hMGF1blBVM0UxQmcwVitKcVEzUlVKSXkxdjZBR0
        xybGl3YUVJZ1AzQ2x6aS91NjQwZFdCSGFiT0VqeEZqOWJYNzMrRlJXaGl
        0NEV6T0pZS3Z0aTFFWGxtUmpNYmozU21zcmNiR01ycHU0V2lwRUc1UzA1
        VmxNaFhYU3lRcTlJU2NGaG81Q0Z0YW1EZ0kzakw0OWx5cngwK0NjakRrd
        zBuVzlmWGRBdEIzQmhTWUVYZEx1SkF2TFJRaXhVUUZ3SDIzZG91bVBpMX
        VXOGV1RWhIVFJvMXBFRldRNVU1OU5PVFVBNUdodXVwbzBhTTJDbkRENVJ
        lOHVPM0NoaWxDVWIwRmx3Z01ELzdBQlNkMUxDaFU4aWx1aEt5OUNFQlIy
        emM4dVRxVzQzR2N2L3BzQmFlamdPS0pseFp1dXNHVnZ1VjFuVEhSYTRob
        UZZeHhQZWw3b2dlWnpHUXFGakJsYjM1Q0UrQmNHWVkwVmlhSGVmeStmbW
        kvZk42TnJyTjZwQk9QalZaYnBDRm4rd0ZUVXlyTVU1VnEvRmFQZTB1czd
        pM3BhUWN3SXo5d3lpZGU1T3p0cHhlYlk4VW5YbXkyMlgrNlBrSEIwam5M
        MzVRZTh4bDdaMG5NWk5keTR4a3pHZ2FhNnRhbFJEUGhLa1kxbElkdytLZ
        ENYSnVVYzdya0xLYTVwbzlTUGR2VkxoRVB1MjZTSGtJMEkrZDVoeitnTX
        A4PSIsIk1JSUdNekNDQkJ1Z0F3SUJBZ0lVSGsvNlFiempEWjlBT05BRnZ
        3WUpxQi9qYnZvd0RRWUpLb1pJaHZjTkFRRUxCUUF3Z2FneEN6QUpCZ05W
        QkFZVEFsVlRNUXN3Q1FZRFZRUUlEQUpOUVRFUk1BOEdBMVVFQnd3SVJtR
        nJaWFJ2ZDI0eEZUQVRCZ05WQkFvTURFWmhhMlZXWTI5dUlFbHVZekVTTU
        JBR0ExVUVDd3dKUTI5eWNHOXlZWFJsTVJRd0VnWURWUVFEREF0bVlXdGx
        kbU52Ymk1cGJ6RWhNQjhHQ1NxR1NJYjNEUUVKQVJZU1lXUnRhVzVBWm1G
        clpYWmpiMjR1YjNKbk1SVXdFd1lEVlIwUkRBeG1ZV3RsZG1OdmJpNXZjb
        WN3SGhjTk1qSXdOVEk1TWpFek9UTXhXaGNOTXpJd05USTJNakV6T1RNeF
        dqQ0JxREVMTUFrR0ExVUVCaE1DVlZNeEN6QUpCZ05WQkFnTUFrMUJNUkV
        3RHdZRFZRUUhEQWhHWVd0bGRHOTNiakVWTUJNR0ExVUVDZ3dNUm1GclpW
        WmpiMjRnU1c1ak1SSXdFQVlEVlFRTERBbERiM0p3YjNKaGRHVXhGREFTQ
        mdOVkJBTU1DMlpoYTJWMlkyOXVMbWx2TVNFd0h3WUpLb1pJaHZjTkFRa0
        JGaEpoWkcxcGJrQm1ZV3RsZG1OdmJpNXZjbWN4RlRBVEJnTlZIUkVNREd
        aaGEyVjJZMjl1TG05eVp6Q0NBaUl3RFFZSktvWklodmNOQVFFQkJRQURn
        Z0lQQURDQ0Fnb0NnZ0lCQU1JZWFxa204cG42bXdVeldCZ25RaVk5SnIzV
        nlWYW14QmM5L2R1VDhlQ045bW1BTkd6WDV6R2o4Nkt0R2psRGNvQXpBTn
        J0c3IyRHB6NHpyYTI5SFdid2JPYTFaVE9PYVI5M1FnaWZrUzgwMnpwK3p
        IR0dSYUtscTNldURxRFZ6eVhpbmhzdlhPVmxFd2tPckF2VjZrVWNUSXpj
        eFZpYnJGZkh0dHp2L2hYVU54akNvdUFFN01JRzZ3Tzh5K0UyYkJrZzdSN
        XlkZmVVNFE5bnBCZWZ3dGlROG9XZjBDNDZtRFlGUThsMzFnb2FlMTdWcG
        l5UzN0NGg1SEwrMXlxZFlKU1dtczVRaDB2cDlyZXE1QWp3dUhJREJ4Tkx
        wTzJnWTFTUW1TZE8wM29MY1p3QmdsR0tscFFTd1lncjlKNXVvMkIrTlY5
        YVlLRU81MWJ5U2luU0Y4VDREL280Y3E2b3lKTFhCd21Tc0xiampWSVFCb
        1NkUkJtV2g4ekUyWnpGTmFhQmxZTzlpa0lhV1h3YnRrYnNFKzRRcE9hT2
        ova1VJSExGSTlpT2hPaWRzSW5hT2ZnWXp3MTJGdEdFMVdxNXg1WHN6d1d
        wUFdVOE5RdzhnelR6RnpWT2J4cmZjc1hyczBzNmZldVRDRE10NVpodDJI
        Q1dGcjlUbVlERkFmT0IwNWtGV1RpNXNFNUtZYVA1NGlKdmpBRm11VERqb
        GlmN1o4WldWYWw5WEIrZzNzTXlROERWRWovMGRYUytuUlZ1SlFsVUg0cW
        w5U1VJd0s2M1JLZGVkQUxZQzZYMWoybGdLOWFUdUwrY3lOSjVTYnVOQTk
        1Q3hOZ3ZXdEJyY082SHhsYm1JRHhLckFBbzVhajRobmxRY1k0UlJiTndw
        cENBaksremNBU2xweXZSQWdNQkFBR2pVekJSTUIwR0ExVWREZ1FXQkJTU
        0R0ZnFVNitERXlZUENhcjA4eVZublpTRnpUQWZCZ05WSFNNRUdEQVdnQl
        NTRHRmcVU2K0RFeVlQQ2FyMDh5Vm5uWlNGelRBUEJnTlZIUk1CQWY4RUJ
        UQURBUUgvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFDOEpEeFRkbWM4
        NllGZEtFbFdRbld4b1BNc1BlUnlEWVFvVlRDMnd5ZFpzZEo1ZEdia0FoW
        WxQUHhLK3p5cFAxOGZHcnk1UEhBSGw5bVpZeitGZEdqTlR3bGxjZk45L0
        cwU2RveTRrVTllTjlLZkM5T1VJa0JJcThEMHI3QU5UM2wzWG1HYm5JeFd
        KRXRiMFN5VGNxazNkd1djTlRxR2d1aFEwM2pVS1c1eVVwVm9Rak40VHRt
        SHl3ZW9ZVE5pK0hLc0NVdkVYR2RBOXdkaDRqVk9xWWVlcG1zYXg1ZVRVS
        nNLdUNLcVEzK3hCN0pPTnc4NWltZlZvdHlTQ1hzb01lN2x1U1JZdWxkbj
        hTQklwS1lVR0pscFdJaTZHcjBtTHdIYXJyWW9pOWJ3dGNLQXhSTlhaaUd
        RZ2hpVXcyWnN3K2ptZ0JyRXRJNElhcmc4d1dxSjVNb3Y3TXNUVnBub1o1
        WHl3cjBHem5EbGdjTnR5cU1pYk9VTGVNOHlMUFFySG4vdFFqU2lQM2VVU
        Ho2K1piOUZxelFKQ0NpMlVpYXVENG1PZ3pCU0NDYmV3OVBEWWIyUWVNWn
        FOWm1OM2VWTk1WNGhoN3Q5alRjMHpxUEY1amx1ZGRWbXBkSHhMeC9UOVh
        adVNWMjFwOGNsTnBySk5ReHBydEhweER4amhOTUlyY1YzOXJ6aTl0Tmlr
        d216Uk1mMHI0MGYvSlduYVY2NjhzZWtEWHR2SWo4cFp3eUU0Rk51YWlKd
        29qa1F4RGZqcWs2N1FzNU5VUXNGY2FJd01lczhJdDc0QVNIbThEVUtFaE
        RUMkFTZ010VUR3S1dyT0JlZnJTUHFqWTcrRU1oMnlWWm5RaE13cHg0czd
        DSDB6YTMyWXErS0M4R290SGRJNmppc0RFb203YUhnbGc9PSJdfQ"
    }
  ]
}

A.7. Encrypted vCon

This example vCon is the encrypted form of the Signed vCon (Appendix A.6) example. The private key to decrypt it can be found at:

https://raw.githubusercontent.com/vcon-dev/vcon/main/certs/fake_grp.key

The unformatted version of the following example can be downloaded from: https://raw.githubusercontent.com/ietf-wg-vcon/draft-ietf-vcon-vcon-core/refs/heads/main/examples/ab_call_ext_rec_encrypted.vcon

{
  "protected": "eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkEyNTZDQkMtSFM1M
    TIifQ",
  "iv": "KKIKWbVbB27V0cQCenwbIg",
  "ciphertext": "P0B2TYhcy8G-gOoD-498biJyIqAfJJz124AJ0wyK2eGYhP4Y
    29pZfvuSO7O7xO331qCZrA12U2UQHbsTC2vGOs5nVej1ysIAkQH-pAzNgWdDV
    siVr5MCgkij4Jc6YLGRjRfm7XUpx9SfpSkQMkdFsOefMiSW4N8uDE7QvBSI6-
    S06l7O0qPhLuMXbdLQFsgMMXlvI40pax1ytUwQc1hH8lBVably_x8KmEtSkCO
    rKy5CsSbgCyIS-NrK4LI3o-m4jLHD5WKDxXn-YOVXSWD1rJA6un5PbweRb6rr
    0EKTpGs_MKb5ibsona9qVLr8JU5KV-dp2uHVqOa_migRhIfo6DxlhRaZHE2RC
    5bo7BW-jyufkm1YV4c2nbLfConBnimdgrkpoZsVqSsvv8xWZJCfy1bFhL0hUk
    7IDeO_d18OAMcnJ3QnwJzZro0MfUgXi0enlasRgO2TAUN0Zw0uxXPA9fs8KL8
    Ixf2Z3pYr0FexUAPUdsuaoQfrbWIJ1p4c2waRILZoOlMW63946GIVa09swYxW
    s1vXiusDOQI15QIfE7U1W7OWEKd16wyTyCZb6kDMTaitxXaiz6Yzwg344F1Xv
    h7MLntAQhmvK5OMIhdvlU86hP-ezUbxCb3F1ciRcgHVCwA-RYZxqfWE2Y3nN4
    cU31xGW2TwDt3R-NI1ca4MFifEbDMUyMEL1aZl6yR23SHgaMS3_zePBpiQEQI
    9GqDQVqnsD5flnW9-Pa0CDoF5r6awWPotJ3XR5dGTvM9BgO3rZNWcRdBFV5E-
    TbaRfMKBB-xTgSe6AfL500mQ6Zq0qbXOtM044qCTcBAyPE8H3nE689DhE4zvB
    DRwIMy9wA4mfKu1Z7tr0Pg7WgWnYECar5dh1wfHDjVjf_agbc854OhEE7exVZ
    VQHnVAbrnXWihuyEUj5lSz22WEju9xEAMjlnfdJYCEoSexdV_ZixHunMJIZQ_
    qBhntppgFXW9JWuY44goMfTzOigO-nNcNu6vkf7aPD9-DzQwCJ5ZFiKbslzgX
    bJH_CP3LFn6T8YbzkDPf07qEK1wKhtfQLUbLeIkH3Gdi6-8TqPiZBSPQ3p5hE
    wrkYQDLdejlpTt8DMEKRVQYBMPkZ2Zjivt8nOFmawrT7B5AvGrrlVewMlPwKZ
    cfWek-k13-jYuxlfcc2oTKdQ-cqBfKnTbR8kjVKyyyEVZYfSNV7hWJQ0OPCuw
    prxW5FHJ-tjoqJ_jkABbfqmikQNvstgq6XSkCbdMihKDMFp7EqAr66rjVHANr
    RmHnUUAR7T7OFCJK0HKL1UHBduyrFWVTWq3OzQS_QCOb5lzBwLsEZmSeiJ8SF
    vYqpUJ_X-6u3McsyPE_xKfi-rlG8eBKa0bZ6v-39C-x94oprfaAi7c_oZKzsv
    wc4k0P0LRXXiRPRC2QDCuHy7q5D9dmj6t_ce4sIR20VcSKbIejD-H24yCnWcI
    f3JUcUiwpUA3CkStcVWKMrIEkBSSKwaIbGS1oIz26cmU8NysjMPO8yGNGN2VP
    YRdDogP2FUmNmqG7FnCkN0AmQE0ey2Jrt6wFrPgByaKtsv-acIvrF-sq_BRyj
    6O_foQ6WQog_56XE7-CNc2J67x7IXQ8sZlK4md5Qj3ublBWz5jfuJN4j6cD4p
    bx-Xj8rEMigpfqP9L2KUFwcMOPHc8C0EsJqGHiL7u8aPTYKG58KWGyjOEZKk2
    v2xUT_Esi2Bn34FZYmgaCIEpk3mLTCVyRkxaH2BkiyG08KACp8FePeztgG7YO
    xRRAoD11Dpw3mwoo1kVsLvOQrVQBfUDpB2U2L9B1OU5p3NAQzTP6XQtwh1yfh
    4FAIskRvBCSRMXSVIXjJ73XiPuJeXvwSNtajkrSF7kDQrChv8DX95rpnmdehb
    0oEgeSwSH3a7vLIBrhp-xHabeaUd37wbrTO1Ie_dhKTSW1tvKJAP-LZ-XyL7Q
    a26O886s5Whz9eI_1wNZZVZjMe8_SJ0zufOGgKSxoIkPy7Zc3ecwQxfasMelM
    eUdNFNTm6MdbwGk6N4h-kZ8_f_4URxUf-WO0ArCgM_nWNZjDER_FWenM1Ffwe
    27QVmmX9s-nlxLl3KjiaGOFbzhxtWIElWd1awT8IIIeJC35-GtFkyr2eWHMHC
    zpf3yU5DIsNGhvAnd7nymxSSq73xgVtanzkPXQCHbfRupOyvEQLD3oPSOkHBi
    aMcRWg37I4Ir_-BpIMHvfU--BrY6ohrHvzt69Smql38_lKUnjOBQyzAh1-ZGF
    SZVgBf2Js2xdhhsxZ6TJOYVA4s2okO7pAwrffh9okwHd5noN4JMMh52Dz_Ey-
    mHi25vKOJD-5WYFbteO7OKgAdf7-lvruXwUGZcDGuLoM5KAaBK0PJJ0-DVbDd
    VHWJOqxzIUJSzTOaLHg9V9I4GxQYIpcUKUpvc1PAejuyri02rdJMG8G_9YLRe
    J34Z1xKKM7K-qPp8HC_6DlP5R6bQyQQAP9Z6dVWgiAHcZ1t9IMcfIcf8MKwxi
    kpcZCREWVZHqvSCbdu7oUjp3TpT-H9z5rl0m3kY0nsJMJMLVh7JykNYudyiqu
    O0sXHU-zVsykeEn45chQRByvkDgXLHy03OVH4ZmGAsJlnwwrHsVc5IlVZQ-20
    K005fAeEHrOicD_x5oyWdXIx6x6UbEgE8Ru28newWRaaDvSkocXqgvRvbRtgg
    L8DSHnPmeJ7EECJyXjmZYNSc0W1T-RMNaKe6U2vAwL775fW95OaJf4L0VyEsH
    LTAjFA-RA2iYXtwKFNBZwwekrZddaHDAmDY8OYg2WL63Fxg96oVqXWKtBSzRR
    X34dAaqyhOnjaPihQqREhXjr5kuj-Nyn7V03Ux1unDABK_5gpXIO6Jf4O-EBG
    E5PMVgLtK8Bw99Hxa6Taj_kIQpFqNXijz_wZElETpbQZ00j9MfxT5IYH_A3Yx
    QA77Ps4Nln_l9SGa0hwzIr8sHFlKvx7FF5Df0wXVEMxD8d8OS7oxDqy5AZG0L
    YbUp4fhrMZjumgr5iUfFTMJhFp0x_qYW0vNJK3QH0V0cWsq3FS_pSm8SsJ1Ie
    yAWiwhDKYaAmWiPQQXr0eGqVy46HqUxD_tDRdqZTOgXscVTcHMYXBRoOf0vdx
    pOmD2dUfPXODcavMqzC6OqJAcrBFOzsdiYI8ZtkmBkt8D-KeypSeXqdb3oYEA
    stStL0tdqKYvz6MEqknZlMNve4sKx3nmYgNyjHhyfPy57xp3tvQ46BtjZwOGj
    b8ZtDjiRwl05dL4NIlDWCT5l-bzIYs2nQGGRLH9Ldzr2NdHIAR3iu_QJnz9_i
    cP-RsBwhTl4c-Q-uwR5Mw9etg6Y8SD0_I0rFXeiFJnrEfRnAlyS-pWuRid613
    k3PNFSHJgTSeu0XAxNm5h0UxCScRSzksfHauNAInfOwM6tiStfTO3Nzvr8VXX
    wkx28Pav3BaZs-JjQ1d1ovEJpInWjR3WLCv51MunYZcydTlVT2C-qGpK4wzdX
    PyXyKDMlM7pE7iIBLTIRq7JKj3-wcJzefito3saaegPYG1BnnhimFhccDLjrR
    hEdb6zamEEJqoAVeWgjWmUlutJjvldMVyb6lL3O_q5QWC5H51lyVWQo6wzAtX
    qUK0bYm-XQUOqaE84CCO7XENp1wHPQCTsYeT7cOxCe8fhfCzwVqJDcaVzVW5M
    IfTdRG0HhEK4BS6-KI25Wy6vdMzRJLwX6tKOiw4fTQpSjVf-h64CCsmdSYoNw
    ztEOdXD86KLcu4ITgTo4WGZT4ouDJ5bDQFaxNRX7lEUUXb1pueRcNg_bnuXrg
    g60U1zCuq5xsL3IUK3Kq8eZOJ1nIUICoE6srgmMSoL7Pru1fzqIc2d_K6cdsI
    o3jo_O9R37dMWRhvx992I6CZqFDitP0A1RLOHnz8EfLuqJoU0kOXh7eRSKGEf
    VyWG-ixuG_QPIftMm9rKJzrPK3fsJd1yMFFMyEg8Kzi7EEp4cZKpZbHjQKHy-
    ifz7mWX2wW2we53oU3tjLpzxN_AcY15MjVUpYJyMBM2d9BORQelP28OOAHhJb
    6Dth5z-LBv7JdXTpx-iMvxL9zuzBieq9em-5OA9Ho8I3cZJ4R1e-Inq_K_Q0i
    QpiXwFRrkNwC8552hStAAbxJuaoKpGZzQ8dP9yN6MuApGN2vrGMeppftBKVko
    AZsJyHO20baWaNtgeb-RkPkXUZaiH0DwEF45L3gwGj7Vz575V0veuB4aIFwtP
    f7dNac3iu6eKGcYD8KAklg3h38sciHQA0-OhPMYrBj5NmI0CQttUJYG4n4lZG
    c7jXm0rShakXDvm6OshxYDgGza_KXQ2y01-kxobt8xM_s_uJGyIkH0Z0n_rVO
    8oBHDe33xdWyep0Xwa3npJDZzB7--9XTgiX3-AHOYfTCG8fSCSETkSg5OBgn2
    aCoJQAgxf6MMxE3DYBb-4t6NJcwCh_wNrqxv0I9l4LNbhjW5FRpp4UQnFAqhe
    8v7CKtU8vajXPQpSA_0bfSW0XxHYXulmxJd6P4g72Nv7-p_LcJkBAEmMwuiQg
    CNySPXy6ore6VESOuFYKHW5fq75JySmUCgcICu-gii8Mgx3hTGshl9IRwTUbj
    -jGProLHbs7a3KwSQyof8FfSDTQbgsqALVAgYeNsFdYAnqqjIr_nqwYLg6WKW
    Uccr4ionp4IVrIiP6gjQwwusKBPUnEPpI2w9DFjYy472oIECBdTyWxOw4fINQ
    G-k_po7j0HFmrVDrf9Qe42qwQJaZRZ0FQXlTUQqx8toz40R9IdUy0TJMBs7Lo
    vf0wXmhzlvPLGNnTv1Itn8UbMtBVbr1pComEv5XZ7Z4z9us_e7kISCQSa3GKn
    2_2QjoPUOWSt6ZEbrzIOYlMGZClXVBq3aFpV9Us94VjbL5siveWf93ZjY4Q6u
    uNVsWlmN7UJBE6tBCMSuFvCPZfWFo4h15915lSUB8mYyzqxUwIfpfLXB8fEPg
    Tj037vBmzKknvnRwMgrGyJKN7lYpcsei_KL7i3yU65k_ftZ8YBdkyGpL35gfo
    Hr1i0YXDcYvFEgjsKo7jOSoEiBJYpy_U0zj_pjTG--VNalxRL4-AxJwpq6Nfj
    pwUcp-gwq5QyG0xbN9tt7p0h-CpA0Ew9tBlG753pfQrYZpwRPnvYafLf8XN5l
    8gOMMfvMv8Vosvr6Pt99_-agJFDv8-Z4iYETW0Py85tkiIzZ3geODwVFygrtd
    PYvNbyfL7TeoI-B9U9Lbr8Gv1ApAsPk8E2AenKqIfhv1oT2l830Jm9OsSoSvo
    RhfZra6owQzxW1YibjSdh3aA8wv9CW96NGuGN8_SbBpKyJ9u53h5QPBXbz4P8
    Taos1-CqC9_Dx79VcEr7qQpvErvw64mYeQknnMMabyuujY4cpXeMqJbZQQK10
    n8pRdNK4ExqF1kGjh2e_TVkm4xCwtwk3Sby8EuUPucAWQnMqBNooQxXvTFFsW
    ssQvYs8suBoJk8Psxo9L4ThJYGdaiKM22qWcHFuakA-gavfYD_a53zi1vHYiz
    cHDhALtVR9yUPkPwNeaGIHrrd2TzLSVAm-9yGSSDbfYcvdhz_VLj4l_Ty-qNS
    2dGFgySHAftxj29fRwZw2WbArs_7CAK6-SHINYjCIhP9caYcQl-YchMmLdOjM
    jN_kH90GDDbzdhahTlNXnuWAnGa11dtiATVxyMy-ohGhpBo53ZDQsae5wik_Y
    ufM_v7-DxYBdy2i2Jdih_M4-RRb6cPMFS8b9VsKjsKAh8eBpaKaBw3-9Du2v-
    yYYPitNzu0rapCm41vNFi4QZrFroc6rE-4QluuQbSlHe5i_ymn3wBlz4QYxE8
    NEsBMMEhdNGWpdiIPeZ3103hVeIC3Dvq2SKzvW4weuCnEBQ2ulm0EuHFWbjjF
    ejchvxUiQjIjlY59574wxg1GRCp7X43WwV8Wt2DvlKaW7G00pOantSSVcMRvB
    RRALcDAPba6ESlX-HNKeTXn0xy8n5a5c1AoKnf_MURrQuw1PZ6uk7p65Le0cp
    _pZ9cNzbbfwwH06eHPfQ_yjdBtOO_7Nsv6yzw_eKXAKRwgylf1JzVNjYoj-of
    aQjjghQdOAI2SUYre4wZp6n4nMY_KYp4rYzT8EKbjKYw4gKIKlx7lR2BS4xhD
    zA4A60_JeKPBvWeCGkxqN346rqL7qA2ozAKWqGIUR0JkEzlJKDr59fRTvVfe6
    BakmU_Vmqf9v4OwnsyE6zw0vFuMnuZZiEYOILAWn7I1smkVZtwghOXqFgRh19
    ayuBROv0Ohjmpx-KKQ4i65XbXNcdQnDwXkVQXTnwEmtBjVmwb9f4tMNZTm6TM
    rIXvnpDGt-K-8PTnBkWEiK22V1Ips8aR7NKl0PpC9y3ub0kXXGHMA2krxPm5W
    9nqY0iCqpfewNPQzigfHb86XfXCWCRiZsuhvl8gYBPtj8I6-X5dvI3HzqXDA3
    Lv7omQimdD0W3cMlpr39Qh8jlK0GBNQjeCejvq-MXeQdsMzagalfjnRGqL_sd
    je_Ihu7dzwvtQ7Zn9J5Mf8Qw7QAhny-Sa6DOEvDrJ7fJFIdUBimjxfmNu8WNB
    e4UunXZSHQg9d4-HvoMPty73SPjOKyCimeCeOQfS_VC9uExwZ7waNHtsgl7JA
    TvQN1XYCieJrXvp7_fLIwzIkd8CtByeXfMDSfxnlmuLhg5SD79m7A0fVlEYRh
    E_2vi_cevRO2fkyg09VNJFE8-C0mp3PHCcmmEMyqHm1ohTvLUx7L2f3GhAD2q
    XjLIDxk68956cjuLI3jsVUV_aQrqb0Vm8N5zk5CzxUw9L_g3prqnFOdka69H4
    t0yWtEC1f5ZoEtd-D3_YsBFb4_8KI-SCgRQRxUqgdY-Z9EbIUQNgEwMDYp2ip
    n7-mhI5VOEt6dgU7i_L4VCsdSw8GWnnU_6Tu-CI8tXVD1DlxGz4eEG1vLQ6A8
    bozkaqFVc_7B0maB9Bu5LFu3oNN26xMeSq9TStYjERZQUVsz3jMTlOHqwJeZh
    Lu4hR3PgOTfTVQszBzHrRwFLcR31HLB4TDs3r-G0C1sfnb9PvpR1DCr2UcJ56
    rZ9WIynNjKNmr5RQAhwFKXacvAheLhAXtwND13GnxsovMZurakiQuYE1WX7vC
    R7iEm8zYhibNxqMzgWeFipBoyBnvgZyheIlL1qtgMrIF-6JicR__Ses2CFys2
    K8fAUfJzH0sXOu_kYJy-RVUNK25vGUQGCYDqrRoWgIe88RuA7pU9xpbKqosoM
    hrZnRM7uydCV2tKnMdntP0zFXxbShp0DnHpqbJQXcFFVJrXBJ-uCUzPKqmfLr
    NIpo4Wj1J8nIwsocWw9VIs8JPOYZrufBppydO2uYULgXSulf4KbOtc8mpxW5a
    IUiKSh3EAw0_b26eDOYirEpDjJTKKeCGuiHjG46vMC69tAv14Ypn4u73rm4Ta
    3yN2GmRntmaD05IOcVKZEMz9c3TscV0QLChc3C2NoFxGOpuTUt2PC9JeWatz0
    HyiXn4v-xOz3w1Ge7jU7lwDVuDTlQEA0iPoDyoF33F9zF_zTlvkLq8Zvb1c0L
    tcODYBNyUYbwrX1EdyWY1VusbRxqUGQ1zaq3JZ0lPhUb2qBCbIHVhEJWDd4lG
    BQ-0TCdRNL-Gd8-AaUuJ3Afd24S3CVuRvc8OteFQx6kcYPt4XdOn2Pg8SMiGS
    XFH-xO-Iqu9g9K6OsMLqPs_EWtZF_j98Hp5elWEjgf5x2oat_FEURnQ92SrVC
    ZvsJmNqoLwbixX_4ZRMoO6VA8VbjkJHYCRzw967er1Dy70ZBsGXKaG1VtgKWY
    WForf2PvqMwi8Rc91LJVG9lSrobcvGOQ97fTyxjsv-y7xxnVjbOsghlmxzaoK
    Wq25muDy94aigx5KkQleAiXDAN0APywVwOUAB1Acm5wezkpXslzn_g2hQaBqZ
    z8UDc_ZqW347A9uwJOnDIjdo2Lsk1w8gD6GaQw3-wWQopWI4x5v6BWBGDlDML
    ZQn2N_e2OnWrcdsjH_0M5F83OamWRQzqosBZR4mq7X13VBrTCSUKqUcoXvR_1
    EjuY68-6p12bONMF-l44R5TJlXexvRzlrqJxHUVFUORhg1vj3da34uf-f3RuK
    dMZ7fHOWyCxcSX406hKu5Bzsh-cbIKdHpL-FAQjpOfhRZvws56ZXGkVN-4Eef
    sN61HynrXUJ57wGEdlddJjedIfR_3fAj-43SB_YaZGm6yy58O6DKh01Yz6R5m
    yAqyo0loEeSwSzc0bBa9Sl-sqm4O2zKdSYhbYD2wHkTVVcMxjfDx1vu6Y22wM
    kIU10SsK9IQLVMwINLaCWemFN81Jn6QaICGSHDAYqbk1q4hRuc1H2g1S5gyOC
    2JCgEkbN87AlF495R2a9YJkwOMPgX5YkI6w7XyHOHb5lNXOyw6Xly2gkZcrzS
    aasDDA1vXFRWz9EAMQVGjnQXInEbwj1fyoGkBp4FMxyN7FvqSjtAUvQSfNj4B
    1Ymsumg3GYBn1MqNEB32WwU0dLdlMArGYNtcgvLqdjYx6IkrPsniHllUyjHCe
    Ut23HBlJ1Ytyfzpujd1aqXNQwrYjIP6dX5A3aFA1SFZIpv5QiE8KjGu5deG7U
    DKqiuTW_fbHhRW-qqZFwF5OpHj-KGkLFY3NRHesKiT0ogY-ycTt3qTjxJMXTp
    FFTzq7h24AXWOMwHmLakrsgQ23UaOELPuREsvvdLMMOJNfsw9rD0vAp2ZpfjQ
    RO61Q1Mwfw5sEedu3vEGcxFteTA8A12NxwW5LHbffCO9agknA7bMxoxZPbV5N
    9hAI2m6NDHMtwtd6Wbn8qrYVIohtudB0fuf8eFiD5CUFCYFT7oAfQO0XI39As
    66n0OUKJq6dM_Sn8YatOnjtb1mANDWy3jUUwtkR9noTNWx3F0_fKyJBtSWPrs
    QRLCBnrmuhsbIaeELGUt9DVU3MipEJYjiKSsemSX0Q_BLOH5WMrHkk9_DBCMG
    IO0D2iyUcgD2qj6tHHEc75MzBqVGJUIYgqkO7uiCB7ywVYR8ZSWT9PP84bl9l
    GTI_fbyl40xu0z0oHQCeRbl0yfEeG8JVlmNOtKx4rQ8z2wYXJoLhCh40wmErw
    LbFcYAnLi6VH29pDk8KiHvwbj4hyPgwYfbWCtbdaeZyZNYs7IKIeHiQ-tEhbh
    -utDU_uTzUjHm2enj_CS5QJ5alr3w08oWG3WL2xp1Mj6EVsrULg5KnJwwEbjY
    gg1vMV6NLMp8y_hfIPPT4mTHYPlYSSH-4MooLssWzJpf2F8NMkjghteb76hha
    -s4VYiAsLToKNedJwHeVFRVocSWmSDghIu2BFJrdteVvab9W3pXUbsM8WPnWG
    2k5T0BZpTS8z2thtZKpDBHueAEIif_h-0etrsrOH7QlvrN_AWqCo9pGq3OQC0
    OQlUweDc281Np_Bpurstk5q2TxPiJwAv5VXSCiSUf9pMN7Xpk7tr2s-jLcy1o
    H3PNKNQthvrXwoK1DKELarBX56e6UiHJTJDuECTrOTJC6a_XZDJVQu56GPejZ
    Gi70vc-FkLNfhfy0tSo6Dt1BdqpYoycgp-3dA04fSdssrzyobb9564zLCDHaf
    S5jkEtA6Eu09lwtJ-jpy-b2zPwFEKOzEhjINHU8xgxOJ8-iy2XMtIcgtp-p_R
    N7qdNiyB2Ql_n2HqYrfEyGO_rlk8uVpuzgI1mR-ghwUsaej_eBmaKcbvMNtXi
    Xv5ejNA17QsnP2DKFXDg7HZD_5nRK-giEdXooyYzFmgjPdOP0S0epnSfKA83g
    oSkJq357SfNzz8J3oQVOhoTsk-IUCOgCJ2tP4uUrz0Re3xNiYjyEBSEEoOY0z
    h4nmUffcBR49xC_aVlMmsNfygrguJERZZigxt5vfZRfYM2k8qDmJ7UW5-ABlr
    SqJGZgeEaVrZkKqjVxsIpUwwMV48CKkxVuMjA61koHcB3p8g7dc-CmQV72JFQ
    VnTvE67LyeWOiq1VxrUyfo96YYGnAdn4K96nsbjtT6gQDU-9PtPu95ReJpXAi
    oqt88u6MS2MhOooHPLMWG7BYt6W_VHoszPdaKNczSv29vn1l_E_cXNcxp-SRF
    csbashMiamiv4XHVyvOkGFz_mFL29v2higpY270IN4-vaogJGk-KZzAW7QwoZ
    tBhDRyD182w3NHBBezLEPSE_HQ4Y0ayeUC1e4dgZUPiG9BUYbC1-WVB0oJ3SP
    owOFN-J_duPFrhFXSGf_t1EKMT1gCH-nJpTJI2_0XAgEW-9geAPUtlub_dHAm
    kd1a7VHlhlBg-i2Iri_0o_-0lJl0mOS6z_C9IAX--6YdsmyQ4OxtCKtbKCUEG
    86Em-wvQj8fP7sbfx7p6OyWAdEQ5UwVTwMT_PlpgMYtZwzrJs6yiO9C-1Ar9k
    7KQUYa1WYlu3klxIliempahCeBq-7eSTauhqa-z4s7E7ELDeEdglrbmYaKxB8
    023pezLNY_kAmIS7KzBUQW5_qLvzFRfXSh8HrWRL3sYD_18wisIERYfqCge2U
    kmTwQkR0CVmq0nt388gUMRVlab6JW4dgIyDE1Ggv26FE_AYmDf_2HA0yRYxKJ
    -cZErG6qKGzH5_u_1rxwzZlcgd2VVW0nPfQFAHKkfJpcJhscd-nl0NwFtzx4K
    XlUWoXwOEdDMhnAlrA2Ju6HQIjWlGYU-HA_NJnAjKEKpiUrfS6XpdlRbdxob2
    _cN2lvlT_1w5HWD5ADkit4he_KsmK-88sO_DXWp9eCUACbA_dRBNeAyp4n_Re
    2lZ8B1misPgltWJiGye3ajb_LqBLTefTBbBxohtJnYaZcVHfo-cjVmD3ifMbZ
    6xnUwOGovEB0Oqatc-PF67A5TnAboUMXLbJUXt7AXvharAvcbieYD_a180Gdu
    eD_et2Oy8Wu40LiexLp7c5ffkbi8NhEceyiAna-h03yIQn3y0FW4E58OiXpT9
    vnzQnOw-fCYv9PoiUl4fZznQ__vhLEfVD506dD9_gOP83YOgRvoW5pVhLV3cp
    tcUP9BXouOJ_1rwJGZZf061aA6R3vGH8lCxMtCYYJn_WNy2gV2x3Uk28CSrLy
    cJ0K8PxGUgRz1qPAaGl_crZj_n9jKMyrOjZeo5u_HimLkMNAEJM76_9cBoT7v
    _Wc1Tlf-k6-R1V8izxCANkrIU3vCFy-9TYBGgYSOGzF7fO0LDl6j9eOzwLbVa
    ojJFTpUD0VzmfIejCBkXUCkIM20kGUvZw4ZyQF59RAfYUCNeQ_Qce6FCmMBWV
    q0X3TA8HFhbWPScS0gnEt4nMDe7NudxA9220EjoapVNGrKjMS6ssbd5lzFIfv
    yd15l2Vd3q6MDogluNRLlfvWw5ufK5tOYp6zXGhJAi67UaLoENaMZh00oWiXj
    CDUVbU3L1HmQlXYRZ6MqhC4P_PWo7LTPhKV1cupog1vcKYNLbzR0pn9T57sIA
    odVG0nFQ8_XG_25AggPynzjCh0pHP_ePqxWeCJaHECVuxgIgK_RJs_ixU5GA3
    vo-qCeltinN7bvq48Ffez1itrkIF7oNQOPugXU-wUYoJ3y8ZKmMW5e-zQr1B6
    A9m2yUcalgT7F3JRggVLOIUpI93HU0MhxFIS5ZMrHZ3Qn0wcGPfYnXgUUaJEM
    8gc6ylLu3sM5fbik33xScegCKmhwO-dZXpBEmTjo_rixggjnfyp_q2w9w5OV9
    lXuSgVXr0PtKMPC9q9tZHvS6FliLRlATLTgYBXmNRpz_SABZcLRe0p-waH7nl
    UAV1lOnrDxTV9WlyUQ3OflgsGMkncIKO-779n4DuaR2y6SBdLMl3O7LVBqB9r
    z0BflOViLlWB-z4oj8GHLCKArvMg7Ad_K2DF1Ma_Yv9WkRx3zKc66wJF0ebyY
    VAyGTf3pZREAbijrsA2yvv_RxvgVMCstB37W2Tj3bD5ZKZOdGOKP6D7fKVCyo
    y_hs-sikqMvAHXzyvbk30nsGZ0LUPHA6N6hZHGpdemVX8n_wbuZgaxiN_kCcz
    vUOITtS3B-E3NE6_bmqcGlRO1bF4-aya75Z-eaK1ZZ3g6HeAd_AnBf2e-k4aw
    Z_obTU7hFZwFhycUrCxe1lKo67c6BFjt8sopFoE9DoC8lwZOzu6G7tVmzdfB8
    xmamJ9KJzVwCUVVLPREMv33mIqjpA_Vm6TWG-Gbg-bnh3oFhF3WIOsLIvk8L0
    C1xeT0w2WSD1IXkTNuSxm7YpKxjKrq6OMUzmc3m1JdJvghSRd7QNSumKSnJnd
    emSh74z6W1tYqTTK1HCjX6y-b68WAfVRGwb797IyovUOrI1rFAynYqOQJPrc3
    8QNOsPZoarWiHUtLHLCr-VeVeRI-bn4R0dT-HAegzhofdnMgJn7ZBOBcwGhXX
    TCtepXncu27UzPFmpHhkEctoWf5QrCylo8-Khk8Y3HSuGeOlx6_a0DHbd1PQQ
    Dq7bIrcpxD0QPOUUUEuXqA27BowQvrQtq8gx0dYirw-qkIcRBG-kd7RgO8i47
    dFJkTFX8wIivrgeEXn94_zZUbWxL3voRcVwuOwDTidG0RQTyLFb1xCdwRgyWy
    pE1qF8AIvi4umv-b9qpByUBIWpTy2adplD0G8bn1nB0yI98opEU6pao-_DO7n
    ZjBOq8p3-KR3rnXaM-66mDMmSD9BOHHVUhiczqxsAiNLO7vZugxu-Dp138oRQ
    nfWxP8jH7jyXNTTLrqBTQBUTWlq7W2BGQuUJaoVYMHM7IzCG8TUlxUEN9r5BX
    -EgxbLoCBw-goTs2PmNI9gRghDmU_z-wgwRqGFExivlHyzZhVxBncWoUA6bzz
    2qTn70KwcTnZ_tKBXcHSUX8YPHvZktfwCwzbrV0BKAlRJtiCpdeyuyqJ5KyHZ
    fvNuLdVtcvfFpBpWYtqkeU2emSCyVDy_95gOZBghZ4XrXq6mL-WxC0YimSchr
    8TkS92Zmn7ZPZB9UZVlTSXGvP72Id39-Kya5etOW_DbzMFYC6aR2s_FISgd2R
    wsBnxn9A_wlY2y14-_fSvBCMkjaRUFwrzvfUndu0S9op43uKw5bY4_2vL8m9K
    45K0zHjOCEk0bxSTkMRcBbjC8T8TiPW_2zJJLk3v_ZxRtAa7EcqUDmqupZHSq
    FNaIRIt6XIC_Bm2TV_6zSCazAB7iGYBbXEMUzdgwzb87O5VRPiJuCuMeUGVW_
    80cji1VTgZTxp1pls4JZAZG4XlIe_m6OFW0kVleRcW9oowAma5ZBYHsIN_sR7
    unX0rRPi97wzk9wh9WTl44iTZmAkSetJIKf2Psutbn7Z1X14fjywkfsTFd7WD
    EoU0uqGygWgcp0agFEf9_soAnvWvjNBaoitx0nat4cjlvRuMrn_w7vC0Qfpgp
    OKXWGZcUZLqO5XT_Fr5589QfOW2O5EnDmZufqPiS8gLiX7PEBAL9v6budwG4t
    SvQo6WpZUhDCzIKBLTOQNmL-YInlUN85pnNxjKTs7KV-tfjBSxaq0cPM92zUB
    8e3x1sGBiJt6fJoCG8QrMYSWHvReTqhwLp-yW7kOqYKiKfI7PG8230ki7_11E
    2SaU0_YYe4nHntggIlEV6PpDRhO2Pn_FkSvdQLfeVdjBstYDssPgRQ2iuICEc
    gCgLsXAttbvSiiBss9oEaTeVUC0Q_fgemry26obPif37Joug9vUtofNCz0R0M
    FZzfVpAvn3zO4GFmeC2L2ryXf-7_ZD_TtKsyEloNV4QSMO4ZfbVWW3cxmsf9x
    wPtQLrzn9eO6xKVaVQGhwbjvD6wRZvVp5yqaIL8Yjz9Klzf8sQGQvvcSti9cR
    Ucdjna4bK5gqkDVrxh46JKK_Wz6XkYXkRbeB08WtolFdgMvep7pa7Bv7NIwuS
    L6TRpkdjA17T75vXxkgq1at0-vPlCX_B0uews8csvmYGPcqyN2oxFaDOoFzce
    L6u6NQb_u152wbA4n1fioHApEd3zmHzhHWTG3Htzbv8Vmlg6uR5LlSRjod7-M
    LIuPNcQ2Y30LI4uq-1YFoCjcP5DJk3ixbmeZLoBjvIMhEGREm2xc0zZraQaVK
    0-kyah5cpRLZl6SSQobyWh_gqTpyhUqM2Gjy2s3GZL0TP2aJyFBOBNJC6OEdy
    TU3GQVz3zlouuvF38jx1HLCkh6MKlhCyMLgE7QJI5nVK1_DJZ31Na7Jg1bS1O
    mmpCyJBBxqXovc-yhBM0fizAjsxxyOA-40Lr4NRc7hoi3EJpb84OPdO6wytEf
    msqBYSgzztGNAOuDH73ck175UOBGn_2QB5a19ysgKs8fYWAOEsOFARKcVeRz_
    eLpynumMLWbsB7G8d2_KwvIW86yD14efkZtsi1PZ6_JN7ATsYiDTWTs-L-wTB
    ZYi_uKEt8ZeEGDgj2MPqrDjftfhWBIwRjTpp5lTSX04zVv3-4zE4uw0nDpgGF
    9uTgcSJyX6Tuwuge5DZSfabNrQb6hL6vJ2_WGHXj5c8eq6pdHB4zFt0jbCqS0
    n6QK8iGolA2Q1lNMrLSX7A8E1WxTg7TWi7PKqdCStXCuTe_3mMoexvmUQ7jhe
    4kc0oxAxrJhTVHFWaNaT30ULosgTizmB6iMmTtzJCzIJHfjvGmw_4Td08bZgy
    Y83WHCvzEOQ7PXpe8yITNWJE2R3WBjXercvr5fDm52jE3LORuSnWVJlFmpl0n
    tpQEPhRBE7cL5nHL_2e10cKva46bSoL-O8dBgb0DyLx7NOqiqZIQCLEXlA47X
    _wts_S9pcWZzqeGxBFX_wYQPRGc_emJo5UPVJKxDbCwcev3FqFzbWABuK0hf7
    tzK8qMJgos7VNPdeQZohAb1Av6zBTnepqof1NzIHCWiSKk329QRl5e3A5TPY_
    S8LJjhaD_tdATrKQIxiTwKU89K-Z00uHJ9Lphz9pJizeZjRhwbiJ0TtYwWONk
    Dgb7z9-MmD6m5xEZm1JtGrYU--Bsc-Vci2EUNWJCm9jA31MOiggrqG-v9VLV3
    GIT6C-akbSddcMQCZwBOtfMKeAaro4an6KVvjAENBy_oSqCCVCT7OoKfO-7VG
    0i3d1m-SSYSPa0XZuPZBoHVylNg2X6pEAvuHkJ6m6OuhqnbJlejz1E6lPRql5
    SQcwQonOPCBD392enomIDzZ-sTz96LL9Dzuhao47QhZd8SqHmaoNUGo9HhEbe
    _9we0syZzmtHfGfLBCxnv4ZLGnB62LK42KSV5VEcDs9hambgvqRonmPpH9Klu
    PS7EAMxHOg4AbdNmtRUxbVh21Knu5u-1WOw0AxmEymL7xX5ao13WVLw2D5iIf
    kFYbDjgF8IT0LSr566JqKOMFmWOUDpRLQ_4MB9fcgB9wWUUkeR6jLOo5kPBeb
    DllEkPQliGqLa5ls0spHbZGz0Dsb57AvWycuHQ4LZ3blPS8FSl9ySqcmZpZu5
    CDcfQczWBnJZCVMqDoEveC1klrWI1iT1_y8H2hOrbcSrPZ8hlCq34XyUP8MPF
    6j8PHPaOpjFXt8OobR64xeuNVXlxagbLd2dhsSo9Qbq3_avRJNMduufowd675
    GP6QWPiY9i4iT_ZP9kz7gNDOQrQj5ddK6gMKJU134rG-leHB9Qeeva1s1orfB
    WpThmQddGxN-KdcPcRYKoewHH2WB1XeSFCaHupXbM0JLNHI5m6HNsc0PR78bH
    fxsngKxULC68-IiiHASUcv7ePYIZ8LKYfQp_b1ASAALfepSD5q7apz2Io8kcx
    9AWLZBaqmo9cM5CmiRf1HnVdpL5aJ5vc4omUd6zP9yHPaalbOhCwFJ8drdxal
    DjEl8cjjNJwtdpJqWZ7ofuZtWdmiM09FGr5ooOrLh7x-SUwFzmksnm48JV16q
    NzKBftXYeLTNvrby1Nxk3u7Ro8EfIbE5GwGMD7ErFfrdOD5bPuAyvvldqLZla
    0jDnQkXfeWDiPn4bPvZeWYx2N5vV0IiEgmnW2jOGfbj-JgUdpPrQjmjZeUdw_
    PKMKD3b_n4kUtEOWziDqGcO8khROWsCyNaM-LclLSTPdtxbMAO973NFbE6Yul
    Kk71sfFjoHRkNmJWdVvBABx4cLJEeleCSBKMNBYz8L88Nj-Vh6VFcr_KpORDH
    L63Biyqccef65JgTAMeF2PWZRGRqx7Zo2fKl_TXlnTAAouq5dfO9I1O7Fqnz_
    l1tPNP1TqIWBL-ClzJelYusAgfizxBcgtddj1j_m7X5_HxhirRqDbeLhzvn6o
    -7iqiFICQiF1W_4HCKog2l7MbKoxWgSesTa2gAib90h-ynBUX3pAJSacmNfCT
    bc-PGtUsmPRhNtHX36kutDPzOq89-i6wmZG7ZzATk_Qa7_pIvJGJjLt0_9n7V
    95dDNTGZvVVNEt2sdbWVyB4yWbjZ4qZaL0R__qUBLZzSFc2qsfagN5Fnr_fn0
    JSbBISO-7oaROW4pzp0HQB2miLcqMCRDbeLAfMoxFPl0CNv-JghkR69q4Bw0m
    28UJ_f8VBjnyZElDX9xbSFO-xHljqvx26T1k5nlNIn61ac3M120POSSGhM3Ts
    zxA2chgsF6pVNdQdA8yPvkKuldef_MFEdrR0-_e3Aw8aPlwZCd7WPrD6sq9ra
    0WNTA_WyVYn8QhOP7nBguCJgQL0T3uYue8-je4mXDwUFfUNcWsroQx2rZWYPe
    W-wXAneHISBxq45B63OqfSX6JGeYwCQ61xAVKTzF9G7keV-cGyRyCABlUhTpn
    Oj_1AoSBMVq8hU6CS47ue6aKROzbK_m6ZzmayPIAlw3rsPZOUxPHgDDhk0Vqn
    EVijZ_bD6_HLEh-8DrAyphqY6mj_uHpPL_yZsbv2CENNKhRqbeiVs5jz65pA-
    JVc1Yh6q0JgXOP7lKjIMpQf3FbJboPqzIUAB6KUVZGTlRN6o8Nva1QAdqaaD1
    sGbNI5g6PLlfCw4D8yrybK4ZvyBTmMsr_0DjtSF5-wY2IwQmg2EwbHCg8BCef
    vqUKtt32nl_fNVBbRAjqov-tyx0SbkqSkn9T55t06hLYZa_fs7MSXd8sJF8ko
    PG53MuwXgL52YZkgtDZkxooAFwp8TDcqrQFTXHnb1ob1Qp9GgTM82ZVTxLr1v
    vCweM2coiOgVKIFva3Ve6bnphkzn6uQZ2lwN6qt5iw2-DGtojqHC-rW0p9wEf
    mZJHD1YyJKoGt40oJeG1njTGL2_OB63zyOUipXoCN4trRy4hMwmuWqWILtP4r
    ooqYOGyt8lCBdzMYzkYulIE5yPint_QnmDJrDXQeCtHxvIidCGQs9h7xoXNOY
    wdr_3bjQBOF1WA6T-2SvBcMmXDp6zEf_mPJ0EjPMMtOmDTLXd_KwBYQpDkBhy
    PVFvGC6Rz9wmsHAJ2X8QZ9Arm4oAFiKa2WNZdrFDTqx_jz8tgsSIqaDCd30IC
    AZyfxf65msybcQPUkrMl_vFOH--XVLXtle9hc5Cip2oKTWEYkB3sTf2q2dx4v
    2zus5xajPe7bwRQy7a9MjdCMO5NdiBgX9AyYD93RPRyKTfB-BluNNe4nxB3eh
    1iVFH6zXAO2BSLA_OviD8nH7_Hyk_sujC__sLrgP95SreLgTeYpk-k6QSnnEF
    HqNtyJphIf_SCZvvty9MKCc5vpDKp1cdcY7CX31CE95DOKiqRwqO00aq2HSSh
    2dfYl3e2c1erX8HARstTqHVFIqguezWO4GMCk6MEg7GWCnh4kNvxJc6FpJF8Q
    ",
  "tag": "hHOLREOYhFDWFmxf6VUGylAX6mn46n5KhLdiW5YSI6o",
  "recipients": [
    {
      "header": {
        "enc": "A256CBC-HS512"
      },
      "encrypted_key": "eYPoGY6w_Lw_Hk_fN9oP09A4aLopNf1XDmU0QgbCl
        _6PQihDLbTQLjmOQzyZc7nOkyhLYlWVrJIl3QXe8XW_6oxmr8iuezjnkf
        CSYjvNBYfJoh0MgsfYPPQsMDpWCYpKviqpFJ8_cMjsj5DAgwzkD3W0jXK
        GzlrWiAl5dTZ9MwvcRB7PEmzbKpBFJpH45OwW4amC26edINT7XVZj789P
        kG8MWXDbVZSZlbLIFMBWP2dZPdYzXpwow9gJB6Fk6ApU45mmEKmyNLC_l
        zsFhxBafdooWoX2Hjo0l06ka5JNixdMsrWHfCcwqvS1mUlB0ix8aJ8iwR
        efa0IXFHbbpGuJlA"
    }
  ],
  "unprotected": {
    "uuid": "019f15a6-a752-826f-b9a2-279e0d16bc46",
    "cty": "application/vcon+json",
    "enc": "A256CBC-HS512"
  }
}

A.8. Redacted vCon

This is an example redaction of the vCon in the example Two Party Call vCon With Externally Referenced Recording (Appendix A.4). Most notable is the Redacted object (Section 4.1.8) which references the lesser redacted version of this vCon. In addition the url parameter has been redacted from the Dialog Object (Section 4.3), but the rest of the Dialog Object (Section 4.3) was left in the redaction.

The unformatted version of the following example can be downloaded from: https://raw.githubusercontent.com/ietf-wg-vcon/draft-ietf-vcon-vcon-core/refs/heads/main/examples/ab_call_ext_rec_redacted.vcon

{
  "parties": [
    {
      "name": "Alice"
    },
    {
      "name": "Bob"
    }
  ],
  "dialog": [
    {
      "type": "recording",
      "start": "2022-06-21T17:53:26.000+00:00",
      "duration": 33.12,
      "parties": [
        0,
        1
      ],
      "mediatype": "audio/x-mp3",
      "filename": "ab_call.mp3",
      "content_hash": "sha512-GLy6IPaIUM1GqzZqfIPZlWjaDsNgNvZM0iC
        ONNThnH0a75fhUM6cYzLZ5GynSURREvZwmOh54-2lRRieyj82UQ"
    }
  ],
  "analysis": [
    {
      "type": "transcript-redacted",
      "dialog": 0,
      "body": [
        {
          "parties": 0,
          "start": "2022-06-21T17:53:27.200000+00:00",
          "duration": 0.5600001000000001,
          "text": "Hello."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:27.760000+00:00",
          "duration": 1.6799997999999998,
          "text": "This is {{URL}}."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:29.440000+00:00",
          "duration": 0.8799999000000005,
          "text": "My name is Bob."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:30.320000+00:00",
          "duration": 1.2000002999999992,
          "text": "How can I help you?"
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:31.600000+00:00",
          "duration": 0.7199997000000007,
          "text": "Hi."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:32.320000+00:00",
          "duration": 2.4799992999999994,
          "text": "I'd like to add Fu to my service."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:35.200000+00:00",
          "duration": 0.6399990000000013,
          "text": "{{US_STATE}}."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:36.160000+00:00",
          "duration": 2.959999999999999,
          "text": "Can you give me your name and phone number so
            I can look up your account?"
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:39.735000+00:00",
          "duration": 6.879999999999999,
          "text": "My name is Alice, and my number is {{BAN}}."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:46.775000+00:00",
          "duration": 0.8799990000000015,
          "text": "Thank you."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:48.935000+00:00",
          "duration": 0.40000000000000213,
          "text": "{{US_STATE}}."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:50.134874+00:00",
          "duration": 1.600000999999999,
          "text": "I've added two to your service."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:51.734875+00:00",
          "duration": 2,
          "text": "Is there anything else that I can help you wit
            h?"
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:54.054874+00:00",
          "duration": 0.4799999999999969,
          "text": "No."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:54.534874+00:00",
          "duration": 0.7999990000000032,
          "text": "Thank you."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:55.334875+00:00",
          "duration": 0.6399989999999995,
          "text": "Goodbye."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:56.374874+00:00",
          "duration": 0.6400000000000006,
          "text": "Goodbye."
        },
        {
          "parties": 0,
          "start": "2022-06-21T17:53:57.014874+00:00",
          "duration": 0.880001,
          "text": "Have a nice day."
        }
      ],
      "encoding": "json",
      "vendor": "CapitalOne",
      "schema": "data_labeler_schema",
      "product": "dataprofiler"
    }
  ],
  "attachments": [],
  "uuid": "01928e10-193e-8231-b9a2-279e0d16bc46",
  "redacted": {
    "uuid": "019f15a6-a752-826f-b9a2-279e0d16bc46",
    "type": "PII Redaction"
  }
}

A.9. Amended Signed vCon

This is an example vCon with an Amended Object (Section 4.1.9) referencing the vCon that it amends or adds additional content. In this case it is referencing the signed vCon example above. An example text Dialog Object (index 1) is the amendment.

The unformatted version of the following example can be downloaded from: https://raw.githubusercontent.com/ietf-wg-vcon/draft-ietf-vcon-vcon-core/refs/heads/main/examples/ab_call_ext_rec_amended.vcon

{
  "parties": [
    {
      "tel": "+12345678901",
      "name": "Alice"
    },
    {
      "tel": "+19876543210",
      "name": "Bob"
    }
  ],
  "dialog": [
    {
      "type": "recording",
      "start": "2022-06-21T17:53:26.000+00:00",
      "duration": 33.12,
      "parties": [
        0,
        1
      ],
      "url": "https://github.com/ietf-wg-vcon/draft-ietf-vcon-vco
        n-core/raw/refs/heads/main/examples/ab_call.mp3",
      "mediatype": "audio/x-mp3",
      "filename": "ab_call.mp3",
      "content_hash": "sha512-GLy6IPaIUM1GqzZqfIPZlWjaDsNgNvZM0iC
        ONNThnH0a75fhUM6cYzLZ5GynSURREvZwmOh54-2lRRieyj82UQ"
    },
    {
      "type": "text",
      "start": "2022-06-21T17:53:26.000+00:00",
      "parties": [
        1,
        0
      ],
      "mediatype": "text/plain",
      "body": "Good day!",
      "encoding": "none"
    }
  ],
  "analysis": [],
  "attachments": [],
  "uuid": "019f15a6-aa72-8dbd-a20f-d188127fad29",
  "amended": {
    "uuid": "019f15a6-a752-826f-b9a2-279e0d16bc46"
  }
}

TODO: recording-set example with party_history

Appendix B. vCon JSON Schema

This JSON schema is provided as informational. The text in sections 1-6 of this document define the normative definition of the vCon schema. If the JSON schema provided below differs from that in the text of the above sections, the text should be taken as the definitive definition and the JSON Schema below should be consider incorrect.

The JSON Schema definition below has been formatted with line breaks to print nicely on the page. The unformatted version of the JSON schema can be downloaded from: https://raw.githubusercontent.com/ietf-wg-vcon/draft-ietf-vcon-vcon-core/refs/heads/main/vcon_json_schema.json

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://ietf.org/vcon/schemas/unsigned-vcon.json",
  "title": "vCon - Unsigned Form",
  "description": "JSON schema for the unsigned form of vCon (Conv
    ersational Data Container) as defined in RFCXXXX",
  "type": "object",
  "required": ["uuid", "created_at"],
  "properties": {
    "vcon": {
      "type": "string",
      "description": "DEPRECATED: Syntactic version of the JSON f
        ormat. This was used to indicate schema changes in the In
        ternet-Draft versions",
      "const": "0.4.0"
    },
    "uuid": {
      "type": "string",
      "description": "Globally unique identifier for the vCon. SH
        OULD be a version 8 UUID",
      "format": "uuid"
    },
    "extensions": {
      "type": "array",
      "description": "List of names of all vCon extensions used b
        y this vCon",
      "items": {
        "type": "string"
      }
    },
    "critical": {
      "type": "array",
      "description": "List of extension names that a consumer MUS
        T support to safely process this vCon",
      "items": {
        "type": "string"
      }
    },
    "created_at": {
      "type": "string",
      "description": "Creation time of this vCon in RFC3339 forma
        t",
      "format": "date-time"
    },
    "updated_at": {
      "type": "string",
      "description": "Last modified time of this vCon in RFC3339
        format",
      "format": "date-time"
    },
    "subject": {
      "type": "string",
      "description": "Subject or topic of the conversation"
    },
    "redacted": {
      "type": "object",
      "description": "Reference to the unredacted or less redacte
        d vCon prior instance",
      "required": ["type"],
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID of the unredacted or less redacted
             vCon prior instance",
          "format": "uuid"
        },
        "type": {
          "type": "string",
          "description": "Type of redaction performed"
        },
        "url": {
          "type": "string",
          "description": "HTTPS URL where the referenced vCon is
            stored",
          "format": "uri"
        },
        "content_hash": {
          "oneOf": [
            {"type": "string"},
            {"type": "array", "items": {"type": "string"}}
          ],
          "description": "Hash(es) of the external content using
            format: algorithm-base64url_encoded_hash"
        }
      }
    },
    "amended": {
      "type": "object",
      "description": "Reference to the prior vCon instance versio
        n that this vCon amends",
      "properties": {
        "uuid": {
          "type": "string",
          "description": "UUID of the prior vCon instance version
            ",
          "format": "uuid"
        },
        "url": {
          "type": "string",
          "description": "HTTPS URL where the referenced vCon is
            stored",
          "format": "uri"
        },
        "content_hash": {
          "oneOf": [
            {"type": "string"},
            {"type": "array", "items": {"type": "string"}}
          ],
          "description": "Hash(es) of the external content (requi
            red if url is provided)"
        }
      }
    },
    "parties": {
      "type": "array",
      "description": "Array of Party Objects representing all par
        ties involved in the conversation",
      "items": {
        "$ref": "#/definitions/Party"
      }
    },
    "dialog": {
      "type": "array",
      "description": "Array of Dialog Objects containing the capt
        ured conversation content",
      "items": {
        "$ref": "#/definitions/Dialog"
      }
    },
    "analysis": {
      "type": "array",
      "description": "Array of Analysis Objects containing analys
        is performed on the conversational data",
      "items": {
        "$ref": "#/definitions/Analysis"
      }
    },
    "attachments": {
      "type": "array",
      "description": "Array of Attachment Objects for ancillary d
        ocuments related to the conversation",
      "items": {
        "$ref": "#/definitions/Attachment"
      }
    }
  },
  "definitions": {
    "Party": {
      "type": "object",
      "description": "Represents a party involved in the conversa
        tion",
      "properties": {
        "tel": {
          "type": "string",
          "description": "TEL URL (RFC3966) for the party"
        },
        "sip": {
          "type": "string",
          "description": "SIP URL for the party"
        },
        "stir": {
          "type": "string",
          "description": "STIR PASSporT in JWS Compact Serializat
            ion form"
        },
        "mailto": {
          "type": "string",
          "description": "email address for the party"
        },
        "name": {
          "type": "string",
          "description": "Name of the party"
        },
        "did": {
          "type": "string",
          "description": "Decentralized Identifier (DID) URI for
            the party"
        },
        "validation": {
          "type": "string",
          "description": "Label or token identifying the method o
            f identity validation used"
        },
        "gmlpos": {
          "type": "string",
          "description": "Geographic location in GML pos format (
            latitude longitude)"
        },
        "civicaddress": {
          "$ref": "#/definitions/Civicaddress"
        },
        "uuid": {
          "type": "string",
          "description": "Unique identifier for the participant"
        },
        "type": {
          "type": "string",
          "description": "Participant type"
        },
        "org": {
          "type": "string",
          "description": "Organization to which the party belongs
            "
        },
        "dept": {
          "type": "string",
          "description": "Department to which the party belongs"
        }
      }
    },
    "Civicaddress": {
      "type": "object",
      "description": "Civic address information for a party's loc
        ation",
      "properties": {
        "country": {"type": "string"},
        "a1": {"type": "string", "description": "National subdivi
          sion (state/province)"},
        "a2": {"type": "string", "description": "County/parish/di
          strict"},
        "a3": {"type": "string", "description": "City/township"},
        "a4": {"type": "string", "description": "City division/bo
          rough"},
        "a5": {"type": "string", "description": "Neighborhood/blo
          ck"},
        "a6": {"type": "string", "description": "Street"},
        "prd": {"type": "string", "description": "Leading street
          direction"},
        "pod": {"type": "string", "description": "Trailing street
           suffix"},
        "sts": {"type": "string", "description": "Street suffix"}
          ,
        "hno": {"type": "string", "description": "House number"},
        "hns": {"type": "string", "description": "House number su
          ffix"},
        "lmk": {"type": "string", "description": "Landmark"},
        "loc": {"type": "string", "description": "Additional loca
          tion info"},
        "flr": {"type": "string", "description": "Floor"},
        "nam": {"type": "string", "description": "Name/occupant"}
          ,
        "pc": {"type": "string", "description": "Postal code"}
      }
    },
    "Dialog": {
      "type": "object",
      "description": "Represents a segment of captured conversati
        on",
      "required": ["type", "start"],
      "properties": {
        "type": {
          "type": "string",
          "enum": ["recording", "text", "transfer", "incomplete",
             "recording-set"],
          "description": "Type of dialog"
        },
        "start": {
          "type": "string",
          "format": "date-time",
          "description": "Start time of the dialog in RFC3339 for
            mat"
        },
        "duration": {
          "anyOf": [
            {"type": "integer", "minimum": 0},
            {"type": "number", "minimum": 0}
          ],
          "description": "Duration in seconds"
        },
        "parties": {
          "anyOf": [
            {"type": "integer", "minimum": 0},
            {"type": "array", "items": {"type": "integer", "minim
              um": 0}},
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {"type": "integer", "minimum": 0},
                  {"type": "array", "items": {"type": "integer",
                    "minimum": 0}},
                  {"type": "null"}
                ]
              }
            }
          ],
          "description": "Index/indices of parties in the parties
             array"
        },
        "originator": {
          "type": "integer",
          "minimum": 0,
          "description": "Index of the originating party if first
             party is not the originator"
        },
        "recordings": {
          "type": "array", "items": {"type": "integer", "minimum"
            : 0},
          "description": "recording-set reference to list of indi
            ces to recording Dialog Objects"
        },
        "recording_set": {
          "type": "integer",
          "minimum": 0,
          "description": "Index of the recording-set Dialog Objec
            t that this recording is a part of"
        },
        "mediatype": {
          "type": "string",
          "description": "Media type of the dialog content"
        },
        "filename": {
          "type": "string",
          "description": "Original filename of the dialog content
            "
        },
        "body": {
          "description": "Inline content of the dialog (for inlin
            e files).  Any type for encoding=json, otherwise it m
            ust be a string."
        },
        "encoding": {
          "type": "string",
          "enum": ["base64url", "json", "none"],
          "description": "Encoding type for inline content"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "HTTPS URL for externally referenced con
            tent"
        },
        "content_hash": {
          "oneOf": [
            {"type": "string"},
            {"type": "array", "items": {"type": "string"}}
          ],
          "description": "Hash(es) of external content"
        },
        "disposition": {
          "type": "string",
          "enum": ["no-answer", "congestion", "failed", "busy", "
            hung-up", "voicemail-no-message"],
          "description": "Reason for incomplete dialog (required
            for incomplete type)"
        },
        "session_id": {
          "anyOf": [
            {"$ref": "#/definitions/SessionId"},
            {"type": "array", "items": {"$ref": "#/definitions/Se
              ssionId"}},
            {
              "type": "array",
              "items": {
                "oneOf": [
                  {"$ref": "#/definitions/SessionId"},
                  {"type": "array", "items": {"$ref": "#/definiti
                    ons/SessionId"}}
                ]
              }
            }
          ],
          "description": "Session ID(s) for the dialog"
        },
        "party_history": {
          "type": "array",
          "items": {"$ref": "#/definitions/PartyHistory"},
          "description": "History of party join/drop/hold/mute ev
            ents"
        },
        "transferee": {
          "type": "integer",
          "minimum": 0,
          "description": "Party index of the transferee (for tran
            sfer type)"
        },
        "transferor": {
          "type": "integer",
          "minimum": 0,
          "description": "Party index of the transferor (for tran
            sfer type)"
        },
        "transfer_target": {
          "oneOf": [
            {"type": "integer", "minimum": 0},
            {"type": "array", "items": {"type": "integer", "minim
              um": 0}}
          ],
          "description": "Party index/indices of the transfer tar
            get (for transfer type)"
        },
        "original": {
          "oneOf": [
            {"type": "integer", "minimum": 0},
            {"type": "array", "items": {"type": "integer", "minim
              um": 0}}
          ],
          "description": "Dialog index/indices of original conver
            sation (for transfer type)"
        },
        "consultation": {
          "oneOf": [
            {"type": "integer", "minimum": 0},
            {"type": "array", "items": {"type": "integer", "minim
              um": 0}}
          ],
          "description": "Dialog index/indices of consultation (f
            or transfer type)"
        },
        "target_dialog": {
          "oneOf": [
            {"type": "integer", "minimum": 0},
            {"type": "array", "items": {"type": "integer", "minim
              um": 0}}
          ],
          "description": "Dialog index/indices of target dialog (
            for transfer type)"
        },
        "application": {
          "type": "string",
          "description": "Application, communication channel or c
            ontext of the conversation"
        },
        "message_id": {
          "type": "string",
          "description": "Unique message identifier from the mess
            aging system"
        }
      }
    },
    "SessionId": {
      "type": "object",
      "description": "Session identifier with local and remote UU
        IDs",
      "properties": {
        "local": {
          "type": "string",
          "description": "Local UUID for the session"
        },
        "remote": {
          "type": "string",
          "description": "Remote UUID for the session"
        }
      }
    },
    "PartyHistory": {
      "type": "object",
      "description": "Records party events during the dialog",
      "required": ["party", "time", "event"],
      "properties": {
        "party": {
          "type": "integer",
          "minimum": 0,
          "description": "Index of the party"
        },
        "time": {
          "type": "string",
          "format": "date-time",
          "description": "Time of the event in RFC3339 format"
        },
        "event": {
          "type": "string",
          "enum": ["join", "drop", "hold", "unhold", "mute", "unm
            ute", "keydown", "keyup"],
          "description": "Type of event"
        },
        "button": {
          "type": "string",
          "description": "DTMF digit, character or string (requir
            ed for keydown/keyup events)"
        }
      }
    },
    "Attachment": {
      "type": "object",
      "description": "Represents an ancillary document related to
         the conversation",
      "required": ["start", "party", "dialog"],
      "properties": {
        "purpose": {
          "type": "string",
          "description": "text description of what the attachment
             is for"
        },
        "start": {
          "type": "string",
          "format": "date-time",
          "description": "Time the attachment was sent/exchanged
            in RFC3339 format"
        },
        "party": {
          "type": "integer",
          "minimum": 0,
          "description": "Index of the party that contributed the
             attachment"
        },
        "dialog": {
          "type": "integer",
          "minimum": 0,
          "description": "Index of the dialog this attachment is
            part of"
        },
        "mediatype": {
          "type": "string",
          "description": "Media type of the attachment"
        },
        "filename": {
          "type": "string",
          "description": "Original filename of the attachment"
        },
        "body": {
          "description": "Inline content of the attachment (for i
            nline files).  Any type for encoding=json, otherwise
            it must be a string."
        },
        "encoding": {
          "type": "string",
          "enum": ["base64url", "json", "none"],
          "description": "Encoding type for inline content"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "HTTPS URL for externally referenced att
            achment"
        },
        "content_hash": {
          "oneOf": [
            {"type": "string"},
            {"type": "array", "items": {"type": "string"}}
          ],
          "description": "Hash(es) of external content"
        }
      }
    },
    "Analysis": {
      "type": "object",
      "description": "Represents analysis performed on the conver
        sational data",
      "required": ["type", "vendor"],
      "properties": {
        "type": {
          "type": "string",
          "description": "Semantic type of analysis (e.g., report
            , sentiment, summary, transcript, translation, tts)"
        },
        "dialog": {
          "oneOf": [
            {"type": "integer", "minimum": 0},
            {"type": "array", "items": {"type": "integer", "minim
              um": 0}}
          ],
          "description": "Index/indices of dialog objects this an
            alysis is based on"
        },
        "attachment": {
          "oneOf": [
            {"type": "integer", "minimum": 0},
            {"type": "array", "items": {"type": "integer", "minim
              um": 0}}
          ],
          "description": "Index/indices of attachment objects thi
            s analysis is based on"
        },
        "mediatype": {
          "type": "string",
          "description": "Media type of the analysis file"
        },
        "filename": {
          "type": "string",
          "description": "Original filename of the analysis data"
        },
        "vendor": {
          "type": "string",
          "description": "Vendor or product name that generated t
            he analysis"
        },
        "product": {
          "type": "string",
          "description": "Product name to differentiate from othe
            r vendor products"
        },
        "schema": {
          "type": "string",
          "description": "Token or label for the data format/sche
            ma of the analysis"
        },
        "body": {
          "description": "Inline content of the analysis (for inl
            ine files).  Any type for encoding=json, otherwise it
             must be a string."
        },
        "encoding": {
          "type": "string",
          "enum": ["base64url", "json", "none"],
          "description": "Encoding type for inline content"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "HTTPS URL for externally referenced ana
            lysis"
        },
        "content_hash": {
          "oneOf": [
            {"type": "string"},
            {"type": "array", "items": {"type": "string"}}
          ],
          "description": "Hash(es) of external content"
        }
      }
    }
  }
}

Acknowledgments

Author's Address

Daniel G Petrie
SIPez LLC