DigiOffice Gateway Web Services

<back to all web services

CreateOrUpdateEmailDraft

Requires Authentication
import Foundation
import ServiceStack

public class CreateOrUpdateEmailDraft : CreateDraftCorporateIdentityMail
{
    required public init(){ super.init() }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
    }
}

public class CreateDraftCorporateIdentityMail : Outlook365Properties
{
    public var registrationProfileID:String?
    public var values:[RegistrationValue] = []
    public var processes:[Process] = []
    public var documentUploadId:String?
    public var messageQueueId:String?
    public var replyEmailHtml:String?

    required public init(){ super.init() }

    private enum CodingKeys : String, CodingKey {
        case registrationProfileID
        case values
        case processes
        case documentUploadId
        case messageQueueId
        case replyEmailHtml
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        registrationProfileID = try container.decodeIfPresent(String.self, forKey: .registrationProfileID)
        values = try container.decodeIfPresent([RegistrationValue].self, forKey: .values) ?? []
        processes = try container.decodeIfPresent([Process].self, forKey: .processes) ?? []
        documentUploadId = try container.decodeIfPresent(String.self, forKey: .documentUploadId)
        messageQueueId = try container.decodeIfPresent(String.self, forKey: .messageQueueId)
        replyEmailHtml = try container.decodeIfPresent(String.self, forKey: .replyEmailHtml)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if registrationProfileID != nil { try container.encode(registrationProfileID, forKey: .registrationProfileID) }
        if values.count > 0 { try container.encode(values, forKey: .values) }
        if processes.count > 0 { try container.encode(processes, forKey: .processes) }
        if documentUploadId != nil { try container.encode(documentUploadId, forKey: .documentUploadId) }
        if messageQueueId != nil { try container.encode(messageQueueId, forKey: .messageQueueId) }
        if replyEmailHtml != nil { try container.encode(replyEmailHtml, forKey: .replyEmailHtml) }
    }
}

public class Outlook365Properties : Codable
{
    public var pidTag:String?
    public var itemId:String?
    public var ewsUrl:String?
    public var token:String?

    required public init(){}
}

public class RegistrationValue : Codable
{
    public var key:String?
    public var value:String?
    public var shadowValue:String?

    required public init(){}
}

public class Process : Codable
{
    public var id:Int?
    public var title:String?
    public var Description:String?
    public var note:String?
    public var coordinator:String?
    public var urgent:Bool?
    public var transitions:[Transition] = []

    required public init(){}
}

public class Transition : Codable
{
    public var id:String?
    public var reason:String?
    public var delayDate:Date?
    public var delayReason:String?
    public var userIDs:[Int] = []
    public var groupIDs:[Int] = []

    required public init(){}
}

public class CorporateIdentityMail : Codable
{
    public var documentId:String?
    public var emailHtml:String?
    public var isRegistered:Bool?
    public var documentNr:String?
    public var values:[RegistrationProfileFieldStateBase] = []
    public var registrationProfileID:String?
    public var registerAutomatically:Bool?

    required public init(){}
}

public class RegistrationProfileFieldStateBase : Codable
{
    public var documentFieldID:String?
    public var required:Bool?
    public var visible:Bool?
    public var readonly:Bool?

    required public init(){}
}


Swift CreateOrUpdateEmailDraft DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /jsv/reply/CreateOrUpdateEmailDraft HTTP/1.1 
Host: digiofficeapigateway.deltares.nl 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	Values: 
	[
		{
			Value: String,
			ShadowValue: String
		}
	],
	Processes: 
	[
		{
			ID: 0,
			Title: String,
			Description: String,
			Note: String,
			Coordinator: String,
			Urgent: False,
			Transitions: 
			[
				{
					Reason: String,
					DelayDate: 0001-01-01,
					DelayReason: String,
					UserIDs: 
					[
						0
					],
					GroupIDs: 
					[
						0
					]
				}
			]
		}
	],
	DocumentUploadId: String,
	MessageQueueId: String,
	ReplyEmailHtml: String,
	PidTag: String,
	ItemId: String,
	EwsUrl: String,
	Token: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	EmailHtml: String,
	IsRegistered: False,
	DocumentNr: String,
	Values: 
	[
		{
			Required: False,
			Visible: False,
			Readonly: False
		}
	],
	RegisterAutomatically: False
}