BokaMera.API.Host

<back to all web services

CreateVossUsage

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
POST/voss/usageAdd product to company invoicingAdd 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

VB.NET CreateVossUsage DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .other suffix or ?format=other

HTTP + 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":[{}]}