| Requires any of the roles: | bookingsupplier-administrator-write, superadmin |
| POST | /voss/usage/{Id}/termination | Create voss usage termination | Add 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 .csv suffix or ?format=csv
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: text/csv
Content-Type: text/csv
Content-Length: length
{"Id":"String","InvoiceLineTexts":["String"],"TerminationReasonComment":"String","Behaviour":"Full","CreditKind":"Normal"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length
{}