BwManagementAPI_TypesAndValues.ttcn 3.97 KB
Newer Older
YannGarcia's avatar
YannGarcia committed
module BwManagementAPI_TypesAndValues {
  
  // JSON
  import from JSON all;
  
  // 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 {
    JSON.String type_,
    JSON.String title,
    UInt32 status,
    JSON.String detail,
    JSON.String instance
  } with {
    variant (type_) "name as 'type'";
  }

  /**
   * @desc Information of bandwidth resource
   * @member 
   */
  type record BwInfo {
    TimeStamp timeStamp optional,
    AppInsId appInsId,
    RequestType requestType,
    SessionFilter sessionFilter optional,
    FixedBWPriority fixedBWPriority,
    FixedAllocation fixedAllocation,
    AllocationDirection allocationDirection
  }

  /**
   * @desc Conform to JSON merge patch format and processing rules specified IETF RFC 7396 [8], this type represents the attributes whose value are allowed to be updated with HTTP PATCH method in content format JSON
   * @member 
   */
  type record BwInfoDeltas {
    AppInsId appInsId,
    RequestType requestType,
    SessionFilter sessionFilter optional,
    FixedBWPriority fixedBWPriority,
    FixedAllocation fixedAllocation,
    AllocationDirection allocationDirection
  }

  /**
   * @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 {
    Seconds seconds,
    NanoSeconds nanoSeconds
  }

  /**
   * @desc Application instance identifier
   */
  type JSON.String AppInsId;

  /**
   * @desc Numeric value (0 - 255) corresponding to specific type of consumer
   */
  type enumerated  RequestType {
    APPLICATION_SPECIFIC_BW_ALLOCATION,
    SESSION_SPECIFIC_BW_ALLOCATION
  }

  /**
   * @desc Session filtering criteria, applicable when requestType is set as SESSION_SPECIFIC_BW_ALLOCATION. Any filtering criteria shall define a single session only. In case multiple sessions match sessionFilter the request shall be rejected
   */
  type record of SessionFilterItems SessionFilter;
  type record SessionFilterItems {
    SourceIp sourceIp,
    SourcePort sourcePort,
    DstAddress dstAddress,
    DstPort dstPort,
    Protocol protocol
  }

  /**
   * @desc Indicates the allocation priority when dealing with several applications or sessions in parallel. Values are not defined in the present document
   */
  type enumerated FixedBWPriority {
    reserved
  }

  /**
   * @desc Size of requested fixed BW allocation in [bps]
   */
  type JSON.String FixedAllocation;


  /**
   * @desc The seconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC
   */
  type UInt32 Seconds;

  /**
   * @desc The nanoseconds part of the Time. Time is defined as Unix-time since January 1, 1970, 00:00:00 UTC
   */
  type UInt32 NanoSeconds;

  /**
   * @desc The direction of the requested BW allocation
   */
  type enumerated AllocationDirection {
    Downlink,
    Uplink,
    Symmetrical
  }

  /**
   * @desc Source address identity of session (including range)
   */
  type JSON.String SourceIp;

  /**
   * @desc Source port identity of session
   */
  type record of JSON.String SourcePort;

  /**
   * @desc Destination address identity of session (including range)
   */
  type JSON.String DstAddress;

  /**
   * @desc Destination port identity of session
   */
  type record of JSON.String DstPort;

  /**
   * @desc Protocol number
   */
  type JSON.String Protocol;

} with {
  encode "JSON"
} // End of module BwManagementAPI_TypesAndValues