BokaMera.API.Host

<back to all web services

UpdateEaccountingCustomer

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
PUT/eaccounting/customersUpdate E-Accounting Customer
import Foundation
import ServiceStack

// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
public class UpdateEaccountingCustomer : ICompany, Codable
{
    /**
    * Customer Id in e-accounting.
    */
    // @ApiMember(Description="Customer Id in e-accounting.", IsRequired=true)
    public var id:String

    /**
    * 
    */
    // @ApiMember(Description="")
    public var invoiceCity:String

    /**
    * Max length: 10 characters
    */
    // @ApiMember(Description="Max length: 10 characters")
    public var invoicePostalCode:String

    /**
    * Max length: 50 characters
    */
    // @ApiMember(Description="Max length: 50 characters")
    public var name:String

    /**
    * 
    */
    // @ApiMember(Description="")
    public var termsOfPaymentId:String

    /**
    * 
    */
    // @ApiMember(Description="")
    public var isPrivatePerson:Bool

    /**
    * 
    */
    // @ApiMember(Description="")
    public var isActive:Bool

    /**
    * 
    */
    // @ApiMember(Description="")
    public var telephone:String

    /**
    * 
    */
    // @ApiMember(Description="")
    public var emailAddress:String

    /**
    * 
    */
    // @ApiMember(Description="")
    public var mobilePhone:String

    /**
    * The company id, if empty will use the company id for the user you are logged in with.
    */
    // @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.")
    public var companyId:String?

    required public init(){}
}

public class EAccountingCustomerResponse : CreateEAccountingCustomer
{
    public var id:String

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

    private enum CodingKeys : String, CodingKey {
        case id
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        id = try container.decodeIfPresent(String.self, forKey: .id)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if id != nil { try container.encode(id, forKey: .id) }
    }
}

public class CreateEAccountingCustomer : InvoiceAddress
{
    public var customerNumber:String
    public var contactPersonEmail:String
    public var contactPersonMobile:String
    public var contactPersonName:String
    public var contactPersonPhone:String
    public var currencyCode:String
    public var gln:String
    public var emailAddress:String
    public var emailAddressOrder:String
    public var emailAddressQuote:String
    public var deliveryCustomerName:String
    public var deliveryAddress1:String
    public var deliveryAddress2:String
    public var deliveryCity:String
    public var deliveryCountryCode:String
    public var deliveryPostalCode:String
    public var deliveryMethodId:String
    public var deliveryTermId:String
    public var payToAccountId:String
    public var name:String
    public var note:String
    public var reverseChargeOnConstructionServices:Bool
    public var webshopCustomerNumber:Int?
    public var mobilePhone:String
    public var telephone:String
    public var termsOfPaymentId:String
    public var eAccountingTermsOfPayment:EAccountingTermsOfPayment
    public var vatNumber:String
    public var wwwAddress:String
    public var lastInvoiceDate:String
    public var isPrivatePerson:Bool
    public var isNorthernIreland:Bool
    public var discountPercentage:Double
    public var changedUtc:Date?
    public var isActive:Bool
    public var forceBookkeepVat:Bool
    public var ediGlnNumber:String
    public var salesDocumentLanguage:String
    public var electronicAddress:String
    public var electronicReference:String
    public var ediServiceDelivererId:String
    public var autoInvoiceActivationEmailSentDate:Date?
    public var autoInvoiceRegistrationRequestSentDate:Date?
    public var emailAddresses:[String] = []
    public var customerLabels:[CustomerLabel] = []
    public var messageThreads:[String] = []
    public var notes:[String] = []
    public var isFutureInvoiceDateAllowed:Bool
    public var deliveryBasedVat:Bool
    public var salesPriceListId:String
    public var iban:String
    public var directDebitCustomerSettings:DirectDebitCustomerSettings
    public var discountAgreementId:String
    public var unpaidInvoicesAmount:Double

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

