MeoPkgm_TypesAndValues.ttcn 5.88 KB
Newer Older
Elian Kraja's avatar
Elian Kraja committed
module MeoPkgm_TypesAndValues {

// JSON
import from JSON all;

// LibCommon
import from LibCommon_BasicTypesAndValues all;


type record AppPkg {
  JSON.String appPkgName,
  JSON.String appPkgVersion,
  JSON.String checksum,
  JSON.String appPkgPath
}

type record AppPkgWithError {
  JSON.String appPkgVersion,
  JSON.String checksum,
  JSON.String appPkgPath
}

type record of OnboardedAppPkgInfo OnboardedAppPkgInfoList;
type record OnboardedAppPkgInfo {
  JSON.String appPkgId,
  JSON.String appName,
  JSON.String appDVersion,
  JSON.String checksum,
  OperationalState operationalState,
  UsageState usageState
}

type enumerated AppPkgOperation {
  DISABLE,
  ENABLE,
  ABORT
}

type enumerated OperationalState {
  ENABLED,
  DISABLED,
  DELETION_PENDING
}

type enumerated UsageState {
  IN_USE,
  NOT_IN_USE
}


type enumerated SubscriptionType {
  ON_BOARDING,
  OP_CHANGE
}

type enumerated SubscriptionTypeWithError {
    ONBOARDING,
  	OP_CHANGE
}


type record of AppPkgSubscriptionInfo AppPkgSubscriptionInfoList;
type record AppPkgSubscriptionInfo {
  JSON.String subscriptionId,
  SubscriptionType subscriptionType,
  JSON.AnyURI callbackUri
}

type record AppPkgSubscription {
  JSON.AnyURI callbackUri,
  SubscriptionType subscriptionType  
}

type record AppPkgSubscriptionWithError {
  JSON.AnyURI callbackUri,
  SubscriptionTypeWithError subscriptionType  
}


type enumerated NotificationType {
  ON_BOARDING,
  OP_CHANGE
}


type record AppPkgNotification {
  NotificationType notificationType,
  JSON.String subscriptionId,
  //@TODO: links should be named _links but getting error. 
  //@TODO: links shuld be a record, but cannot contain self cause self is a key for ttnc
  JSON.AnyURI links
}


//
//
//type record of AppMobilityServiceInfo AppMobilityServiceInfos;
//type record AppMobilityServiceInfo {
//  RegistrationInfos registeredAppMobilityService ,
//  String appMobilityServiceId
//}
//
//type record of RegistrationInfo RegistrationInfos;
//type record RegistrationInfo {
//  ServiceConsumerId serviceConsumerId,
//  DeviceInformations deviceInformation optional,
//  UInt32 expiryTime optional
//}
//
//
//
//
//
//type record of ServiceConsumerId ServiceConsumerIds;
//type record ServiceConsumerId {
//  String appInstanceId optional,
//  String mepId optional
//}
//
//// Erroneous parameter: appInstance should be appInstanceId
//type record of ServiceConsumer ServiceConsumers;
//type record ServiceConsumer {
//  String appInstance optional,
//  String mepId optional
//}
//
//type record of DeviceInformation DeviceInformations;
//type record DeviceInformation {
//  String associateId
//}
//
//
//type JSON.AnyURI links;
//
//type enumerated SubscriptionType {
//	MobilityProcedureSubscription,
//	AdjacentAppInfoSubscription
//}
//
//type record Subscription {
//  JSON.AnyURI href,
//  SubscriptionType subscriptionType
//}
//
//
//type record of AmsSubscriptionLinkList AmsSubscriptionLinkLists;
//type record AmsSubscriptionLinkList {
//  JSON.AnyURI links,
//  Subscription subscription
//}
//
//
//type record MobilityProcedureSubscriptionError {
//  SubscriptionType subscriptionType,
//  JSON.AnyURI callbackReference,
//  JSON.AnyURI links optional,
//  FilterCriteria filterCriteria,
//  TimeStamp expiryDeadline optional 
//}
//
//
//
//
//type record of MobilityProcedureSubscription MobilityProcedureSubscriptions;
//type record MobilityProcedureSubscription {
//  SubscriptionType subscriptionType,
//  JSON.AnyURI callbackReference,
//  JSON.AnyURI links optional,
//  FilterCriteria filterCriteria,
//  TimeStamp expiryDeadline optional 
//}
//
//type enumerated MobilityStatusType {
//	INTERHOST_MOVEOUT_TRIGGERED,
//	TARGET_APPINST_CONFIRMED,
//	TARGET_TRAFFIC_RULE_ACTIVATED,
//	INTERHOST_MOVEOUT_COMPLETED,
//	INTERHOST_MOVEOUT_FAILED
//}
//
//type record AssociateIdList {
//  String associateId
//}
//
//type record of FilterCriteria FilterCriterias;
//type record FilterCriteria {
//	String appInstanceId optional,
//	AssociateIdList	associateId optional, 
//	MobilityStatusType mobilityStatus	
//}
//
//
//
//type record AdjacentFilterCriteria {
//	String appInstanceId optional
//}
//
//
//type record of ExpiryNotification ExpiryNotifications;
//type record ExpiryNotification {
//  TimeStamp timeStamp,
//  JSON.AnyURI links optional,
//  TimeStamp expiryDeadline
//}
//
//type record of AdjacentAppInfoSubscription  AdjacentAppInfoSubscriptions;
//type record AdjacentAppInfoSubscription {
//  SubscriptionType subscriptionType,
//  JSON.AnyURI callbackReference,
//  JSON.AnyURI links optional,
//  AdjacentFilterCriteria filterCriteria,
//  TimeStamp expiryDeadline optional
//}

  /**
   * @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 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 Problem Details for HTTP APIs
* @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
* @see IETF RFC 7807 Clause 3.  The Problem Details JSON Object
*/
type record ProblemDetails {
  JSON.String type_,
  JSON.String title,
  UInt32 status,
  JSON.String detail,
  JSON.String instance
} with {
  variant (type_) "name as 'type'";
}


} with {
encode "JSON"
}