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.
import java.math.*;
import java.util.*;
import java.io.InputStream;
import net.servicestack.client.*;
import com.google.gson.annotations.*;
import com.google.gson.reflect.*;

public class dtos
{

    @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
    @ValidateRequest(Validator="IsAuthenticated")
    public static class CreateVossUsage
    {
        /**
        * The company id
        */
        @ApiMember(Description="The company id", IsRequired=true)
        public UUID CompanyId = null;

        /**
        * Article number. Can be fetched from products
        */
        @ApiMember(Description="Article number. Can be fetched from products", IsRequired=true)
        public String ArticleNumber = null;

        /**
        * Example: developer worked 6 hours
        */
        @ApiMember(Description="Example: developer worked 6 hours", IsRequired=true)
        public Integer Quantity = null;
        
        public UUID getCompanyId() { return CompanyId; }
        public CreateVossUsage setCompanyId(UUID value) { this.CompanyId = value; return this; }
        public String getArticleNumber() { return ArticleNumber; }
        public CreateVossUsage setArticleNumber(String value) { this.ArticleNumber = value; return this; }
        public Integer getQuantity() { return Quantity; }
        public CreateVossUsage setQuantity(Integer value) { this.Quantity = value; return this; }
    }

    @DataContract(Name="CreateSubscriptionProductGroupResult")
    public static class CreateSubscriptionProductGroupResult
    {
        @DataMember(Name="productGroupType", IsRequired=true)
        @SerializedName("productGroupType")
        public ProductGroupTypeEnum ProductGroupType = null;

        @DataMember(Name="status", IsRequired=true)
        @SerializedName("status")
        public StatusEnum Status = null;

        @DataMember(Name="id", IsRequired=true)
        @SerializedName("id")
        public UUID Id = null;

        @DataMember(Name="name", IsRequired=true)
        @SerializedName("name")
        public String Name = null;

        @DataMember(Name="products", EmitDefaultValue=false)
        @SerializedName("products")
        public ArrayList<SubscriptionProductGroupProductResultDto> Products = new ArrayList<SubscriptionProductGroupProductResultDto>();

        @DataMember(Name="termination")
        @SerializedName("termination")
        public SubscriptionItemTerminationDto Termination = null;

        @DataMember(Name="created", IsRequired=true)
        @SerializedName("created")
        public Date Created = null;

        @DataMember(Name="customerBalanceChange", IsRequired=true)
        @SerializedName("customerBalanceChange")
        public CustomerBalanceChangeDto CustomerBalanceChange = null;
        
        public ProductGroupTypeEnum getProductGroupType() { return ProductGroupType; }
        public CreateSubscriptionProductGroupResult setProductGroupType(ProductGroupTypeEnum value) { this.ProductGroupType = value; return this; }
        public StatusEnum getStatus() { return Status; }
        public CreateSubscriptionProductGroupResult setStatus(StatusEnum value) { this.Status = value; return this; }
        public UUID getId() { return Id; }
        public CreateSubscriptionProductGroupResult setId(UUID value) { this.Id = value; return this; }
        public String getName() { return Name; }
        public CreateSubscriptionProductGroupResult setName(String value) { this.Name = value; return this; }
        public ArrayList<SubscriptionProductGroupProductResultDto> getProducts() { return Products; }
        public CreateSubscriptionProductGroupResult setProducts(ArrayList<SubscriptionProductGroupProductResultDto> value) { this.Products = value; return this; }
        public SubscriptionItemTerminationDto getTermination() { return Termination; }
        public CreateSubscriptionProductGroupResult setTermination(SubscriptionItemTerminationDto value) { this.Termination = value; return this; }
        public Date getCreated() { return Created; }
        public CreateSubscriptionProductGroupResult setCreated(Date value) { this.Created = value; return this; }
        public CustomerBalanceChangeDto getCustomerBalanceChange() { return CustomerBalanceChange; }
        public CreateSubscriptionProductGroupResult setCustomerBalanceChange(CustomerBalanceChangeDto value) { this.CustomerBalanceChange = value; return this; }
    }