    private enum CodingKeys : String, CodingKey {
        case customerNumber
        case contactPersonEmail
        case contactPersonMobile
        case contactPersonName
        case contactPersonPhone
        case currencyCode
        case gln
        case emailAddress
        case emailAddressOrder
        case emailAddressQuote
        case deliveryCustomerName
        case deliveryAddress1
        case deliveryAddress2
        case deliveryCity
        case deliveryCountryCode
        case deliveryPostalCode
        case deliveryMethodId
        case deliveryTermId
        case payToAccountId
        case name
        case note
        case reverseChargeOnConstructionServices
        case webshopCustomerNumber
        case mobilePhone
        case telephone
        case termsOfPaymentId
        case eAccountingTermsOfPayment
        case vatNumber
        case wwwAddress
        case lastInvoiceDate
        case isPrivatePerson
        case isNorthernIreland
        case discountPercentage
        case changedUtc
        case isActive
        case forceBookkeepVat
        case ediGlnNumber
        case salesDocumentLanguage
        case electronicAddress
        case electronicReference
        case ediServiceDelivererId
        case autoInvoiceActivationEmailSentDate
        case autoInvoiceRegistrationRequestSentDate
        case emailAddresses
        case customerLabels
        case messageThreads
        case notes
        case isFutureInvoiceDateAllowed
        case deliveryBasedVat
        case salesPriceListId
        case iban
        case directDebitCustomerSettings
        case discountAgreementId
        case unpaidInvoicesAmount
    }

    required public init(from decoder: Decoder) throws {
        try super.init(from: decoder)
        let container = try decoder.container(keyedBy: CodingKeys.self)
        customerNumber = try container.decodeIfPresent(String.self, forKey: .customerNumber)
        contactPersonEmail = try container.decodeIfPresent(String.self, forKey: .contactPersonEmail)
        contactPersonMobile = try container.decodeIfPresent(String.self, forKey: .contactPersonMobile)
        contactPersonName = try container.decodeIfPresent(String.self, forKey: .contactPersonName)
        contactPersonPhone = try container.decodeIfPresent(String.self, forKey: .contactPersonPhone)
        currencyCode = try container.decodeIfPresent(String.self, forKey: .currencyCode)
        gln = try container.decodeIfPresent(String.self, forKey: .gln)
        emailAddress = try container.decodeIfPresent(String.self, forKey: .emailAddress)
        emailAddressOrder = try container.decodeIfPresent(String.self, forKey: .emailAddressOrder)
        emailAddressQuote = try container.decodeIfPresent(String.self, forKey: .emailAddressQuote)
        deliveryCustomerName = try container.decodeIfPresent(String.self, forKey: .deliveryCustomerName)
        deliveryAddress1 = try container.decodeIfPresent(String.self, forKey: .deliveryAddress1)
        deliveryAddress2 = try container.decodeIfPresent(String.self, forKey: .deliveryAddress2)
        deliveryCity = try container.decodeIfPresent(String.self, forKey: .deliveryCity)
        deliveryCountryCode = try container.decodeIfPresent(String.self, forKey: .deliveryCountryCode)
        deliveryPostalCode = try container.decodeIfPresent(String.self, forKey: .deliveryPostalCode)
        deliveryMethodId = try container.decodeIfPresent(String.self, forKey: .deliveryMethodId)
        deliveryTermId = try container.decodeIfPresent(String.self, forKey: .deliveryTermId)
        payToAccountId = try container.decodeIfPresent(String.self, forKey: .payToAccountId)
        name = try container.decodeIfPresent(String.self, forKey: .name)
        note = try container.decodeIfPresent(String.self, forKey: .note)
        reverseChargeOnConstructionServices = try container.decodeIfPresent(Bool.self, forKey: .reverseChargeOnConstructionServices)
        webshopCustomerNumber = try container.decodeIfPresent(Int.self, forKey: .webshopCustomerNumber)
        mobilePhone = try container.decodeIfPresent(String.self, forKey: .mobilePhone)
        telephone = try container.decodeIfPresent(String.self, forKey: .telephone)
        termsOfPaymentId = try container.decodeIfPresent(String.self, forKey: .termsOfPaymentId)
        eAccountingTermsOfPayment = try container.decodeIfPresent(EAccountingTermsOfPayment.self, forKey: .eAccountingTermsOfPayment)
        vatNumber = try container.decodeIfPresent(String.self, forKey: .vatNumber)
        wwwAddress = try container.decodeIfPresent(String.self, forKey: .wwwAddress)
        lastInvoiceDate = try container.decodeIfPresent(String.self, forKey: .lastInvoiceDate)
        isPrivatePerson = try container.decodeIfPresent(Bool.self, forKey: .isPrivatePerson)
        isNorthernIreland = try container.decodeIfPresent(Bool.self, forKey: .isNorthernIreland)
        discountPercentage = try container.decodeIfPresent(Double.self, forKey: .discountPercentage)
        changedUtc = try container.decodeIfPresent(Date.self, forKey: .changedUtc)
        isActive = try container.decodeIfPresent(Bool.self, forKey: .isActive)
        forceBookkeepVat = try container.decodeIfPresent(Bool.self, forKey: .forceBookkeepVat)
        ediGlnNumber = try container.decodeIfPresent(String.self, forKey: .ediGlnNumber)
        salesDocumentLanguage = try container.decodeIfPresent(String.self, forKey: .salesDocumentLanguage)
        electronicAddress = try container.decodeIfPresent(String.self, forKey: .electronicAddress)
        electronicReference = try container.decodeIfPresent(String.self, forKey: .electronicReference)
        ediServiceDelivererId = try container.decodeIfPresent(String.self, forKey: .ediServiceDelivererId)
        autoInvoiceActivationEmailSentDate = try container.decodeIfPresent(Date.self, forKey: .autoInvoiceActivationEmailSentDate)
        autoInvoiceRegistrationRequestSentDate = try container.decodeIfPresent(Date.self, forKey: .autoInvoiceRegistrationRequestSentDate)
        emailAddresses = try container.decodeIfPresent([String].self, forKey: .emailAddresses) ?? []
        customerLabels = try container.decodeIfPresent([CustomerLabel].self, forKey: .customerLabels) ?? []
        messageThreads = try container.decodeIfPresent([String].self, forKey: .messageThreads) ?? []
        notes = try container.decodeIfPresent([String].self, forKey: .notes) ?? []
        isFutureInvoiceDateAllowed = try container.decodeIfPresent(Bool.self, forKey: .isFutureInvoiceDateAllowed)
        deliveryBasedVat = try container.decodeIfPresent(Bool.self, forKey: .deliveryBasedVat)
        salesPriceListId = try container.decodeIfPresent(String.self, forKey: .salesPriceListId)
        iban = try container.decodeIfPresent(String.self, forKey: .iban)
        directDebitCustomerSettings = try container.decodeIfPresent(DirectDebitCustomerSettings.self, forKey: .directDebitCustomerSettings)
        discountAgreementId = try container.decodeIfPresent(String.self, forKey: .discountAgreementId)
        unpaidInvoicesAmount = try container.decodeIfPresent(Double.self, forKey: .unpaidInvoicesAmount)
    }

