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 .xml suffix or ?format=xml

HTTP + XML

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/xml
Content-Type: application/xml
Content-Length: length

<CreateVossUsageTermination xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.API.ServiceModel.Dtos">
  <Behaviour>Full</Behaviour>
  <CompanyId>00000000-0000-0000-0000-000000000000</CompanyId>
  <CreditKind>Normal</CreditKind>
  <Id>String</Id>
  <InvoiceLineTexts xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <d2p1:string>String</d2p1:string>
  </InvoiceLineTexts>
  <TerminationReasonComment>String</TerminationReasonComment>
  <TerminationReasonId>00000000-0000-0000-0000-000000000000</TerminationReasonId>
</CreateVossUsageTermination>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<CreateUsageTerminationResult xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/BokaMera.VossIntegration.ApiTools.Model">
  <creditOptions i:nil="true" />
  <customerBalanceChange i:nil="true" />
  <reason i:nil="true" />
  <scheduledDate>0001-01-01T00:00:00</scheduledDate>
</CreateUsageTerminationResult>