BokaMera.API.Host

<back to all web services

CreateVossUsageTermination

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
POST/voss/usage/{Id}/terminationCreate voss usage terminationAdd new product to company invoicing. Sends that product to VOSS System.
import Foundation
import ServiceStack

// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
public class CreateVossUsageTermination : Codable
{
    /**
    * The company id
    */
    // @ApiMember(Description="The company id", IsRequired=true)
    public var companyId:String

    /**
    * Usage Id
    */
    // @ApiMember(Description="Usage Id", IsRequired=true)
    public var id:String

    public var invoiceLineTexts:[String] = []
    public var terminationReasonComment:String
    public var terminationReasonId:String
    /**
    * Credit behaviour:  <br /> 1. Full - usage will be credited in full  <br /> 2. None - no credit will be created
    */
    // @ApiMember(Description="Credit behaviour:  <br /> 1. Full - usage will be credited in full  <br /> 2. None - no credit will be created", IsRequired=true)
    public var behaviour:UsageBehaviourEnum

    /**
    * Credit kind:  <br /> 1. Normal - default credit type  <br /> 2. Internal - corresponding credit will be marked as internal in invoice file line
    */
    // @ApiMember(Description="Credit kind:  <br /> 1. Normal - default credit type  <br /> 2. Internal - corresponding credit will be marked as internal in invoice file line", IsRequired=true)
    public var creditKind:CreditKindEnum

    required public init(){}
}

public enum UsageBehaviourEnum : String, Codable
{
    case Full
    case None
}

public enum CreditKindEnum : String, Codable
{
    case Normal
    case Internal
}

// @DataContract(Name="CreateUsageTerminationResult")
public class CreateUsageTerminationResult : Codable
{
    // @DataMember(Name="scheduledDate", IsRequired=true)
    public var scheduledDate:Date

    // @DataMember(Name="reason")
    public var reason:SubscriptionItemTerminationReasonDto

    // @DataMember(Name="creditOptions", IsRequired=true)
    public var creditOptions:UsageCreditOptionsDto

    // @DataMember(Name="customerBalanceChange", IsRequired=true)
    public var customerBalanceChange:CustomerBalanceChangeDto

    required public init(){}
}

// @DataContract(Name="SubscriptionItemTerminationReasonDto")
public class SubscriptionItemTerminationReasonDto : Codable
{
    // @DataMember(Name="reasonId", IsRequired=true)
    public var reasonId:String

    // @DataMember(Name="reasonName", IsRequired=true)
    public var reasonName:String

    // @DataMember(Name="reasonExternalId")
    public var reasonExternalId:String

    // @DataMember(Name="subReasonId")
    public var subReasonId:String?

    // @DataMember(Name="subReasonName")
    public var subReasonName:String

    // @DataMember(Name="subReasonExternalId")
    public var subReasonExternalId:String

    // @DataMember(Name="comment", IsRequired=true)
    public var comment:String

    required public init(){}
}

// @DataContract(Name="UsageCreditOptionsDto")
public class UsageCreditOptionsDto : Codable
{
    // @DataMember(Name="behaviour", IsRequired=true)
    public var behaviour:UsageBehaviourEnum

    // @DataMember(Name="creditKind", IsRequired=true)
    public var creditKind:CreditKindEnum

    required public init(){}
}

// @DataContract(Name="CustomerBalanceChangeDto")
public class CustomerBalanceChangeDto : Codable
{
    // @DataMember(Name="items", EmitDefaultValue=false)
    public var items:[CustomerBalanceChangeItemDto] = []

    // @DataMember(Name="totalAmount", EmitDefaultValue=false)
    public var totalAmount:Double

    // @DataMember(Name="totalDiscountAmount", EmitDefaultValue=false)
    public var totalDiscountAmount:Double

    required public init(){}
}

// @DataContract(Name="CustomerBalanceChangeItemDto")
public class CustomerBalanceChangeItemDto : Codable
{
    // @DataMember(Name="type", IsRequired=true)
    public var type:ProductTypeEnum

    // @DataMember(Name="id", IsRequired=true)
    public var id:String

    // @DataMember(Name="name", IsRequired=true)
    public var name:String

    // @DataMember(Name="productGroupId", IsRequired=true)
    public var productGroupId:String

    // @DataMember(Name="productGroupName", IsRequired=true)
    public var productGroupName:String

    // @DataMember(Name="quantity", IsRequired=true)
    public var quantity:Double

    // @DataMember(Name="amount", IsRequired=true)
    public var amount:Double

    // @DataMember(Name="discountAmount", IsRequired=true)
    public var discountAmount:Double

    // @DataMember(Name="totalAmount", EmitDefaultValue=false)
    public var totalAmount:Double

    // @DataMember(Name="invoiceRecipientCustomerId", IsRequired=true)
    public var invoiceRecipientCustomerId:String

    required public init(){}
}

public enum ProductTypeEnum : String, Codable
{
    case Main
    case Addon
    case License
    case Usage
}


Swift CreateVossUsageTermination DTOs

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

HTTP + JSON

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

POST /voss/usage/{Id}/termination HTTP/1.1 
Host: api.bokamera.se 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"Id":"String","InvoiceLineTexts":["String"],"TerminationReasonComment":"String","Behaviour":"Full","CreditKind":"Normal"}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{}