    public static enum ProductGroupTypeEnum
    {
        Optional,
        Included;
    }

    public static enum StatusEnum
    {
        Active,
        Terminated;
    }

    @DataContract(Name="SubscriptionProductGroupProductResultDto")
    public static class SubscriptionProductGroupProductResultDto
    {
        @DataMember(Name="id", IsRequired=true)
        @SerializedName("id")
        public UUID Id = null;

        @DataMember(Name="name", IsRequired=true)
        @SerializedName("name")
        public String Name = null;

        @DataMember(Name="externalId")
        @SerializedName("externalId")
        public String ExternalId = null;

        @DataMember(Name="articleNumber", IsRequired=true)
        @SerializedName("articleNumber")
        public String ArticleNumber = null;
        
        public UUID getId() { return Id; }
        public SubscriptionProductGroupProductResultDto setId(UUID value) { this.Id = value; return this; }
        public String getName() { return Name; }
        public SubscriptionProductGroupProductResultDto setName(String value) { this.Name = value; return this; }
        public String getExternalId() { return ExternalId; }
        public SubscriptionProductGroupProductResultDto setExternalId(String value) { this.ExternalId = value; return this; }
        public String getArticleNumber() { return ArticleNumber; }
        public SubscriptionProductGroupProductResultDto setArticleNumber(String value) { this.ArticleNumber = value; return this; }
    }

    @DataContract(Name="SubscriptionItemTerminationDto")
    public static class SubscriptionItemTerminationDto
    {
        @DataMember(Name="type")
        @SerializedName("type")
        public TypeEnum Type = null;

        @DataMember(Name="source", IsRequired=true)
        @SerializedName("source")
        public SourceEnum Source = null;

        @DataMember(Name="scheduledDate", IsRequired=true)
        @SerializedName("scheduledDate")
        public Date ScheduledDate = null;

        @DataMember(Name="reason")
        @SerializedName("reason")
        public SubscriptionItemTerminationReasonDto Reason = null;

        @DataMember(Name="creditOptions", IsRequired=true)
        @SerializedName("creditOptions")
        public CreditOptionsDto CreditOptions = null;
        
        public TypeEnum getType() { return Type; }
        public SubscriptionItemTerminationDto setType(TypeEnum value) { this.Type = value; return this; }
        public SourceEnum getSource() { return Source; }
        public SubscriptionItemTerminationDto setSource(SourceEnum value) { this.Source = value; return this; }
        public Date getScheduledDate() { return ScheduledDate; }
        public SubscriptionItemTerminationDto setScheduledDate(Date value) { this.ScheduledDate = value; return this; }
        public SubscriptionItemTerminationReasonDto getReason() { return Reason; }
        public SubscriptionItemTerminationDto setReason(SubscriptionItemTerminationReasonDto value) { this.Reason = value; return this; }
        public CreditOptionsDto getCreditOptions() { return CreditOptions; }
        public SubscriptionItemTerminationDto setCreditOptions(CreditOptionsDto value) { this.CreditOptions = value; return this; }
    }

    public static enum TypeEnum
    {
        AtSubscriptionBillingPeriodEnd,
        AtBindingPeriodEnd,
        Immediately;
    }

    public static enum SourceEnum
    {
        Direct,
        Plan,
        CustomerExpiration,
        Update,
        Unpaid;
    }

    @DataContract(Name="SubscriptionItemTerminationReasonDto")
    public static class SubscriptionItemTerminationReasonDto
    {
        @DataMember(Name="reasonId", IsRequired=true)
        @SerializedName("reasonId")
        public UUID ReasonId = null;

        @DataMember(Name="reasonName", IsRequired=true)
        @SerializedName("reasonName")
        public String ReasonName = null;

