RnisAPI_TypesAndValues.ttcn 14.9 KB
Newer Older
Yann Garcia's avatar
Yann Garcia committed
/**
 * @desc The ETSI MEC ISG MEC012 Radio Network Information API described using OpenAPI
 * @see http://www.etsi.org/deliver/etsi_gs/MEC/001_099/012/01.01.01_60/gs_mec012v010101p.pdf
 */
module RnisAPI_TypesAndValues {
  
YannGarcia's avatar
YannGarcia committed
  // JSON
  import from JSON all;
  
Yann Garcia's avatar
Yann Garcia committed
  // LibCommon
  import from LibCommon_BasicTypesAndValues all;
  
  /**
   * @desc 
   * @member type_ A URI reference according to IETF RFC 3986 that identifies the problem type
   * @member title A short, human-readable summary of the problem type
   * @member status The HTTP status code for this occurrence of the problem
   * @member detail A human-readable explanation specific to this occurrence of the problem
   * @member instance A URI reference that identifies the specific occurrence of the problem
   */
  type record ProblemDetails {
YannGarcia's avatar
YannGarcia committed
    JSON.String type_,
    JSON.String title,
Yann Garcia's avatar
Yann Garcia committed
    UInt32 status,
YannGarcia's avatar
YannGarcia committed
    JSON.String detail,
    JSON.String instance
Yann Garcia's avatar
Yann Garcia committed
  } with {
    variant (type_) "name as 'type'";
  }

  /**
   * @desc 
   * @member timeStamp
   * @member appInsId
   * @member ecgi
   */
  type record PlmnInfo {
    TimeStamp timeStamp optional,
    AppInsId appInsId,
    Ecgi ecgi
  }

  /**
   * @desc 
   * @member timeStamp
   * @member appInsId
   * @member requestId
   * @member cellUserInfo
   */
  type record RabInfo {
    TimeStamp timeStamp optional,
    AppInsId appInsId,
    RequestId requestId,
    CellUserInfo cellUserInfo optional
  }

  /**
   * @desc 
   * @member timeStamp
   * @member appInsId
   * @member ecgi
   */
  type record S1BearerInfo {
    TimeStamp timeStamp optional,
    S1UeInfo s1UeInfo
  }

  /**
   * @desc The information on users per cell
   * @member tempUeId
   * @member associateId
   * @member ecgi
   * @member s1BearerInfoDetailed
   */
  type record S1UeInfo {
   TempUeId tempUeId,
   AssociateId associateId optional,
Yann Garcia's avatar
Yann Garcia committed
   Ecgis ecgi,
Yann Garcia's avatar
Yann Garcia committed
   S1BearerInfoDetailed s1BearerInfoDetailed
  }

  /**
   * @desc Information on UEs in the specific cell
   * @member erabId The element that uniquely identifies a S1 bearer for a specific UE, as defined in ETSI TS 136 413
   * @member s1EnbInfo
   * @member sGwInfo
   */
Yann Garcia's avatar
Yann Garcia committed
  type record S1BearerInfoDetailed_ {
Yann Garcia's avatar
Yann Garcia committed
    ErabId erabId,
    S1EnbInfo s1EnbInfo,
    SGwInfo sGwInfo
  }
Yann Garcia's avatar
Yann Garcia committed
  type record of S1BearerInfoDetailed_ S1BearerInfoDetailed;
Yann Garcia's avatar
Yann Garcia committed

  type UInt32 ErabId;

  /**
   * @desc 
   * @member mmec MMEC as defined in ETSI TS 136 413
   * @member mtmsi M-TMSI as defined in ETSI TS 136 413
   */
  type record TempUeId {
    Mmec mmec,
    Mtmsi mtmsi
  }

YannGarcia's avatar
YannGarcia committed
  type JSON.String Mmec;
Yann Garcia's avatar
Yann Garcia committed

YannGarcia's avatar
YannGarcia committed
  type JSON.String Mtmsi;
Yann Garcia's avatar
Yann Garcia committed

