Initial commit

Signed-off-by: Gabor Szalai <gabor.szalai@ericsson.com>
diff --git a/5G_system_TS29571_CommonData_CNL113880.tpd b/5G_system_TS29571_CommonData_CNL113880.tpd
new file mode 100644
index 0000000..7a3131c
--- /dev/null
+++ b/5G_system_TS29571_CommonData_CNL113880.tpd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>5G_system_TS29571_CommonData_CNL113880</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="JSON_Generic_CNL113899" projectLocationURI="../JSON_Generic_CNL113899/JSON_Generic_CNL113899.tpd"/>
+  </ReferencedProjects>
+  <Folders>
+    <FolderResource projectRelativePath="src" relativeURI="src"/>
+  </Folders>
+  <Files>
+    <FileResource projectRelativePath="src/TS29571_CommonData.ttcn" relativeURI="src/TS29571_CommonData.ttcn"/>
+  </Files>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <GNUMake>true</GNUMake>
+          <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+          <targetExecutable>bin/5G_system_TS29571_CommonData_CNL113880</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
diff --git a/doc/5G_system_TS29571_CommonData_Description.adoc b/doc/5G_system_TS29571_CommonData_Description.adoc
new file mode 100644
index 0000000..de2a658
--- /dev/null
+++ b/doc/5G_system_TS29571_CommonData_Description.adoc
@@ -0,0 +1,74 @@
+= 5G system TS29571 CommonData Protocol Modules for TTCN-3 Toolset with TITAN, Description
+:author: Gábor Szalai
+:toc: left
+
+== About This Document
+
+This is the description for the 5G system TS29571 CommonData protocol module. The 5G system TS29571 CommonData protocol modules are developed for the TTCN-3 Toolset with Titan. 
+
+== Functionality
+
+The 5G system TS29571 CommonData protocol module implements the object structures of the 3GPP TS 29571 v15.1.0<<_5, [5]>> in a formalized way, using the standard specification language TTCN-3. This allows defining of test data (templates) in the TTCN-3 language and correctly encoding/decoding messages when executing test suites using the Titan TTCN-3 test environment.
+The 5G system TS29571 CommonData protocol module uses Titan’s JSON encoding <<_3, [3]>> and hence is usable with the Titan test toolset only.
+
+=== System Requirements
+Protocol modules are a set of TTCN-3 source code files that can be used as part of TTCN-3 test suites only. Hence, protocol modules alone do not put specific requirements on the system used. However, in order to compile and execute a TTCN-3 test suite using the set of protocol modules the following system requirements must be satisfied:
+
+* Titan TTCN-3 Test Executor version CRL 113 200/6 R5A (6.5.pl0) or higher installed. For Installation Guide see <<_2, [2]>>. Please note: This version of the test port is not compatible with Titan releases earlier than CRL 113 200/6 R5A.
+
+===	Installation
+The set of protocol modules can be used in developing TTCN-3 test suites using any text editor. Since the 5G system TS29571 CommonData protocol is used as a part of a TTCN-3 test suite, this requires TTCN-3 Test Executor be installed before the module can be compiled and executed together with other parts of the test suite. For more details on the installation of TTCN-3 Test Executor see the relevant section of <<_2, [2]>>.
+
+== Interface description
+
+=== Encoding/decoding and other related functions
+This product also contains encoding/decoding functions, which assure correct encoding of messages when sent from Titan and correct decoding of messages when received by Titan. 
+
+==== Implemented encoding and decoding functions
+
+[source]
+----
+Name	Type of formal parameters	Type of return value
+function f_enc_ProblemDetails(in ProblemDetails pdu) return octetstring 
+function f_dec_ProblemDetails(in octetstring stream, out ProblemDetails pdu) return integer 
+function f_enc_TraceData(in TraceData pdu) return octetstring 
+function f_dec_TraceData(in octetstring stream, out TraceData pdu) return integer 
+function f_enc_VarUeId(in VarUeId pdu) return octetstring 
+function f_dec_VarUeId(in octetstring stream, out VarUeId pdu) return integer 
+----
+
+== Usage
+
+The protocol module provides abstract data types for JSON objects used by the services defined in the standard <<_5, [5]>>. The protocol module provides encoder and decoder functions for the JSON objects. The decoder function validates the received JSON object based on the JSON schema as well. Only the validated JSON value is decoded.
+
+== Terminology	
+
+=== Abbreviations
+
+JSON:: JavaScript Object Notation
+
+PDU:: Protocol Data Unit
+
+TTCN-3:: Testing and Test Control Notation version 3
+
+== References
+
+[[_1]]
+[1]	ETSI ES 201 873-1 v4.4.1 (2012-04) +
+The Testing and Test Control Notation version 3. Part 1: Core Language
+
+[[_2]]
+[2]	1/ 198 17-CRL 113 200/6 Uen +
+Installation Guide for the TITAN TTCN-3 Test Executor
+
+[[_3]]
+[3]	2/198 17-CRL 113 200/6 Uen +
+Programmer's Technical Reference for Titan TTCN-3 Test Executor
+
+[[_4]]
+[4]	https://www.json.org
+
+[[_5]]
+[5] 3GPP TS 29571 v15.1.0+
+5G System; Common Data Types for Service Based Interfaces; Stage 3
+
diff --git a/doc/change.log b/doc/change.log
new file mode 100644
index 0000000..fd0f0a4
--- /dev/null
+++ b/doc/change.log
@@ -0,0 +1,14 @@
+= 5G system TS29571 CommonData Protocol Modules for TTCN-3 Toolset with TITAN, Change log