        @DataMember(Name="reasonExternalId")
        @SerializedName("reasonExternalId")
        public String ReasonExternalId = null;

        @DataMember(Name="subReasonId")
        @SerializedName("subReasonId")
        public UUID SubReasonId = null;

        @DataMember(Name="subReasonName")
        @SerializedName("subReasonName")
        public String SubReasonName = null;

        @DataMember(Name="subReasonExternalId")
        @SerializedName("subReasonExternalId")
        public String SubReasonExternalId = null;

        @DataMember(Name="comment", IsRequired=true)
        @SerializedName("comment")
        public String Comment = null;
        
        public UUID getReasonId() { return ReasonId; }
        public SubscriptionItemTerminationReasonDto setReasonId(UUID value) { this.ReasonId = value; return this; }
        public String getReasonName() { return ReasonName; }
        public SubscriptionItemTerminationReasonDto setReasonName(String value) { this.ReasonName = value; return this; }
        public String getReasonExternalId() { return ReasonExternalId; }
        public SubscriptionItemTerminationReasonDto setReasonExternalId(String value) { this.ReasonExternalId = value; return this; }
        public UUID getSubReasonId() { return SubReasonId; }
        public SubscriptionItemTerminationReasonDto setSubReasonId(UUID value) { this.SubReasonId = value; return this; }
        public String getSubReasonName() { return SubReasonName; }
        public SubscriptionItemTerminationReasonDto setSubReasonName(String value) { this.SubReasonName = value; return this; }
        public String getSubReasonExternalId() { return SubReasonExternalId; }
        public SubscriptionItemTerminationReasonDto setSubReasonExternalId(String value) { this.SubReasonExternalId = value; return this; }
        public String getComment() { return Comment; }
        public SubscriptionItemTerminationReasonDto setComment(String value) { this.Comment = value; return this; }
    }

    @DataContract(Name="CreditOptionsDto")
    public static class CreditOptionsDto
    {
        @DataMember(Name="behaviour", IsRequired=true)
        @SerializedName("behaviour")
        public SubscriptionBehaviourEnum SubscriptionBehaviour = null;

        @DataMember(Name="creditKind", IsRequired=true)
        @SerializedName("creditKind")
        public CreditKindEnum CreditKind = null;

        @DataMember(Name="prorateTimeAnchor")
        @SerializedName("prorateTimeAnchor")
        public Date ProrateTimeAnchor = null;
        
        public SubscriptionBehaviourEnum getSubscriptionBehaviour() { return SubscriptionBehaviour; }
        public CreditOptionsDto setSubscriptionBehaviour(SubscriptionBehaviourEnum value) { this.SubscriptionBehaviour = value; return this; }
        public CreditKindEnum getCreditKind() { return CreditKind; }
        public CreditOptionsDto setCreditKind(CreditKindEnum value) { this.CreditKind = value; return this; }
        public Date getProrateTimeAnchor() { return ProrateTimeAnchor; }
        public CreditOptionsDto setProrateTimeAnchor(Date value) { this.ProrateTimeAnchor = value; return this; }
    }

    public static enum SubscriptionBehaviourEnum
    {
        Prorate,
        Full,
        None;
    }

    public static enum CreditKindEnum
    {
        Normal,
        Internal;
    }

    @DataContract(Name="CustomerBalanceChangeDto")
    public static class CustomerBalanceChangeDto
    {
        @DataMember(Name="items", EmitDefaultValue=false)
        @SerializedName("items")
        public ArrayList<CustomerBalanceChangeItemDto> Items = new ArrayList<CustomerBalanceChangeItemDto>();

        @DataMember(Name="totalAmount", EmitDefaultValue=false)
        @SerializedName("totalAmount")
        public Double TotalAmount = null;

        @DataMember(Name="totalDiscountAmount", EmitDefaultValue=false)
        @SerializedName("totalDiscountAmount")
        public Double TotalDiscountAmount = null;
        