    public override func encode(to encoder: Encoder) throws {
        try super.encode(to: encoder)
        var container = encoder.container(keyedBy: CodingKeys.self)
        if customerNumber != nil { try container.encode(customerNumber, forKey: .customerNumber) }
        if contactPersonEmail != nil { try container.encode(contactPersonEmail, forKey: .contactPersonEmail) }
        if contactPersonMobile != nil { try container.encode(contactPersonMobile, forKey: .contactPersonMobile) }
        if contactPersonName != nil { try container.encode(contactPersonName, forKey: .contactPersonName) }
        if contactPersonPhone != nil { try container.encode(contactPersonPhone, forKey: .contactPersonPhone) }
        if currencyCode != nil { try container.encode(currencyCode, forKey: .currencyCode) }
        if gln != nil { try container.encode(gln, forKey: .gln) }
        if emailAddress != nil { try container.encode(emailAddress, forKey: .emailAddress) }
        if emailAddressOrder != nil { try container.encode(emailAddressOrder, forKey: .emailAddressOrder) }
        if emailAddressQuote != nil { try container.encode(emailAddressQuote, forKey: .emailAddressQuote) }
        if deliveryCustomerName != nil { try container.encode(deliveryCustomerName, forKey: .deliveryCustomerName) }
        if deliveryAddress1 != nil { try container.encode(deliveryAddress1, forKey: .deliveryAddress1) }
        if deliveryAddress2 != nil { try container.encode(deliveryAddress2, forKey: .deliveryAddress2) }
        if deliveryCity != nil { try container.encode(deliveryCity, forKey: .deliveryCity) }
        if deliveryCountryCode != nil { try container.encode(deliveryCountryCode, forKey: .deliveryCountryCode) }
        if deliveryPostalCode != nil { try container.encode(deliveryPostalCode, forKey: .deliveryPostalCode) }
        if deliveryMethodId != nil { try container.encode(deliveryMethodId, forKey: .deliveryMethodId) }
        if deliveryTermId != nil { try container.encode(deliveryTermId, forKey: .deliveryTermId) }
        if payToAccountId != nil { try container.encode(payToAccountId, forKey: .payToAccountId) }
        if name != nil { try container.encode(name, forKey: .name) }
        if note != nil { try container.encode(note, forKey: .note) }
        if reverseChargeOnConstructionServices != nil { try container.encode(reverseChargeOnConstructionServices, forKey: .reverseChargeOnConstructionServices) }
        if webshopCustomerNumber != nil { try container.encode(webshopCustomerNumber, forKey: .webshopCustomerNumber) }
        if mobilePhone != nil { try container.encode(mobilePhone, forKey: .mobilePhone) }
        if telephone != nil { try container.encode(telephone, forKey: .telephone) }
        if termsOfPaymentId != nil { try container.encode(termsOfPaymentId, forKey: .termsOfPaymentId) }
        if eAccountingTermsOfPayment != nil { try container.encode(eAccountingTermsOfPayment, forKey: .eAccountingTermsOfPayment) }
        if vatNumber != nil { try container.encode(vatNumber, forKey: .vatNumber) }
        if wwwAddress != nil { try container.encode(wwwAddress, forKey: .wwwAddress) }
        if lastInvoiceDate != nil { try container.encode(lastInvoiceDate, forKey: .lastInvoiceDate) }
        if isPrivatePerson != nil { try container.encode(isPrivatePerson, forKey: .isPrivatePerson) }
        if isNorthernIreland != nil { try container.encode(isNorthernIreland, forKey: .isNorthernIreland) }
        if discountPercentage != nil { try container.encode(discountPercentage, forKey: .discountPercentage) }
        if changedUtc != nil { try container.encode(changedUtc, forKey: .changedUtc) }
        if isActive != nil { try container.encode(isActive, forKey: .isActive) }
        if forceBookkeepVat != nil { try container.encode(forceBookkeepVat, forKey: .forceBookkeepVat) }
        if ediGlnNumber != nil { try container.encode(ediGlnNumber, forKey: .ediGlnNumber) }
        if salesDocumentLanguage != nil { try container.encode(salesDocumentLanguage, forKey: .salesDocumentLanguage) }
        if electronicAddress != nil { try container.encode(electronicAddress, forKey: .electronicAddress) }
        if electronicReference != nil { try container.encode(electronicReference, forKey: .electronicReference) }
        if ediServiceDelivererId != nil { try container.encode(ediServiceDelivererId, forKey: .ediServiceDelivererId) }
        if autoInvoiceActivationEmailSentDate != nil { try container.encode(autoInvoiceActivationEmailSentDate, forKey: .autoInvoiceActivationEmailSentDate) }
        if autoInvoiceRegistrationRequestSentDate != nil { try container.encode(autoInvoiceRegistrationRequestSentDate, forKey: .autoInvoiceRegistrationRequestSentDate) }
        if emailAddresses.count > 0 { try container.encode(emailAddresses, forKey: .emailAddresses) }
        if customerLabels.count > 0 { try container.encode(customerLabels, forKey: .customerLabels) }
        if messageThreads.count > 0 { try container.encode(messageThreads, forKey: .messageThreads) }
        if notes.count > 0 { try container.encode(notes, forKey: .notes) }
        if isFutureInvoiceDateAllowed != nil { try container.encode(isFutureInvoiceDateAllowed, forKey: .isFutureInvoiceDateAllowed) }
        if deliveryBasedVat != nil { try container.encode(deliveryBasedVat, forKey: .deliveryBasedVat) }
        if salesPriceListId != nil { try container.encode(salesPriceListId, forKey: .salesPriceListId) }
        if iban != nil { try container.encode(iban, forKey: .iban) }
        if directDebitCustomerSettings != nil { try container.encode(directDebitCustomerSettings, forKey: .directDebitCustomerSettings) }
        if discountAgreementId != nil { try container.encode(discountAgreementId, forKey: .discountAgreementId) }
        if unpaidInvoicesAmount != nil { try container.encode(unpaidInvoicesAmount, forKey: .unpaidInvoicesAmount) }
    }
}

