Enhancements of REST-based E2 subscription interface

Change-Id: I8a8d7f7367315163fedffe9d12440afa44eecb73
Signed-off-by: Mohamed Abukar <abukar.mohamed@nokia.com>
diff --git a/pkg/clientmodel/subsequent_action.go b/pkg/clientmodel/subsequent_action.go
new file mode 100644
index 0000000..b0c8a0f
--- /dev/null
+++ b/pkg/clientmodel/subsequent_action.go
@@ -0,0 +1,201 @@
+// Code generated by go-swagger; DO NOT EDIT.
+
+package clientmodel
+
+// This file was generated by the swagger tool.
+// Editing this file might prove futile when you re-run the swagger generate command
+
+import (
+	"encoding/json"
+
+	strfmt "github.com/go-openapi/strfmt"
+
+	"github.com/go-openapi/errors"
+	"github.com/go-openapi/swag"
+	"github.com/go-openapi/validate"
+)
+
+// SubsequentAction SubsequentAction is an OPTIONAL IE
+// swagger:model SubsequentAction
+type SubsequentAction struct {
+
+	// subsequent action type
+	// Required: true
+	// Enum: [continue wait]
+	SubsequentActionType *string `json:"SubsequentActionType"`
+
+	// time to wait
+	// Required: true
+	// Enum: [zero w1ms w2ms w5ms w10ms w20ms w30ms w40ms w50ms w100ms w200ms w500ms w1s w2s w5s w10s w20s w60s]
+	TimeToWait *string `json:"TimeToWait"`
+}
+
+// Validate validates this subsequent action
+func (m *SubsequentAction) Validate(formats strfmt.Registry) error {
+	var res []error
+
+	if err := m.validateSubsequentActionType(formats); err != nil {
+		res = append(res, err)
+	}
+
+	if err := m.validateTimeToWait(formats); err != nil {
+		res = append(res, err)
+	}
+
+	if len(res) > 0 {
+		return errors.CompositeValidationError(res...)
+	}
+	return nil
+}
+
+var subsequentActionTypeSubsequentActionTypePropEnum []interface{}
+
+func init() {
+	var res []string
+	if err := json.Unmarshal([]byte(`["continue","wait"]`), &res); err != nil {
+		panic(err)
+	}
+	for _, v := range res {
+		subsequentActionTypeSubsequentActionTypePropEnum = append(subsequentActionTypeSubsequentActionTypePropEnum, v)
+	}
+}
+
+const (
+
+	// SubsequentActionSubsequentActionTypeContinue captures enum value "continue"
+	SubsequentActionSubsequentActionTypeContinue string = "continue"
+
+	// SubsequentActionSubsequentActionTypeWait captures enum value "wait"
+	SubsequentActionSubsequentActionTypeWait string = "wait"
+)
+
+// prop value enum
+func (m *SubsequentAction) validateSubsequentActionTypeEnum(path, location string, value string) error {
+	if err := validate.Enum(path, location, value, subsequentActionTypeSubsequentActionTypePropEnum); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *SubsequentAction) validateSubsequentActionType(formats strfmt.Registry) error {
+
+	if err := validate.Required("SubsequentActionType", "body", m.SubsequentActionType); err != nil {
+		return err
+	}
+
+	// value enum
+	if err := m.validateSubsequentActionTypeEnum("SubsequentActionType", "body", *m.SubsequentActionType); err != nil {
+		return err
+	}
+
+	return nil
+}
+
+var subsequentActionTypeTimeToWaitPropEnum []interface{}
+
+func init() {
+	var res []string
+	if err := json.Unmarshal([]byte(`["zero","w1ms","w2ms","w5ms","w10ms","w20ms","w30ms","w40ms","w50ms","w100ms","w200ms","w500ms","w1s","w2s","w5s","w10s","w20s","w60s"]`), &res); err != nil {
+		panic(err)
+	}
+	for _, v := range res {
+		subsequentActionTypeTimeToWaitPropEnum = append(subsequentActionTypeTimeToWaitPropEnum, v)
+	}
+}
+
+const (
+
+	// SubsequentActionTimeToWaitZero captures enum value "zero"
+	SubsequentActionTimeToWaitZero string = "zero"
+
+	// SubsequentActionTimeToWaitW1ms captures enum value "w1ms"
+	SubsequentActionTimeToWaitW1ms string = "w1ms"
+
+	// SubsequentActionTimeToWaitW2ms captures enum value "w2ms"
+	SubsequentActionTimeToWaitW2ms string = "w2ms"
+
+	// SubsequentActionTimeToWaitW5ms captures enum value "w5ms"
+	SubsequentActionTimeToWaitW5ms string = "w5ms"
+
+	// SubsequentActionTimeToWaitW10ms captures enum value "w10ms"
+	SubsequentActionTimeToWaitW10ms string = "w10ms"
+
+	// SubsequentActionTimeToWaitW20ms captures enum value "w20ms"
+	SubsequentActionTimeToWaitW20ms string = "w20ms"
+
+	// SubsequentActionTimeToWaitW30ms captures enum value "w30ms"
+	SubsequentActionTimeToWaitW30ms string = "w30ms"
+
+	// SubsequentActionTimeToWaitW40ms captures enum value "w40ms"
+	SubsequentActionTimeToWaitW40ms string = "w40ms"
+
+	// SubsequentActionTimeToWaitW50ms captures enum value "w50ms"
+	SubsequentActionTimeToWaitW50ms string = "w50ms"
+
+	// SubsequentActionTimeToWaitW100ms captures enum value "w100ms"
+	SubsequentActionTimeToWaitW100ms string = "w100ms"
+
+	// SubsequentActionTimeToWaitW200ms captures enum value "w200ms"
+	SubsequentActionTimeToWaitW200ms string = "w200ms"
+
+	// SubsequentActionTimeToWaitW500ms captures enum value "w500ms"
+	SubsequentActionTimeToWaitW500ms string = "w500ms"
+
+	// SubsequentActionTimeToWaitW1s captures enum value "w1s"
+	SubsequentActionTimeToWaitW1s string = "w1s"
+
+	// SubsequentActionTimeToWaitW2s captures enum value "w2s"
+	SubsequentActionTimeToWaitW2s string = "w2s"
+
+	// SubsequentActionTimeToWaitW5s captures enum value "w5s"
+	SubsequentActionTimeToWaitW5s string = "w5s"
+
+	// SubsequentActionTimeToWaitW10s captures enum value "w10s"
+	SubsequentActionTimeToWaitW10s string = "w10s"
+
+	// SubsequentActionTimeToWaitW20s captures enum value "w20s"
+	SubsequentActionTimeToWaitW20s string = "w20s"
+
+	// SubsequentActionTimeToWaitW60s captures enum value "w60s"
+	SubsequentActionTimeToWaitW60s string = "w60s"
+)
+
+// prop value enum
+func (m *SubsequentAction) validateTimeToWaitEnum(path, location string, value string) error {
+	if err := validate.Enum(path, location, value, subsequentActionTypeTimeToWaitPropEnum); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (m *SubsequentAction) validateTimeToWait(formats strfmt.Registry) error {
+
+	if err := validate.Required("TimeToWait", "body", m.TimeToWait); err != nil {
+		return err
+	}
+
+	// value enum
+	if err := m.validateTimeToWaitEnum("TimeToWait", "body", *m.TimeToWait); err != nil {
+		return err
+	}
+
+	return nil
+}
+
+// MarshalBinary interface implementation
+func (m *SubsequentAction) MarshalBinary() ([]byte, error) {
+	if m == nil {
+		return nil, nil
+	}
+	return swag.WriteJSON(m)
+}
+
+// UnmarshalBinary interface implementation
+func (m *SubsequentAction) UnmarshalBinary(b []byte) error {
+	var res SubsequentAction
+	if err := swag.ReadJSON(b, &res); err != nil {
+		return err
+	}
+	*m = res
+	return nil
+}