  /**
   * @desc 
   * @member ipAddress eNB transport layer address of this S1 bearer
   * @member tunnelId eNB GTP-U TEID of this S1 bearer
   */
  type record S1EnbInfo {
YannGarcia's avatar
YannGarcia committed
    JSON.String ipAddress,
    JSON.String tunnelId
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc 
   * @member ipAddress SGW transport layer address of this S1 bearer
   * @member tunnelId SGW GTP-U TEID of this S1 bearer
   */
  type record SGwInfo {
YannGarcia's avatar
YannGarcia committed
    JSON.String ipAddress,
    JSON.String tunnelId
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc
   * @member seconds The seconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC
   * @member nanoSeconds The nanoseconds part of the time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC
   */
  type record TimeStamp {
    UInt32 seconds,
    UInt32 nanoSeconds
  }

  /**
   * @desc Unique identifier for the mobile edge application instance",
   */
YannGarcia's avatar
YannGarcia committed
  type JSON.String AppInsId;
Yann Garcia's avatar
Yann Garcia committed

  /**
   * @desc Unique identifier allocated by the Mobile Edge application for the  Information request
   */
YannGarcia's avatar
YannGarcia committed
  type JSON.String RequestId;
Yann Garcia's avatar
Yann Garcia committed

  /**
   * @desc The information on users per cell
   * @member ecgi 
   * @member ueInfo
   */
  type record CellUserInfo {
    Ecgi ecgi,
    UeInfo ueInfo
  }

  /**
   * @desc E-UTRAN CelI Global Identifier as defined in 3GPP TS 36.413
   * @member ecgi 
Yann Garcia's avatar
Yann Garcia committed
   * @member cellId 
Yann Garcia's avatar
Yann Garcia committed
   */
  type record Ecgi {
    Plmn plmn,
    CellId cellId
  }
Yann Garcia's avatar
Yann Garcia committed
  type record of Ecgi Ecgis;
Yann Garcia's avatar
Yann Garcia committed

  /**
   * @desc E-UTRAN CelI Global Identifier as defined in 3GPP TS 36.413
   * @member mcc The Mobile Country Code part of PLMN Identity as defined in 3GPP TS 36.413
   * @member mnc The Mobile Network Code part of PLMN Identity as defined in 3GPP TS 36.413
   */
  type record Plmn {
YannGarcia's avatar
YannGarcia committed
    JSON.String mcc,
    JSON.String mnc
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc The E-UTRAN Cell Identity as a bit string (size (28)), as defined in 3GPP TS 36.413
   */
  type record of octetstring CellId;

  /**
   * @desc Information on UEs in the specific cell
   * @member associateId
   * @member erabInfo
   */
Yann Garcia's avatar
Yann Garcia committed
  type record UeInfo_ {
    AssociateId associateId optional,
    ErabQosParameters erabInfo
Yann Garcia's avatar
Yann Garcia committed
  }
Yann Garcia's avatar
Yann Garcia committed
  type record of UeInfo_ UeInfo;
Yann Garcia's avatar
Yann Garcia committed

  /**
   * @desc Information on UEs in the specific cell
   * @member type Numeric value (0-255) corresponding to specified type of identifier
   * @member value Value for the identifier
   */
Yann Garcia's avatar
Yann Garcia committed
  type record AssociateId_ {
Yann Garcia's avatar
Yann Garcia committed
    AssociateId_type type_,
    UInt32 value_
  } with {
    variant (type_) "name as 'type'";
    variant (value_) "name as 'value'";
  }
Yann Garcia's avatar
Yann Garcia committed
  type record of AssociateId_ AssociateId;
Yann Garcia's avatar
Yann Garcia committed

  /**
   * @desc Numeric value (0-255) corresponding to specified type of identifier
   */
  type enumerated AssociateId_type {
Yann Garcia's avatar
Yann Garcia committed
    RESERVED,
    UE_IPV4_ADDRESS,
    UE_IPV6_ADDRESS,
    NATED_IP_ADDRESS,
    GTP_TEID
Yann Garcia's avatar
Yann Garcia committed
  }
  
  /**
   * @desc 
   * @member qci QoS Class Identifier as defined in TS 23.401
   * @member qci_information 
   */
Yann Garcia's avatar
Yann Garcia committed
  type record ErabQosParameter {
Yann Garcia's avatar
Yann Garcia committed
    UInt32 qci,
    QosInformation qci_information
  }
Yann Garcia's avatar
Yann Garcia committed
  type record of ErabQosParameter ErabQosParameters;

  /**
   * @desc QoS Class Identifier as defined in TS 23.401
   */
  type UInt32 Qci;
Yann Garcia's avatar
Yann Garcia committed
  
  /**
   * @desc 
   * @member erabGbrDl This IE indicates the maximum downlink E-RAB Bit Rate as defined in TS 23.401 for this bearer
   * @member erabGbrUl This IE indicates the maximum uplink E-RAB Bit Rate as defined in TS 23.401 for this bearer
   * @member erabGbrDl This IE indicates the guaranteed  downlink E-RAB Bit Rate as defined in TS 23.401 for this bearer
   * @member erabMbrUl This IE indicates the guaranteed  uplink E-RAB Bit Rate as defined in TS 23.401 for this bearer
   */
  type enumerated QosInformation {
Yann Garcia's avatar
Yann Garcia committed
    erabGbrDl,
    erabGbrUl,
    erabMbrDl,
    erabMbrUl
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc 
Yann Garcia's avatar
Yann Garcia committed
   * @member links
Yann Garcia's avatar
Yann Garcia committed
   * @member subscription 
   */
  type record SubscriptionLinkList {
Yann Garcia's avatar
Yann Garcia committed
    Link links,
    Subscription subscription optional
  } with {
    variant (links) "name as '_links'";
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc 
   * @member callbackReference 
   * @member filterCriteria 
   * @member expiryDeadline 
   */
  type record MeasRepUeSubscriptionPost {
    CallbackReference callbackReference,
    FilterCriteriaAssocTri filterCriteria,
    TimeStamp expiryDeadline optional
  }

  /**
   * @desc
   * @member callbackReference
Yann Garcia's avatar
Yann Garcia committed
   * @member links
Yann Garcia's avatar
Yann Garcia committed
   * @member filterCriteria
   * @member expiryDeadline
   */
  type record MeasRepUeSubscription {
    CallbackReference callbackReference,
Yann Garcia's avatar
Yann Garcia committed
    Link links,
Yann Garcia's avatar
Yann Garcia committed
    FilterCriteriaAssocTri filterCriteria,
    TimeStamp expiryDeadline optional
Yann Garcia's avatar
Yann Garcia committed
  } with {
    variant (links) "name as '_links'";
Yann Garcia's avatar
Yann Garcia committed
  }
  
  /**
   * @desc
   * @member callbackReference
   * @member eventType
   * @member s1BearerSubscriptionCriteria
   * @member expiryDeadline
   */
  type record S1BearerSubscriptionPost {
    CallbackReference callbackReference,
    EventType eventType,
    S1BearerSubscriptionCriteria s1BearerSubscriptionCriteria,
    TimeStamp expiryDeadline optional
  }

  /**
   * @desc
   * @member callbackReference
Yann Garcia's avatar
Yann Garcia committed
   * @member links
Yann Garcia's avatar
Yann Garcia committed
   * @member s1BearerSubscriptionCriteria
   * @member expiryDeadline
   */
  type record S1BearerSubscription {
    CallbackReference callbackReference,
Yann Garcia's avatar
Yann Garcia committed
    Link links,
Yann Garcia's avatar
Yann Garcia committed
    S1BearerSubscriptionCriteria s1BearerSubscriptionCriteria,
    TimeStamp expiryDeadline optional
Yann Garcia's avatar
Yann Garcia committed
  } with {
    variant (links) "name as '_links'";
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc
   * @member callbackReference
Yann Garcia's avatar
Yann Garcia committed
   * @member links
Yann Garcia's avatar
Yann Garcia committed
   * @member filterCriteria
   */
  type record RabEstSubscription {
    CallbackReference callbackReference,
Yann Garcia's avatar
Yann Garcia committed
    Link links,
Yann Garcia's avatar
Yann Garcia committed
    FilterCriteriaAssocQci filterCriteria
Yann Garcia's avatar
Yann Garcia committed
  } with {
    variant (links) "name as '_links'";
Yann Garcia's avatar
Yann Garcia committed
  }
  
  /**
   * @desc
   * @member callbackReference
Yann Garcia's avatar
Yann Garcia committed
   * @member links
Yann Garcia's avatar
Yann Garcia committed
   * @member filterCriteria
   * @member expiryDeadline
   */
  type record RabEstSubscriptionPost {
    CallbackReference callbackReference,
Yann Garcia's avatar
Yann Garcia committed
    Link links,
Yann Garcia's avatar
Yann Garcia committed
    FilterCriteriaAssocQci filterCriteria,
    TimeStamp expiryDeadline optional
Yann Garcia's avatar
Yann Garcia committed
  } with {
    variant (links) "name as '_links'";
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc
   * @member callbackReference
Yann Garcia's avatar
Yann Garcia committed
   * @member links
Yann Garcia's avatar
Yann Garcia committed
   * @member filterCriteria
   * @member expiryDeadline
   */
  type record RabModSubscription {
    CallbackReference callbackReference,
Yann Garcia's avatar
Yann Garcia committed
    Link links,
Yann Garcia's avatar
Yann Garcia committed
    FilterCriteriaAssocQci filterCriteria,
    TimeStamp expiryDeadline optional
Yann Garcia's avatar
Yann Garcia committed
  } with {
    variant (links) "name as '_links'";
Yann Garcia's avatar
Yann Garcia committed
  }
  
  /**
   * @desc
   * @member callbackReference
   * @member filterCriteria
   * @member expiryDeadline
   */
  type record RabModSubscriptionPost {
    CallbackReference callbackReference,
    FilterCriteriaAssocQci filterCriteria,
    TimeStamp expiryDeadline optional
  }

  /**
   * @desc
   * @member callbackReference
Yann Garcia's avatar
Yann Garcia committed
   * @member links
Yann Garcia's avatar
Yann Garcia committed
   * @member filterCriteria
   * @member expiryDeadline
   */
  type record RabRelSubscription {
    CallbackReference callbackReference,
Yann Garcia's avatar
Yann Garcia committed
    Link links,
Yann Garcia's avatar
Yann Garcia committed
    FilterCriteriaAssocQci filterCriteria,
    TimeStamp expiryDeadline optional
Yann Garcia's avatar
Yann Garcia committed
  } with {
    variant (links) "name as '_links'";
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc
   * @member callbackReference
   * @member filterCriteria
   * @member expiryDeadline
   */
  type record RabRelSubscriptionPost {
    CallbackReference callbackReference,
    FilterCriteriaAssocQci filterCriteria,
    TimeStamp expiryDeadline optional
  }

  /**
   * @desc
   * @member callbackReference
Yann Garcia's avatar
Yann Garcia committed
   * @member links
Yann Garcia's avatar
Yann Garcia committed
   * @member filterCriteria
   * @member expiryDeadline
   */
  type record CaReConfSubscription {
    CallbackReference callbackReference,
Yann Garcia's avatar
Yann Garcia committed
    Link links,
Yann Garcia's avatar
Yann Garcia committed
    FilterCriteriaAssoc filterCriteria,
    TimeStamp expiryDeadline optional
Yann Garcia's avatar
Yann Garcia committed
  } with {
    variant (links) "name as '_links'";
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc
   * @member callbackReference
   * @member filterCriteria
   * @member expiryDeadline
   */
  type record CaReConfSubscriptionPost {
    CallbackReference callbackReference,
    FilterCriteriaAssoc filterCriteria,
    TimeStamp expiryDeadline optional
  }

  /**
   * @desc
   * @member callbackReference
   * @member filterCriteria
   * @member expiryDeadline
   */
  type record CellChangeSubscriptionPost {
    CallbackReference callbackReference,
    FilterCriteriaAssocHo filterCriteria,
    TimeStamp expiryDeadline optional
  }

  /**
   * @desc
   * @member callbackReference
Yann Garcia's avatar
Yann Garcia committed
   * @member links
Yann Garcia's avatar
Yann Garcia committed
   * @member filterCriteria
   * @member expiryDeadline
   */
  type record CellChangeSubscription {
    CallbackReference callbackReference,
Yann Garcia's avatar
Yann Garcia committed
    Link links,
Yann Garcia's avatar
Yann Garcia committed
    FilterCriteriaAssocHo filterCriteria,
    TimeStamp expiryDeadline optional
Yann Garcia's avatar
Yann Garcia committed
  } with {
    variant (links) "name as '_links'";
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc
   * @member callbackReference
   * @member filterCriteria
   * @member expiryDeadline
   */
  type record MeasTaSubscriptionPost {
    CallbackReference callbackReference,
    FilterCriteriaAssoc filterCriteria,
    TimeStamp expiryDeadline optional
  }

  /**
   * @desc
   * @member callbackReference
Yann Garcia's avatar
Yann Garcia committed
   * @member links
Yann Garcia's avatar
Yann Garcia committed
   * @member filterCriteria
   * @member expiryDeadline
   */
  type record MeasTaSubscription {
    CallbackReference callbackReference,
Yann Garcia's avatar
Yann Garcia committed
    Link links,
Yann Garcia's avatar
Yann Garcia committed
    FilterCriteriaAssocHo filterCriteria,
    TimeStamp expiryDeadline optional
Yann Garcia's avatar
Yann Garcia committed
  } with {
    variant (links) "name as '_links'";
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc URL selected by the Mobile Edge application to receive notifications on the subscribed RNIS information
   */
YannGarcia's avatar
YannGarcia committed
  type JSON.String CallbackReference;
Yann Garcia's avatar
Yann Garcia committed

  /**
   * @desc List of hyperlinks related to the resource
   * @member self_ URI referring to a resource
   */
  type record Link {
Yann Garcia's avatar
Yann Garcia committed
    LinkType self_
Yann Garcia's avatar
Yann Garcia committed
  } with {
    variant (self_) "name as 'self'";
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc URI referring to a resource
   */
YannGarcia's avatar
YannGarcia committed
  type JSON.AnyURI LinkType;
Yann Garcia's avatar
Yann Garcia committed

  /**
   * @desc A link to a subscription
   * @member 
   * @member 
   */
Yann Garcia's avatar
Yann Garcia committed
  type record Subscription_ {
Yann Garcia's avatar
Yann Garcia committed
    LinkType href,
Yann Garcia's avatar
Yann Garcia committed
    SubscriptionType subscriptionType
  }
Yann Garcia's avatar
Yann Garcia committed
  type record of Subscription_ Subscription;
Yann Garcia's avatar
Yann Garcia committed

  /**
   * @desc Numeric value corresponding to specified type of subscription
   * @member 
   * @member 
   * @member 
   * @member 
   * @member 
   * @member 
   */
  type enumerated SubscriptionType {
Yann Garcia's avatar
Yann Garcia committed
    RESERVED,
    CELL_CHANGE,
    RAB_ESTABLISHMENT,
    RAB_MODIFICATION,
    RAB_RELEASE,
    MEAS_REPORT_UE,
    MEAS_TIMING_ADVANCE,
    CA_RECONF,
    S1_BEARE
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc List of filtering criteria for the subscription
   * @member appInsId 
   * @member associateId
   * @member plmn
   * @member cellId
   */
  type record FilterCriteriaAssoc {
    AppInsId appInsId,
    AssociateId associateId,
    Plmn plmn,
    CellId cellId
  }

  /**
   * @desc List of filtering criteria for the subscription
   * @member appInsId 
   * @member associateId
   * @member plmn
   * @member cellId
   * @member qci
   */
  type record FilterCriteriaAssocQci {
    AppInsId appInsId,
    AssociateId associateId,
    Plmn plmn,
    CellId cellId,
    Qci qci
  }
  
  /**
   * @desc List of filtering criteria for the subscription
   * @member appInsId 
   * @member associateId
   * @member plmn
   * @member cellId
   * @member hoStatus
   */
  type record FilterCriteriaAssocHo {
    AppInsId appInsId,
    AssociateId associateId,
    Plmn plmn,
    CellId cellId,
    HoStatus hoStatus
  }

  /**
   * @desc List of filtering criteria for the subscription
   * @member appInsId 
   * @member associateId
   * @member plmn
   * @member cellId
   * @member trigger
   */
Yann Garcia's avatar
Yann Garcia committed
  type record FilterCriteriaAssocTri {
Yann Garcia's avatar
Yann Garcia committed
    AppInsId appInsId,
    AssociateId associateId,
    Plmn plmn,
    CellId cellId,
    Trigger trigger_
Yann Garcia's avatar
Yann Garcia committed
  } with {
    variant (trigger_) "name as 'trigger'";
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc List of filtering criteria for the subscription
   * @member appInsId 
   * @member associateId
   * @member plmn
   * @member cellId
   * @member trigger
   */
Yann Garcia's avatar
Yann Garcia committed
  type record S1BearerSubscriptionCriteria {
Yann Garcia's avatar
Yann Garcia committed
    AssociateId associateId,
    Plmn plmn,
    CellId cellId,
Yann Garcia's avatar
Yann Garcia committed
    ErabId erabId
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc Description of the subscribed to event
   */
  type enumerated HoStatus {
Yann Garcia's avatar
Yann Garcia committed
    RESERVED,
    IN_PREPARATION,
    IN_EXECUTION,
    COMPLETED,
    REJECTED,
    CANCELLED
Yann Garcia's avatar
Yann Garcia committed
  }

  /**
   * @desc Description of the subscribed event
   */
  type enumerated EventType {
Yann Garcia's avatar
Yann Garcia committed
    RESERVED,
    S1_BEARER_ESTABLISH,
    S1_BEARER_MODIFY,
    S1_BEARER_RELEASE
Yann Garcia's avatar
Yann Garcia committed
  }
  
  /**
   * @desc Unique identifier for the mobile edge application instance
   */
  type enumerated Trigger {
Yann Garcia's avatar
Yann Garcia committed
    NOT_AVAILABLE,
    PERIODICAL_REPORT_STRONGEST_CELLS,
    PERIODICAL_REPORT_STRONGEST_CELLS_FOR_SON,
    PERIODICAL_REPORT_CGI,
    EVENT_A1,
    EVENT_A2,
    EVENT_A3,
    EVENT_A4,
    EVENT_A5,
    EVENT_A6,
    EVENT_B1,
    EVENT_B2,
    EVENT_C1,
    EVENT_C2,
    EVENT_W1,
    EVENT_W2,
    EVENT_W3
Yann Garcia's avatar
Yann Garcia committed
  }
  
} with {
  encode "JSON"
} // End of module RnisAPI_TypesAndValues