public class InvoiceAddress : Codable
{
    public var corporateIdentityNumber:String
    public var invoiceAddress1:String
    public var invoiceAddress2:String
    public var invoiceCity:String
    public var invoicePostalCode:String
    public var invoiceCountryCode:String

    required public init(){}
}

public class EAccountingTermsOfPayment : Codable
{
    public var id:String
    public var name:String
    public var nameEnglish:String
    public var numberOfDays:Int
    public var termsOfPaymentTypeId:Int
    public var termsOfPaymentTypeText:String
    public var availableForSales:Bool
    public var availableForPurchase:Bool

    required public init(){}
}

public class CustomerLabel : Codable
{
    public var id:String
    public var name:String
    public var Description:String

    required public init(){}
}

public class DirectDebitCustomerSettings : Codable
{
    public var mandateId:String
    public var mandateType:Int
    public var sequenceType:Int
    public var signingDate:Date
    public var endDate:Date
    public var latestDirectDebit:Date

    required public init(){}
}


Swift UpdateEaccountingCustomer DTOs

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

HTTP + CSV

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

PUT /eaccounting/customers HTTP/1.1 
Host: api.bokamera.se 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"Id":"String","InvoiceCity":"String","InvoicePostalCode":"String","Name":"String","TermsOfPaymentId":"String","IsPrivatePerson":false,"IsActive":false,"Telephone":"String","EmailAddress":"String","MobilePhone":"String","CompanyId":"00000000-0000-0000-0000-000000000000"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"Id":"String","CustomerNumber":"String","ContactPersonEmail":"String","ContactPersonMobile":"String","ContactPersonName":"String","ContactPersonPhone":"String","CurrencyCode":"String","GLN":"String","EmailAddress":"String","EmailAddressOrder":"String","EmailAddressQuote":"String","DeliveryCustomerName":"String","DeliveryAddress1":"String","DeliveryAddress2":"String","DeliveryCity":"String","DeliveryCountryCode":"String","DeliveryPostalCode":"String","DeliveryMethodId":"String","DeliveryTermId":"String","PayToAccountId":"String","Name":"String","Note":"String","ReverseChargeOnConstructionServices":false,"WebshopCustomerNumber":0,"MobilePhone":"String","Telephone":"String","TermsOfPaymentId":"String","EAccountingTermsOfPayment":{"Id":"String","Name":"String","NameEnglish":"String","NumberOfDays":0,"TermsOfPaymentTypeId":0,"TermsOfPaymentTypeText":"String","AvailableForSales":false,"AvailableForPurchase":false},"VatNumber":"String","WwwAddress":"String","LastInvoiceDate":"String","IsPrivatePerson":false,"IsNorthernIreland":false,"DiscountPercentage":0,"ChangedUtc":"0001-01-01T00:00:00","IsActive":false,"ForceBookkeepVat":false,"EdiGlnNumber":"String","SalesDocumentLanguage":"String","ElectronicAddress":"String","ElectronicReference":"String","EdiServiceDelivererId":"String","AutoInvoiceActivationEmailSentDate":"0001-01-01T00:00:00","AutoInvoiceRegistrationRequestSentDate":"0001-01-01T00:00:00","EmailAddresses":["String"],"CustomerLabels":[{"Id":"String","Name":"String","Description":"String"}],"MessageThreads":["String"],"Notes":["String"],"IsFutureInvoiceDateAllowed":false,"DeliveryBasedVat":false,"SalesPriceListId":"String","Iban":"String","DirectDebitCustomerSettings":{"MandateId":"String","MandateType":0,"SequenceType":0},"DiscountAgreementId":"String","UnpaidInvoicesAmount":0,"CorporateIdentityNumber":"String","InvoiceAddress1":"String","InvoiceAddress2":"String","InvoiceCity":"String","InvoicePostalCode":"String","InvoiceCountryCode":"String"}