| Requires any of the roles: | bookingsupplier-administrator-write, superadmin |
| POST | /voss/usage | Add product to company invoicing | Add new product to company invoicing. Sends that product to VOSS System. |
|---|
import java.math.*
import java.util.*
import java.io.InputStream
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*
@ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
@ValidateRequest(Validator="IsAuthenticated")
open class CreateVossUsage
{
/**
* The company id
*/
@ApiMember(Description="The company id", IsRequired=true)
open var CompanyId:UUID? = null
/**
* Article number. Can be fetched from products
*/
@ApiMember(Description="Article number. Can be fetched from products", IsRequired=true)
open var ArticleNumber:String? = null
/**
* Example: developer worked 6 hours
*/
@ApiMember(Description="Example: developer worked 6 hours", IsRequired=true)
open var Quantity:Int? = null
}
@DataContract(Name="CreateSubscriptionProductGroupResult")
open class CreateSubscriptionProductGroupResult
{
@DataMember(Name="productGroupType", IsRequired=true)
@SerializedName("productGroupType")
open var ProductGroupType:ProductGroupTypeEnum? = null
@DataMember(Name="status", IsRequired=true)
@SerializedName("status")
open var Status:StatusEnum? = null
@DataMember(Name="id", IsRequired=true)
@SerializedName("id")
open var Id:UUID? = null
@DataMember(Name="name", IsRequired=true)
@SerializedName("name")
open var Name:String? = null
@DataMember(Name="products", EmitDefaultValue=false)
@SerializedName("products")
open var Products:ArrayList<SubscriptionProductGroupProductResultDto> = ArrayList<SubscriptionProductGroupProductResultDto>()
@DataMember(Name="termination")
@SerializedName("termination")
open var Termination:SubscriptionItemTerminationDto? = null
@DataMember(Name="created", IsRequired=true)
@SerializedName("created")
open var Created:Date? = null
@DataMember(Name="customerBalanceChange", IsRequired=true)
@SerializedName("customerBalanceChange")
open var CustomerBalanceChange:CustomerBalanceChangeDto? = null
}
enum class ProductGroupTypeEnum
{
Optional,
Included,
}
enum class StatusEnum
{
Active,
Terminated,
}
@DataContract(Name="SubscriptionProductGroupProductResultDto")
open class SubscriptionProductGroupProductResultDto
{
@DataMember(Name="id", IsRequired=true)
@SerializedName("id")
open var Id:UUID? = null
@DataMember(Name="name", IsRequired=true)
@SerializedName("name")
open var Name:String? = null
@DataMember(Name="externalId")
@SerializedName("externalId")
open var ExternalId:String? = null
@DataMember(Name="articleNumber", IsRequired=true)
@SerializedName("articleNumber")
open var ArticleNumber:String? = null
}
@DataContract(Name="SubscriptionItemTerminationDto")
open class SubscriptionItemTerminationDto
{
@DataMember(Name="type")
@SerializedName("type")
open var Type:TypeEnum? = null
@DataMember(Name="source", IsRequired=true)
@SerializedName("source")
open var Source:SourceEnum? = null
@DataMember(Name="scheduledDate", IsRequired=true)
@SerializedName("scheduledDate")
open var ScheduledDate:Date? = null
@DataMember(Name="reason")
@SerializedName("reason")
open var Reason:SubscriptionItemTerminationReasonDto? = null
@DataMember(Name="creditOptions", IsRequired=true)
@SerializedName("creditOptions")
open var CreditOptions:CreditOptionsDto? = null
}
enum class TypeEnum
{
AtSubscriptionBillingPeriodEnd,
AtBindingPeriodEnd,
Immediately,
}
enum class SourceEnum
{
Direct,
Plan,
CustomerExpiration,
Update,
Unpaid,
}
@DataContract(Name="SubscriptionItemTerminationReasonDto")
open class SubscriptionItemTerminationReasonDto
{
@DataMember(Name="reasonId", IsRequired=true)
@SerializedName("reasonId")
open var ReasonId:UUID? = null
@DataMember(Name="reasonName", IsRequired=true)
@SerializedName("reasonName")
open var ReasonName:String? = null
@DataMember(Name="reasonExternalId")
@SerializedName("reasonExternalId")
open var ReasonExternalId:String? = null
@DataMember(Name="subReasonId")
@SerializedName("subReasonId")
open var SubReasonId:UUID? = null
@DataMember(Name="subReasonName")
@SerializedName("subReasonName")
open var SubReasonName:String? = null
@DataMember(Name="subReasonExternalId")
@SerializedName("subReasonExternalId")
open var SubReasonExternalId:String? = null
@DataMember(Name="comment", IsRequired=true)
@SerializedName("comment")
open var Comment:String? = null
}
@DataContract(Name="CreditOptionsDto")
open class CreditOptionsDto
{
@DataMember(Name="behaviour", IsRequired=true)
@SerializedName("behaviour")
open var SubscriptionBehaviour:SubscriptionBehaviourEnum? = null
@DataMember(Name="creditKind", IsRequired=true)
@SerializedName("creditKind")
open var CreditKind:CreditKindEnum? = null
@DataMember(Name="prorateTimeAnchor")
@SerializedName("prorateTimeAnchor")
open var ProrateTimeAnchor:Date? = null
}
enum class SubscriptionBehaviourEnum
{
Prorate,
Full,
None,
}
enum class CreditKindEnum
{
Normal,
Internal,
}
@DataContract(Name="CustomerBalanceChangeDto")
open class CustomerBalanceChangeDto
{
@DataMember(Name="items", EmitDefaultValue=false)
@SerializedName("items")
open var Items:ArrayList<CustomerBalanceChangeItemDto> = ArrayList<CustomerBalanceChangeItemDto>()
@DataMember(Name="totalAmount", EmitDefaultValue=false)
@SerializedName("totalAmount")
open var TotalAmount:Double? = null
@DataMember(Name="totalDiscountAmount", EmitDefaultValue=false)
@SerializedName("totalDiscountAmount")
open var TotalDiscountAmount:Double? = null
}
@DataContract(Name="CustomerBalanceChangeItemDto")
open class CustomerBalanceChangeItemDto
{
@DataMember(Name="type", IsRequired=true)
@SerializedName("type")
open var ProductType:ProductTypeEnum? = null
@DataMember(Name="id", IsRequired=true)
@SerializedName("id")
open var Id:UUID? = null
@DataMember(Name="name", IsRequired=true)
@SerializedName("name")
open var Name:String? = null
@DataMember(Name="productGroupId", IsRequired=true)
@SerializedName("productGroupId")
open var ProductGroupId:UUID? = null
@DataMember(Name="productGroupName", IsRequired=true)
@SerializedName("productGroupName")
open var ProductGroupName:String? = null
@DataMember(Name="quantity", IsRequired=true)
@SerializedName("quantity")
open var Quantity:Double? = null
@DataMember(Name="amount", IsRequired=true)
@SerializedName("amount")
open var Amount:Double? = null
@DataMember(Name="discountAmount", IsRequired=true)
@SerializedName("discountAmount")
open var DiscountAmount:Double? = null
@DataMember(Name="totalAmount", EmitDefaultValue=false)
@SerializedName("totalAmount")
open var TotalAmount:Double? = null
@DataMember(Name="invoiceRecipientCustomerId", IsRequired=true)
@SerializedName("invoiceRecipientCustomerId")
open var InvoiceRecipientCustomerId:UUID? = null
}
enum class ProductTypeEnum
{
Main,
Addon,
License,
Usage,
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /voss/usage HTTP/1.1
Host: api.bokamera.se
Accept: text/jsonl
Content-Type: text/jsonl
Content-Length: length
{"ArticleNumber":"String","Quantity":0}
HTTP/1.1 200 OK
Content-Type: text/jsonl
Content-Length: length
{"productGroupType":"Optional","status":"Active","name":"String","products":[{}]}