Imports System
Imports System.IO
Imports System.Collections
Imports System.Collections.Generic
Imports System.Runtime.Serialization
Imports ServiceStack
Imports ServiceStack.DataAnnotations
Imports Eros.Subtle.Canvara.WebAPIModel.ServiceModelSubscription
Imports Eros.Saguna.Common.Library.ValidationEngine
Imports Eros.Saguna.Common.WebAPI.ServiceModel
Namespace Global
Namespace Eros.Saguna.Common.Library.ValidationEngine
Public Partial Class RuleValidationResult
Public Overridable Property RuleCode As String
Public Overridable Property Message As String
Public Overridable Property Key As String
Public Overridable Property Tag As String
Public Overridable Property ErrorCode As String
End Class
Public Partial Class ValidationErrorList
Public Overridable Property ValidationErrors As List(Of RuleValidationResult)
End Class
End Namespace
Namespace Eros.Saguna.Common.WebAPI.ServiceModel
Public Partial Class SubscriptionLinkContact
'''<Summary>
'''Guid of the contact object within Eros.
'''</Summary>
<ApiMember(DataType:="Guid", Description:="Guid of the contact object within Eros.", Name:="ContactId", ParameterType:="query")>
Public Overridable Property ContactId As Guid
'''<Summary>
'''The unique key that represents the contact on the external system.
'''</Summary>
<ApiMember(DataType:="string", Description:="The unique key that represents the contact on the external system.", IsRequired:=true, Name:="ContactAlternateKey", ParameterType:="query")>
Public Overridable Property ContactAlternateKey As String
'''<Summary>
'''Guid of the Role List Item object within Eros.
'''</Summary>
<ApiMember(DataType:="Guid", Description:="Guid of the Role List Item object within Eros.", IsRequired:=true, Name:="RoleId", ParameterType:="query")>
Public Overridable Property RoleId As Guid
'''<Summary>
'''The unique key that represents the role type on the external system. Note: Use of this is not currently implemented
'''</Summary>
<ApiMember(DataType:="string", Description:="The unique key that represents the role type on the external system. Note: Use of this is not currently implemented", Name:="RoleAlternateKey", ParameterType:="query")>
Public Overridable Property RoleAlternateKey As String
End Class
End Namespace
Namespace Eros.Subtle.Canvara.WebAPIModel.ServiceModelSubscription
'''<Summary>
'''Inserts or Updates a contact group and its contact connections.
'''</Summary>
<Api(Description:="Inserts or Updates a contact group and its contact connections.")>
Public Partial Class SaveContactGroup
Inherits ValidationErrorList
Implements ISubscription
'''<Summary>
'''Guid representing the external systems datasource information.
'''</Summary>
<ApiMember(DataType:="Guid", Description:="Guid representing the external systems datasource information.", IsRequired:=true, Name:="SuiteDataSourceInstanceId", ParameterType:="query")>
Public Overridable Property SuiteDataSourceInstanceId As Guid Implements ISubscription.SuiteDataSourceInstanceId
'''<Summary>
'''The unique key that represents the contact group on the external system.
'''</Summary>
<ApiMember(DataType:="string", Description:="The unique key that represents the contact group on the external system.", IsRequired:=true, Name:="AlternateKey", ParameterType:="query")>
Public Overridable Property AlternateKey As String Implements ISubscription.AlternateKey
'''<Summary>
'''Guid of the contact group object within Eros. If ObjectId is known, the external system may pass this insted of the alternate key.
'''</Summary>
<ApiMember(DataType:="Guid", Description:="Guid of the contact group object within Eros. If ObjectId is known, the external system may pass this insted of the alternate key.", Name:="ObjectId", ParameterType:="query")>
Public Overridable Property ObjectId As Guid Implements ISubscription.ObjectId
'''<Summary>
'''If set to true, the object will be updated/refreshed. If false, the hash representation of the ContactGroup model and its data will be compared with the current ContactGroup to determine if there are any changes to save.
'''</Summary>
<ApiMember(DataType:="bool", Description:="If set to true, the object will be updated/refreshed. If false, the hash representation of the ContactGroup model and its data will be compared with the current ContactGroup to determine if there are any changes to save.", Name:="IgnoreHash")>
Public Overridable Property IgnoreHash As Boolean
'''<Summary>
'''Object containing all details of the contact group to be inserted or updated.
'''</Summary>
<ApiMember(DataType:="SubscriptionContactGroupModel", Description:="Object containing all details of the contact group to be inserted or updated.", IsRequired:=true, Name:="ContactGroup", ParameterType:="query")>
Public Overridable Property ContactGroup As SubscriptionContactGroupModel
Public Overridable Property IgnoreValidation As Boolean Implements ISubscription.IgnoreValidation
Public Overridable Property LicenseeId As Guid
Public Overridable Property SessionId As Guid
End Class
Public Partial Class SubscriptionContactGroupConnectionModel
Inherits SubscriptionLinkContact
'''<Summary>
'''The order this contact is in priority. 1 would be the primary contact, 2 the secondary and so forth.
'''</Summary>
<ApiMember(DataType:="int", Description:="The order this contact is in priority. 1 would be the primary contact, 2 the secondary and so forth.", Name:="Index", ParameterType:="query")>
Public Overridable Property Index As Integer
'''<Summary>
'''Set this to be true if the contact connection to the group is to be deleted
'''</Summary>
<ApiMember(DataType:="bool", Description:="Set this to be true if the contact connection to the group is to be deleted", Name:="MarkAsDeleted", ParameterType:="query")>
Public Overridable Property MarkAsDeleted As Boolean
End Class
Public Partial Class SubscriptionContactGroupModel
'''<Summary>
'''A name for the contact group.
'''</Summary>
<ApiMember(DataType:="string", Description:="A name for the contact group.", IsRequired:=true, Name:="ContactGroupName", ParameterType:="query")>
Public Overridable Property ContactGroupName As String
'''<Summary>
'''Guid of the Role List Item object within Eros that defines the role of the group.
'''</Summary>
<ApiMember(DataType:="Guid", Description:="Guid of the Role List Item object within Eros that defines the role of the group.", IsRequired:=true, Name:="GroupRoleId", ParameterType:="query")>
Public Overridable Property GroupRoleId As Guid
'''<Summary>
'''The unique key that represents the role type of the group on the external system. Note: Use of this is not currently implemented
'''</Summary>
<ApiMember(DataType:="string", Description:="The unique key that represents the role type of the group on the external system. Note: Use of this is not currently implemented", Name:="RoleAlternateKey", ParameterType:="query")>
Public Overridable Property RoleAlternateKey As String
'''<Summary>
'''A list of ContactGroupConnection records that link contacts (and their role in the contact group) to the contact group.
'''</Summary>
<ApiMember(DataType:="List<SubscriptionContactGroupConnectionModel>", Description:="A list of ContactGroupConnection records that link contacts (and their role in the contact group) to the contact group.", Name:="ContactConnections", ParameterType:="query")>
Public Overridable Property ContactConnections As List(Of SubscriptionContactGroupConnectionModel)
'''<Summary>
'''Set this to be true if the contact group is to be deleted
'''</Summary>
<ApiMember(DataType:="bool", Description:="Set this to be true if the contact group is to be deleted", Name:="MarkAsDeleted", ParameterType:="query")>
Public Overridable Property MarkAsDeleted As Boolean
'''<Summary>
'''Set this to be true if the contact group is to be archived
'''</Summary>
<ApiMember(DataType:="bool", Description:="Set this to be true if the contact group is to be archived", Name:="MarkAsArchived", ParameterType:="query")>
Public Overridable Property MarkAsArchived As Boolean
'''<Summary>
'''Set this to be true if the contact group is to be restored
'''</Summary>
<ApiMember(DataType:="bool", Description:="Set this to be true if the contact group is to be restored", Name:="MarkAsRestored", ParameterType:="query")>
Public Overridable Property MarkAsRestored As Boolean
End Class
End Namespace
End Namespace
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /json/reply/SaveContactGroup HTTP/1.1
Host: production-eros-platform-apisubscription.azurewebsites.net
Accept: application/json
Content-Type: application/json
Content-Length: length
{"AlternateKey":"String","IgnoreHash":false,"ContactGroup":{"ContactGroupName":"String","RoleAlternateKey":"String","ContactConnections":[{"Index":0,"MarkAsDeleted":false,"ContactAlternateKey":"String","RoleAlternateKey":"String"}],"MarkAsDeleted":false,"MarkAsArchived":false,"MarkAsRestored":false},"IgnoreValidation":false,"ValidationErrors":[{"RuleCode":"String","Message":"String","Key":"String","Tag":"String","ErrorCode":"String"}]}
HTTP/1.1 200 OK Content-Type: application/json Content-Length: length {"ErrorCode":"String","Message":"String","StackTrace":"String","Errors":[{"ErrorCode":"String","FieldName":"String","Message":"String","Meta":{"String":"String"}}],"Meta":{"String":"String"}}