+:author: Gábor Szalai

+:toc: left

+

+== Changes

+

+=== R1A

+

+Initial revision

+

+=== R2A

+

+The file was TS29571_CommonDataTypes.ttcn renamed to TS29571_CommonData.ttcn

+

diff --git a/src/TS29571_CommonData.ttcn b/src/TS29571_CommonData.ttcn
new file mode 100644
index 0000000..7524358
--- /dev/null
+++ b/src/TS29571_CommonData.ttcn
@@ -0,0 +1,745 @@
+/******************************************************************************
+* Copyright (c) 2000-2019  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v2.0
+* which accompanies this distribution, and is available at
+* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+*
+* Contributors:
+*   Gabor Szalai - initial implementation and initial documentation
+******************************************************************************/
+//
+//  File:               TS29571_CommonData.ttcn
+//  Description:	      Type definitions for 3GPP TS29571 CommonData
+/////////////////////////////////////////////// 
+module TS29571_CommonData {
+
+  import from JSON_Generic all;
+
+
+  external function f_enc_ProblemDetails(in ProblemDetails pdu) return octetstring 
+    with { extension "prototype(convert) encode(JSON)" }
+
+  external function f_dec_ProblemDetails(in octetstring stream, out ProblemDetails pdu) return integer 
+    with { extension "prototype(backtrack) decode(JSON)" }
+
+
+  external function f_enc_TraceData(in TraceData pdu) return octetstring 
+  with { extension "prototype(convert) encode(JSON)" }
+
+  external function f_dec_TraceData(in octetstring stream, out TraceData pdu) return integer 
+  with { extension "prototype(backtrack) decode(JSON)" }
+
+  external function f_enc_VarUeId(in VarUeId pdu) return octetstring 
+  with { extension "prototype(convert) encode(JSON)" }
+
+  external function f_dec_VarUeId(in octetstring stream, out VarUeId pdu) return integer 
+  with { extension "prototype(backtrack) decode(JSON)" }
+
+
+  type charstring Binary
+
+  type Binary BinaryRm
+
+  type charstring Bytes
+
+  type Bytes BytesRm
+
+  type charstring Date
+
+  type Date DateRm
+
+  type charstring DateTime
+
+  type DateTime DateTimeRm
+
+  type charstring DiameterIdentity // (pattern "^([A-Za-z0-9]+(-[A-Za-z0-9]+).)+[a-z]{2,}$")
+
+  type DiameterIdentity DiameterIdentityRm // (pattern "^([A-Za-z0-9]+(-[A-Za-z0-9]+).)+[a-z]{2,}$")
+
+  type float Double
+
+  type Double DoubleRm
+
+  type integer DurationSec
+
+  type DurationSec DurationSecRm
+
+  type float Float
+
+  type Float FloatRm
+
+  type integer Int32
+
+  type Int32 Int32Rm
+
+  type integer Int64
+
+  type Int64 Int64Rm
+
+  type charstring Ipv4Addr
+
+  type Ipv4Addr Ipv4AddrRm
+
+  type charstring Ipv6Addr
+
+  type Ipv6Addr Ipv6AddrRm
+
+  type charstring Ipv6Prefix
+
+  type Ipv6Prefix Ipv6PrefixRm
+
+  type charstring MacAddr48 // (pattern "^([0-9a-fA-F]{2})((-[0-9a-fA-F]{2}){5})$")
+
+  type MacAddr48 MacAddr48Rm // (pattern "^([0-9a-fA-F]{2})((-[0-9a-fA-F]{2}){5})$")
+
+  type charstring SupportedFeatures // (pattern "^[A-Fa-f0-9]*$")
+
+  type integer Uinteger (0..infinity)
+
+  type Uinteger UintegerRm (0..infinity)
+
+  type integer Uint16 (0..65535)
+
+  type Uint16 Uint16Rm (0..65535)
+
+  type integer Uint32 (0..infinity)
+
+  type Uint32 Uint32Rm (0..infinity)
+
+  type integer Uint64 (0..infinity)
+
+  type Uint64 Uint64Rm (0..infinity)
+
+  type charstring Uri
+
+  type Uri UriRm
+
+  type charstring VarUeId // (pattern "^(imsi-[0-9]{5,15}|nai-.+|msisdn-[0-9]{5,15}|extid-.+|.+)$")
+
+  type charstring TimeZone
+
+  type TimeZone TimeZoneRm
+
+  type enumerated PatchOperation_enum { add, copy, move, remove, replace_, test} 
+    with {
+      variant "text 'replace_' as 'replace' "
+    }
+
+  type union PatchOperation {
+    PatchOperation_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type enumerated UriScheme_enum { http, https}
+
+  type union UriScheme {
+    UriScheme_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type enumerated ChangeType_enum { ADD, MOVE, REMOVE, REPLACE}
+
+  type union ChangeType {
+    ChangeType_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type set ProblemDetails {
+    Uri    type_ optional,
+    charstring title optional,
+    integer status optional,
+    charstring detail optional,
+    Uri    instance optional,
+    charstring cause optional,
+    set of       InvalidParam    invalidParams optional
+  } with {
+    variant (type_) "name as 'type'"
+  }
+
+
+  type set Link {
+    Uri    href optional
+  }
+
+  type Link LinkRm
+
+  type set PatchItem {
+    PatchOperation    op,
+    charstring path,
+    charstring from_ optional,
+    JSON_generic_val value_ optional
+  } with {
+    variant (from_) "name as 'from'"
+    variant (value_) "name as 'value'"
+  }
+
+  type union LinksValueSchema {
+    set of       Link    field1,
+    Link    field2
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type set SelfLink {
+    Link    self_
+  } with {
+    variant (self_) "name as 'self'"
+  }
+
+
+  type set InvalidParam {
+    charstring param_,
+    charstring reason optional
+  } with {
+    variant (param_) "name as 'param' "
+  }
+
+
+  type set ChangeItem {
+    ChangeType    op,
+    charstring path,
+    charstring from_ optional,
+    JSON_generic_val origValue optional,
+    JSON_generic_val newValue optional
+  } with {
+    variant (from_) "name as 'from'"
+  }
+
+
+  type set NotifyItem {
+    Uri    resourceId optional,
+    set of       ChangeItem    changes optional
+  }
+
+  type charstring Dnn
+
+  type Dnn DnnRm
+
+  type charstring Gpsi // (pattern "^(msisdn-[0-9]{5,15}|extid-.+@.+|.+)$")
+
+  type Gpsi GpsiRm // (pattern "^(msisdn-[0-9]{5,15}|extid-.+|.+)$")
+
+  type charstring GroupId // (pattern "^groupid-[A-Fa-f0-9]{8}-[0-9]{3}-[0-9]{2,3}-([A-Fa-f0-9][A-Fa-f0-9]){1,10}$")
+
+  type GroupId GroupIdRm // (pattern "^(groupid-[A-Fa-f0-9]{14,34}|.+)$")
+
+  type charstring Pei // (pattern "^(imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$")
+
+  type Pei PeiRm // (pattern "^(imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$")
+
+  type charstring Supi // (pattern "^(imsi-[0-9]{5,15}|nai-.+|.+)$")
+
+  type Supi SupiRm // (pattern "^(imsi-[0-9]{5,15}|nai-.+|.+)$")
+
+  type charstring NfInstanceId
+
+  type charstring AmfId // (pattern "^[A-Fa-f0-9]{6}$")
+
+  type integer RfspIndex (1..256)
+
+  type RfspIndex RfspIndexRm (1..256)
+
+  type set Guami {
+    PlmnId    plmnId,
+    AmfId    amfId
+  }
+
+  type set GuamiRm {
+    PlmnId    plmnId,
+    AmfId    amfId
+  }
+
+  type set NetworkId {
+    Mnc    mnc optional,
+    Mcc    mcc optional
+  }
+
+  type charstring ApplicationId
+
+  type ApplicationId ApplicationIdRm
+
+  type integer PduSessionId (0..255)
+
+  type charstring Mcc // (pattern "^\d{3}$")
+
+  type Mcc MccRm // (pattern "^\d{3}$")
+
+  type charstring Mnc // (pattern "^\d{2,3}$")
+
+  type Mnc MncRm // (pattern "^\d{2,3}$")
+
+  type charstring Tac // (pattern "(^[A-Fa-f0-9]{4}$)|(^[A-Fa-f0-9]{6}$)")
+
+  type Tac TacRm // (pattern "(^[A-Fa-f0-9]{4}$)|(^[A-Fa-f0-9]{6}$)")
+
+  type charstring EutraCellId // (pattern "^[A-Fa-f0-9]{7}$")
+
+  type EutraCellId EutraCellIdRm // (pattern "^[A-Fa-f0-9]{7}$")
+
+  type charstring NrCellId // (pattern "^[A-Fa-f0-9]{9}$")
+
+  type NrCellId NrCellIdRm // (pattern "^[A-Fa-f0-9]{9}$")
+
+  type charstring Dnai
+
+  type Dnai DnaiRm
+
+  type Uinteger  FiveGMmCause
+
+  type charstring AmfName
+
+  type charstring AreaCode
+
+  type AreaCode AreaCodeRm
+
+  type charstring NgRanIdentifier // (pattern "^(gNB-[A-Fa-f0-9]{6,8}|MacroNGeNB-[A-Fa-f0-9]{5}|LMacroNGeNB-[A-Fa-f0-9]{6}|SMacroNGeNB-[A-Fa-f0-9]{5})$")
+
+  type enumerated AccessType { ThreeGPP_ACCESS, NON_3GPP_ACCESS}
+    with {
+      variant "text 'ThreeGPP_ACCESS' as '3GPP_ACCESS'"
+    }
+
+
+  type AccessType AccessTypeRm
+
+
+  type enumerated RatType_enum { NR, EUTRA, WLAN, VIRTUAL}
+
+  type union RatType {
+    RatType_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type RatType RatTypeRm
+  
+
+  type enumerated PduSessionType_enum { IPV4V6, IPV4, IPV6, UNSTR, ETHER}
+
+  type union PduSessionType {
+    PduSessionType_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type PduSessionType PduSessionTypeRm 
+
+  type enumerated UpIntegrity_enum { REQUIRED, PREFERRED, NOT_NEEDED}
+
+  type union UpIntegrity {
+    UpIntegrity_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type UpIntegrity UpIntegrityRm
+  
+
+  type enumerated UpConfidentiality_enum { REQUIRED, PREFERRED, NOT_NEEDED}
+
+  type union UpConfidentiality {
+    UpConfidentiality_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type UpConfidentiality UpConfidentialityRm
+  
+
+  type enumerated SscMode_enum { SSC_MODE_1, SSC_MODE_2, SSC_MODE_3}
+
+  type union SscMode {
+    SscMode_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type SscMode SscModeRm 
+
+  type enumerated DnaiChangeType_enum { EARLY, EARLY_LATE, LATE}
+
+  type union DnaiChangeType {
+    DnaiChangeType_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+
+  type DnaiChangeType DnaiChangeTypeRm
+  
+
+  type enumerated RestrictionType_enum { ALLOWED_AREAS, NOT_ALLOWED_AREAS}
+
+  type union RestrictionType {
+    RestrictionType_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+
+  type RestrictionType RestrictionTypeRm
+  
+
+  type enumerated CoreNetworkType_enum { FiveGC, EPC}
+    with {
+      variant "text 'FiveGC' as '5GC'"
+    }
+
+  type union CoreNetworkType {
+    CoreNetworkType_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+
+  type CoreNetworkType CoreNetworkTypeRm
+  
+
+  type enumerated PresenceState_enum { IN_AREA, OUT_OF_AREA, UNKNOWN, INACTIVE}
+
+  type union PresenceState {
+    PresenceState_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type set Snssai {
+    integer sst (0..255),
+    charstring sd optional// (pattern "^[A-Fa-f0-9]{6}$") 
+  }
+
+  type set PlmnId {
+    Mcc    mcc,
+    Mnc    mnc
+  }
+
+  type PlmnId PlmnIdRm 
+  
+  type set Tai {
+    PlmnId    plmnId,
+    Tac    tac
+  }
+
+  type Tai TaiRm
+  
+  type set Ecgi {
+    PlmnId    plmnId,
+    EutraCellId    eutraCellId
+  }
+
+  type Ecgi EcgiRm
+  
+  type set Ncgi {
+    PlmnId    plmnId,
+    NrCellId    nrCellId
+  }
+
+  type Ncgi NcgiRm
+  
+  type set UserLocation {
+    EutraLocation    eutraLocation optional,
+    NrLocation    nrLocation optional,
+    N3gaLocation    n3gaLocation optional
+  }
+
+  type set EutraLocation {
+    Tai    tai,
+    Ecgi    ecgi,
+    integer ageOfLocationInformation (0..32767) optional,
+    DateTime    ueLocationTimestamp optional,
+    charstring geographicalInformation optional, // (pattern "^[0-9A-F]{16}$")
+    charstring geodeticInformation optional, // (pattern "^[0-9A-F]{20}$")
+    GlobalRanNodeId    globalNgenbId optional
+  }
+
+  type EutraLocation EutraLocationRm
+  
+  type set NrLocation {
+    Tai    tai,
+    Ncgi    ncgi,
+    integer ageOfLocationInformation (0..32767) optional,
+    DateTime    ueLocationTimestamp optional,
+    charstring geographicalInformation optional, // (pattern "^[0-9A-F]{16}$")
+    charstring geodeticInformation optional, // (pattern "^[0-9A-F]{20}$")
+    GlobalRanNodeId    globalGnbId optional
+  }
+
+  type NrLocation NrLocationRm
+  
+  type set N3gaLocation {
+    Tai    n3gppTai optional,
+    charstring n3IwfId  optional,// (pattern "^[A-Fa-f0-9]+$")
+    Ipv4Addr    ueIpv4Addr optional,
+    Ipv6Addr    ueIpv6Addr optional,
+    Uinteger    portNumber optional
+  }
+
+  type set UpSecurity {
+    UpIntegrity    upIntegr,
+    UpConfidentiality    upConfid
+  }
+
+  type UpSecurity UpSecurityRm
+  
+  type set NgApCause {
+    Uinteger    group_,
+    Uinteger    value_
+  } with {
+    variant (group_) "name as 'group'"
+    variant (value_) "name as 'value'"
+  }
+
+
+  type set BackupAmfInfo {
+    AmfName    backupAmf,
+    set of       Guami    guamiList optional
+  }
+
+  type set RefToBinaryData {
+    charstring contentId
+  }
+
+  type RefToBinaryData RefToBinaryDataRm
+  
+  type set RouteToLocation {
+    Dnai    dnai,
+    RouteInformation    routeInfo optional,
+    charstring routeProfId optional
+  }
+
+  type set RouteInformation {
+    Ipv4Addr    ipv4Addr optional,
+    Ipv6Addr    ipv6Addr optional,
+    Uinteger    portNumber
+  }
+
+  type set DefaultQosInformation {
+    FiveQi    fiveqi,
+    NonDynamic5Qi    nonDynamic5Qi optional,
+    Dynamic5Qi    dynamic5Qi optional,
+    Arp    arp optional
+  } with {
+    variant (fiveqi) "name as '5qi'"
+  }
+
+
+  type set Area {
+    set of       Tac    tacs optional,
+    set of       AreaCode    areaCodes optional
+  }
+
+  type set ServiceAreaRestriction {
+    RestrictionType    restrictionType optional,
+    set of       Area    areas optional,
+    Uinteger    maxNumOfTAs optional
+  }
+
+  type set PresenceInfo {
+    charstring praId optional,
+    PresenceState    presenceState optional,
+    set of       Tai    trackingAreaList optional,
+    set of       Ecgi    ecgiList optional,
+    set of       Ncgi    ncgiList optional,
+    set of       GlobalRanNodeId    globalRanNodeIdList optional
+  }
+
+  type set GlobalRanNodeId {
+    PlmnId    plmnId,
+    charstring n3IwfId optional,
+    NgRanIdentifier    ngRanNodeId optional
+  }
+
+  type integer Qfi (0..63)
+
+  type Qfi QfiRm
+
+  type integer FiveQi (0..255)
+  
+  type FiveQi FiveQiRm 
+
+  type charstring BitRate // (pattern "^\d+(\.\d+)? (bps|Kbps|Mbps|Gbps|Tbps)$")
+
+  type BitRate BitRateRm // (pattern "^\d+(\.\d+)? (bps|Kbps|Mbps|Gbps|Tbps)$")
+
+  type integer ArpPriorityLevel (1..15)
+
+  type integer FiveQiPriorityLevel (1..127)
+
+  type FiveQiPriorityLevel FiveQiPriorityLevelRm
+
+  type integer PacketDelBudget (1..infinity)
+
+  type PacketDelBudget PacketDelBudgetRm
+
+  type integer PacketErrRate
+
+  type PacketErrRate PacketErrRateRm
+
+  type integer PacketLossRate (0..1000)
+
+  type PacketLossRate PacketLossRateRm
+
+  type integer AverWindow (1..infinity)
+
+  type AverWindow AverWindowRm
+
+  type integer MaxDataBurstVol (1..infinity)
+
+  type MaxDataBurstVol MaxDataBurstVolRm
+
+  type enumerated PreemptionCapability_enum { NOT_PREEMPT, MAY_PREEMPT}
+
+  type union PreemptionCapability {
+    PreemptionCapability_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+  
+  type PreemptionCapability PreemptionCapabilityRm
+  
+
+  type enumerated PreemptionVulnerability_enum { NOT_PREEMPTABLE, PREEMPTABLE}
+
+  type union PreemptionVulnerability {
+    PreemptionVulnerability_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+
+  type PreemptionVulnerability PreemptionVulnerabilityRm 
+  
+
+  type enumerated ReflectiveQoSAttribute_enum { RQOS, NO_RQOS}
+
+  type union ReflectiveQoSAttribute {
+    ReflectiveQoSAttribute_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type ReflectiveQoSAttribute ReflectiveQoSAttributeRm
+  
+
+  type enumerated NotificationControl_enum { REQUESTED, NOT_REQUESTED}
+
+  type union NotificationControl {
+    NotificationControl_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type NotificationControl NotificationControlRm
+  
+
+  type enumerated QosResourceType_enum { NON_GBR, NON_CRITICAL_GBR, CRITICAL_GBR}
+
+  type union QosResourceType {
+    QosResourceType_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+  type QosResourceType QosResourceTypeRm
+  
+
+  type set Arp {
+    ArpPriorityLevel    priorityLevel,
+    PreemptionCapability    preemptCap,
+    PreemptionVulnerability    preemptVuln
+  }
+
+  type Arp ArpRm
+  
+  type set Ambr {
+    BitRate    uplink,
+    BitRate    downlink
+  }
+
+  type Ambr AmbrRm
+  
+  type set Dynamic5Qi {
+    QosResourceType    resourceType,
+    FiveQiPriorityLevel    priorityLevel,
+    PacketDelBudget    packetDelayBudget,
+    PacketErrRate    packetErrRate,
+    AverWindow    averWindow optional,
+    MaxDataBurstVol    maxDataBurstVol optional
+  } 
+
+  type set NonDynamic5Qi {
+    FiveQiPriorityLevel    priorityLevel optional,
+    AverWindow    averWindow optional,
+    MaxDataBurstVol    maxDataBurstVol optional
+  }
+
+  type enumerated TraceDepth_enum { MINIMUM, MEDIUM, MAXIMUM, MINIMUM_WO_VENDOR_EXTENSION, MEDIUM_WO_VENDOR_EXTENSION, MAXIMUM_WO_VENDOR_EXTENSION}
+
+  type union TraceDepth {
+    TraceDepth_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+ 
+  type TraceDepth TraceDepthRm
+  
+
+  type set TraceData {
+    charstring traceRef, // (pattern "^[0-9]{3}[0-9]{2,3}-[A-Fa-f0-9]{6}$"),
+    TraceDepth    traceDepth,
+    charstring neTypeList, // (pattern "^[A-Fa-f0-9]+$"),
+    charstring eventList, // (pattern "^[A-Fa-f0-9]+$"),
+    Ipv4Addr    collectionEntityIpv4Addr optional,
+    Ipv6Addr    collectionEntityIpv6Addr optional,
+    charstring interfaceList optional // (pattern "^[A-Fa-f0-9]+$")
+  }
+
+
+
+
+
+} with {
+  encode "JSON"
+}