| 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. |
|---|
Imports System
Imports System.IO
Imports System.Collections
Imports System.Collections.Generic
Imports System.Runtime.Serialization
Imports ServiceStack
Imports ServiceStack.DataAnnotations
Imports BokaMera.API.ServiceModel.Dtos
Imports BokaMera.VossIntegration.ApiTools.Model
Imports BokaMera.VossIntegration.ApiTools.Enums
Namespace Global
Namespace BokaMera.API.ServiceModel.Dtos
<ApiResponse(Description:="You were unauthorized to call this service", StatusCode:=401)>
<ValidateRequest(Validator:="IsAuthenticated")>
Public Partial Class CreateVossUsage
'''<Summary>
'''The company id
'''</Summary>
<ApiMember(Description:="The company id", IsRequired:=true)>
Public Overridable Property CompanyId As Guid
'''<Summary>
'''Article number. Can be fetched from products
'''</Summary>
<ApiMember(Description:="Article number. Can be fetched from products", IsRequired:=true)>
Public Overridable Property ArticleNumber As String
'''<Summary>
'''Example: developer worked 6 hours
'''</Summary>
<ApiMember(Description:="Example: developer worked 6 hours", IsRequired:=true)>
Public Overridable Property Quantity As Integer
End Class
End Namespace
Namespace BokaMera.VossIntegration.ApiTools.Enums
Public Enum CreditKindEnum
Normal
Internal
End Enum
Public Enum ProductGroupTypeEnum
[Optional]
Included
End Enum
Public Enum ProductTypeEnum
Main
Addon
License
Usage
End Enum
Public Enum SubscriptionBehaviourEnum
Prorate
Full
None
End Enum
End Namespace
Namespace BokaMera.VossIntegration.ApiTools.Model
<DataContract(Name:="CreateSubscriptionProductGroupResult")>
Public Partial Class CreateSubscriptionProductGroupResult
<DataMember(Name:="productGroupType", IsRequired:=true)>
Public Overridable Property ProductGroupType As ProductGroupTypeEnum
<DataMember(Name:="status", IsRequired:=true)>
Public Overridable Property Status As StatusEnum
<DataMember(Name:="id", IsRequired:=true)>
Public Overridable Property Id As Guid
<DataMember(Name:="name", IsRequired:=true)>
Public Overridable Property Name As String
<DataMember(Name:="products", EmitDefaultValue:=false)>
Public Overridable Property Products As List(Of SubscriptionProductGroupProductResultDto) = New List(Of SubscriptionProductGroupProductResultDto)
<DataMember(Name:="termination")>
Public Overridable Property Termination As SubscriptionItemTerminationDto
<DataMember(Name:="created", IsRequired:=true)>
Public Overridable Property Created As Date
<DataMember(Name:="customerBalanceChange", IsRequired:=true)>
Public Overridable Property CustomerBalanceChange As CustomerBalanceChangeDto
Public Enum StatusEnum
Active
Terminated
End Enum
End Class
<DataContract(Name:="CreditOptionsDto")>
Public Partial Class CreditOptionsDto
<DataMember(Name:="behaviour", IsRequired:=true)>
Public Overridable Property SubscriptionBehaviour As SubscriptionBehaviourEnum
<DataMember(Name:="creditKind", IsRequired:=true)>
Public Overridable Property CreditKind As CreditKindEnum
<DataMember(Name:="prorateTimeAnchor")>
Public Overridable Property ProrateTimeAnchor As Date?
End Class
<DataContract(Name:="CustomerBalanceChangeDto")>
Public Partial Class CustomerBalanceChangeDto
<DataMember(Name:="items", EmitDefaultValue:=false)>
Public Overridable Property Items As List(Of CustomerBalanceChangeItemDto) = New List(Of CustomerBalanceChangeItemDto)
<DataMember(Name:="totalAmount", EmitDefaultValue:=false)>
Public Overridable Property TotalAmount As Double
<DataMember(Name:="totalDiscountAmount", EmitDefaultValue:=false)>
Public Overridable Property TotalDiscountAmount As Double
End Class
<DataContract(Name:="CustomerBalanceChangeItemDto")>
Public Partial Class CustomerBalanceChangeItemDto
<DataMember(Name:="type", IsRequired:=true)>
Public Overridable Property ProductType As ProductTypeEnum
<DataMember(Name:="id", IsRequired:=true)>
Public Overridable Property Id As Guid
<DataMember(Name:="name", IsRequired:=true)>
Public Overridable Property Name As String
<DataMember(Name:="productGroupId", IsRequired:=true)>
Public Overridable Property ProductGroupId As Guid
<DataMember(Name:="productGroupName", IsRequired:=true)>
Public Overridable Property ProductGroupName As String
<DataMember(Name:="quantity", IsRequired:=true)>
Public Overridable Property Quantity As Double
<DataMember(Name:="amount", IsRequired:=true)>
Public Overridable Property Amount As Double
<DataMember(Name:="discountAmount", IsRequired:=true)>
Public Overridable Property DiscountAmount As Double
<DataMember(Name:="totalAmount", EmitDefaultValue:=false)>
Public Overridable Property TotalAmount As Double
<DataMember(Name:="invoiceRecipientCustomerId", IsRequired:=true)>
Public Overridable Property InvoiceRecipientCustomerId As Guid
End Class
<DataContract(Name:="SubscriptionItemTerminationDto")>
Public Partial Class SubscriptionItemTerminationDto
<DataMember(Name:="type")>
Public Overridable Property Type As TypeEnum
<DataMember(Name:="source", IsRequired:=true)>
Public Overridable Property Source As SourceEnum
<DataMember(Name:="scheduledDate", IsRequired:=true)>
Public Overridable Property ScheduledDate As Date
<DataMember(Name:="reason")>
Public Overridable Property Reason As SubscriptionItemTerminationReasonDto
<DataMember(Name:="creditOptions", IsRequired:=true)>
Public Overridable Property CreditOptions As CreditOptionsDto
Public Enum TypeEnum
AtSubscriptionBillingPeriodEnd
AtBindingPeriodEnd
Immediately
End Enum
Public Enum SourceEnum
Direct
Plan
CustomerExpiration
Update
Unpaid
End Enum
End Class
<DataContract(Name:="SubscriptionItemTerminationReasonDto")>
Public Partial Class SubscriptionItemTerminationReasonDto
<DataMember(Name:="reasonId", IsRequired:=true)>
Public Overridable Property ReasonId As Guid
<DataMember(Name:="reasonName", IsRequired:=true)>
Public Overridable Property ReasonName As String
<DataMember(Name:="reasonExternalId")>
Public Overridable Property ReasonExternalId As String
<DataMember(Name:="subReasonId")>
Public Overridable Property SubReasonId As Guid?
<DataMember(Name:="subReasonName")>
Public Overridable Property SubReasonName As String
<DataMember(Name:="subReasonExternalId")>
Public Overridable Property SubReasonExternalId As String
<DataMember(Name:="comment", IsRequired:=true)>
Public Overridable Property Comment As String
End Class
<DataContract(Name:="SubscriptionProductGroupProductResultDto")>
Public Partial Class SubscriptionProductGroupProductResultDto
<DataMember(Name:="id", IsRequired:=true)>
Public Overridable Property Id As Guid
<DataMember(Name:="name", IsRequired:=true)>
Public Overridable Property Name As String
<DataMember(Name:="externalId")>
Public Overridable Property ExternalId As String
<DataMember(Name:="articleNumber", IsRequired:=true)>
Public Overridable Property ArticleNumber As String
End Class
End Namespace
End Namespace
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
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/jsv
Content-Type: text/jsv
Content-Length: length
{
ArticleNumber: String,
Quantity: 0
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
productGroupType: Optional,
status: Active,
name: String,
products:
[
{
}
]
}