        public ArrayList<CustomerBalanceChangeItemDto> getItems() { return Items; }
        public CustomerBalanceChangeDto setItems(ArrayList<CustomerBalanceChangeItemDto> value) { this.Items = value; return this; }
        public Double getTotalAmount() { return TotalAmount; }
        public CustomerBalanceChangeDto setTotalAmount(Double value) { this.TotalAmount = value; return this; }
        public Double getTotalDiscountAmount() { return TotalDiscountAmount; }
        public CustomerBalanceChangeDto setTotalDiscountAmount(Double value) { this.TotalDiscountAmount = value; return this; }
    }

    @DataContract(Name="CustomerBalanceChangeItemDto")
    public static class CustomerBalanceChangeItemDto
    {
        @DataMember(Name="type", IsRequired=true)
        @SerializedName("type")
        public ProductTypeEnum ProductType = null;

        @DataMember(Name="id", IsRequired=true)
        @SerializedName("id")
        public UUID Id = null;

        @DataMember(Name="name", IsRequired=true)
        @SerializedName("name")
        public String Name = null;

        @DataMember(Name="productGroupId", IsRequired=true)
        @SerializedName("productGroupId")
        public UUID ProductGroupId = null;

        @DataMember(Name="productGroupName", IsRequired=true)
        @SerializedName("productGroupName")
        public String ProductGroupName = null;

        @DataMember(Name="quantity", IsRequired=true)
        @SerializedName("quantity")
        public Double Quantity = null;

        @DataMember(Name="amount", IsRequired=true)
        @SerializedName("amount")
        public Double Amount = null;

        @DataMember(Name="discountAmount", IsRequired=true)
        @SerializedName("discountAmount")
        public Double DiscountAmount = null;

        @DataMember(Name="totalAmount", EmitDefaultValue=false)
        @SerializedName("totalAmount")
        public Double TotalAmount = null;

        @DataMember(Name="invoiceRecipientCustomerId", IsRequired=true)
        @SerializedName("invoiceRecipientCustomerId")
        public UUID InvoiceRecipientCustomerId = null;
        
        public ProductTypeEnum getProductType() { return ProductType; }
        public CustomerBalanceChangeItemDto setProductType(ProductTypeEnum value) { this.ProductType = value; return this; }
        public UUID getId() { return Id; }
        public CustomerBalanceChangeItemDto setId(UUID value) { this.Id = value; return this; }
        public String getName() { return Name; }
        public CustomerBalanceChangeItemDto setName(String value) { this.Name = value; return this; }
        public UUID getProductGroupId() { return ProductGroupId; }
        public CustomerBalanceChangeItemDto setProductGroupId(UUID value) { this.ProductGroupId = value; return this; }
        public String getProductGroupName() { return ProductGroupName; }
        public CustomerBalanceChangeItemDto setProductGroupName(String value) { this.ProductGroupName = value; return this; }
        public Double getQuantity() { return Quantity; }
        public CustomerBalanceChangeItemDto setQuantity(Double value) { this.Quantity = value; return this; }
        public Double getAmount() { return Amount; }
        public CustomerBalanceChangeItemDto setAmount(Double value) { this.Amount = value; return this; }
        public Double getDiscountAmount() { return DiscountAmount; }
        public CustomerBalanceChangeItemDto setDiscountAmount(Double value) { this.DiscountAmount = value; return this; }
        public Double getTotalAmount() { return TotalAmount; }
        public CustomerBalanceChangeItemDto setTotalAmount(Double value) { this.TotalAmount = value; return this; }
        public UUID getInvoiceRecipientCustomerId() { return InvoiceRecipientCustomerId; }
        public CustomerBalanceChangeItemDto setInvoiceRecipientCustomerId(UUID value) { this.InvoiceRecipientCustomerId = value; return this; }
    }

    public static enum ProductTypeEnum
    {
        Main,
        Addon,
        License,
        Usage;
    }

}

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