| 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. |
|---|
export enum ProductGroupTypeEnum
{
Optional = 'Optional',
Included = 'Included',
}
export enum StatusEnum
{
Active = 'Active',
Terminated = 'Terminated',
}
// @DataContract(Name="SubscriptionProductGroupProductResultDto")
export class SubscriptionProductGroupProductResultDto
{
// @DataMember(Name="id", IsRequired=true)
public id: string;
// @DataMember(Name="name", IsRequired=true)
public name: string;
// @DataMember(Name="externalId")
public externalId: string;
// @DataMember(Name="articleNumber", IsRequired=true)
public articleNumber: string;
public constructor(init?: Partial<SubscriptionProductGroupProductResultDto>) { (Object as any).assign(this, init); }
}
export enum TypeEnum
{
AtSubscriptionBillingPeriodEnd = 'AtSubscriptionBillingPeriodEnd',
AtBindingPeriodEnd = 'AtBindingPeriodEnd',
Immediately = 'Immediately',
}
export enum SourceEnum
{
Direct = 'Direct',
Plan = 'Plan',
CustomerExpiration = 'CustomerExpiration',
Update = 'Update',
Unpaid = 'Unpaid',
}
// @DataContract(Name="SubscriptionItemTerminationReasonDto")
export class SubscriptionItemTerminationReasonDto
{
// @DataMember(Name="reasonId", IsRequired=true)
public reasonId: string;
// @DataMember(Name="reasonName", IsRequired=true)
public reasonName: string;
// @DataMember(Name="reasonExternalId")
public reasonExternalId: string;
// @DataMember(Name="subReasonId")
public subReasonId?: string;
// @DataMember(Name="subReasonName")
public subReasonName: string;
// @DataMember(Name="subReasonExternalId")
public subReasonExternalId: string;
// @DataMember(Name="comment", IsRequired=true)
public comment: string;
public constructor(init?: Partial<SubscriptionItemTerminationReasonDto>) { (Object as any).assign(this, init); }
}
export enum SubscriptionBehaviourEnum
{
Prorate = 'Prorate',
Full = 'Full',
None = 'None',
}
export enum CreditKindEnum
{
Normal = 'Normal',
Internal = 'Internal',
}
// @DataContract(Name="CreditOptionsDto")
export class CreditOptionsDto
{
// @DataMember(Name="behaviour", IsRequired=true)
public behaviour: SubscriptionBehaviourEnum;
// @DataMember(Name="creditKind", IsRequired=true)
public creditKind: CreditKindEnum;
// @DataMember(Name="prorateTimeAnchor")
public prorateTimeAnchor?: string;
public constructor(init?: Partial<CreditOptionsDto>) { (Object as any).assign(this, init); }
}
// @DataContract(Name="SubscriptionItemTerminationDto")
export class SubscriptionItemTerminationDto
{
// @DataMember(Name="type")
public type: TypeEnum;
// @DataMember(Name="source", IsRequired=true)
public source: SourceEnum;
// @DataMember(Name="scheduledDate", IsRequired=true)
public scheduledDate: string;
// @DataMember(Name="reason")
public reason: SubscriptionItemTerminationReasonDto;
// @DataMember(Name="creditOptions", IsRequired=true)
public creditOptions: CreditOptionsDto;
public constructor(init?: Partial<SubscriptionItemTerminationDto>) { (Object as any).assign(this, init); }
}
export enum ProductTypeEnum
{
Main = 'Main',
Addon = 'Addon',
License = 'License',
Usage = 'Usage',
}
// @DataContract(Name="CustomerBalanceChangeItemDto")
export class CustomerBalanceChangeItemDto
{
// @DataMember(Name="type", IsRequired=true)
public type: ProductTypeEnum;
// @DataMember(Name="id", IsRequired=true)
public id: string;
// @DataMember(Name="name", IsRequired=true)
public name: string;
// @DataMember(Name="productGroupId", IsRequired=true)
public productGroupId: string;
// @DataMember(Name="productGroupName", IsRequired=true)
public productGroupName: string;
// @DataMember(Name="quantity", IsRequired=true)
public quantity: number;
// @DataMember(Name="amount", IsRequired=true)
public amount: number;
// @DataMember(Name="discountAmount", IsRequired=true)
public discountAmount: number;
// @DataMember(Name="totalAmount", EmitDefaultValue=false)
public totalAmount: number;
// @DataMember(Name="invoiceRecipientCustomerId", IsRequired=true)
public invoiceRecipientCustomerId: string;
public constructor(init?: Partial<CustomerBalanceChangeItemDto>) { (Object as any).assign(this, init); }
}
// @DataContract(Name="CustomerBalanceChangeDto")
export class CustomerBalanceChangeDto
{
// @DataMember(Name="items", EmitDefaultValue=false)
public items: CustomerBalanceChangeItemDto[] = [];
// @DataMember(Name="totalAmount", EmitDefaultValue=false)
public totalAmount: number;
// @DataMember(Name="totalDiscountAmount", EmitDefaultValue=false)
public totalDiscountAmount: number;
public constructor(init?: Partial<CustomerBalanceChangeDto>) { (Object as any).assign(this, init); }
}
// @DataContract(Name="CreateSubscriptionProductGroupResult")
export class CreateSubscriptionProductGroupResult
{
// @DataMember(Name="productGroupType", IsRequired=true)
public productGroupType: ProductGroupTypeEnum;
// @DataMember(Name="status", IsRequired=true)
public status: StatusEnum;
// @DataMember(Name="id", IsRequired=true)
public id: string;
// @DataMember(Name="name", IsRequired=true)
public name: string;
// @DataMember(Name="products", EmitDefaultValue=false)
public products: SubscriptionProductGroupProductResultDto[] = [];
// @DataMember(Name="termination")
public termination: SubscriptionItemTerminationDto;
// @DataMember(Name="created", IsRequired=true)
public created: string;
// @DataMember(Name="customerBalanceChange", IsRequired=true)
public customerBalanceChange: CustomerBalanceChangeDto;
public constructor(init?: Partial<CreateSubscriptionProductGroupResult>) { (Object as any).assign(this, init); }
}
// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
export class CreateVossUsage
{
/** @description The company id */
// @ApiMember(Description="The company id", IsRequired=true)
public CompanyId: string;
/** @description Article number. Can be fetched from products */
// @ApiMember(Description="Article number. Can be fetched from products", IsRequired=true)
public ArticleNumber: string;
/** @description Example: developer worked 6 hours */
// @ApiMember(Description="Example: developer worked 6 hours", IsRequired=true)
public Quantity: number;
public constructor(init?: Partial<CreateVossUsage>) { (Object as any).assign(this, init); }
}
TypeScript CreateVossUsage DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
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: application/json
Content-Type: application/json
Content-Length: length
{"ArticleNumber":"String","Quantity":0}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length
{"productGroupType":"Optional","status":"Active","name":"String","products":[{}]}