BokaMera.API.Host

<back to all web services

CreateVossUsageTermination

Requires Authentication
Requires any of the roles:bookingsupplier-administrator-write, superadmin
The following routes are available for this service:
POST/voss/usage/{Id}/terminationCreate voss usage terminationAdd new product to company invoicing. Sends that product to VOSS System.

// @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 UsageBehaviourEnum
{
    Full = 'Full',
    None = 'None',
}

export enum CreditKindEnum
{
    Normal = 'Normal',
    Internal = 'Internal',
}

// @DataContract(Name="UsageCreditOptionsDto")
export class UsageCreditOptionsDto
{
    // @DataMember(Name="behaviour", IsRequired=true)
    public behaviour: UsageBehaviourEnum;

    // @DataMember(Name="creditKind", IsRequired=true)
    public creditKind: CreditKindEnum;

    public constructor(init?: Partial<UsageCreditOptionsDto>) { (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="CreateUsageTerminationResult")
export class CreateUsageTerminationResult
{
    // @DataMember(Name="scheduledDate", IsRequired=true)
    public scheduledDate: string;

    // @DataMember(Name="reason")
    public reason: SubscriptionItemTerminationReasonDto;

    // @DataMember(Name="creditOptions", IsRequired=true)
    public creditOptions: UsageCreditOptionsDto;

    // @DataMember(Name="customerBalanceChange", IsRequired=true)
    public customerBalanceChange: CustomerBalanceChangeDto;

    public constructor(init?: Partial<CreateUsageTerminationResult>) { (Object as any).assign(this, init); }
}

// @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401)
// @ValidateRequest(Validator="IsAuthenticated")
export class CreateVossUsageTermination
{
    /** @description The company id */
    // @ApiMember(Description="The company id", IsRequired=true)
    public CompanyId: string;

    /** @description Usage Id */
    // @ApiMember(Description="Usage Id", IsRequired=true)
    public Id: string;

    public InvoiceLineTexts: string[] = [];
    public TerminationReasonComment: string;
    public TerminationReasonId: string;
    /** @description Credit behaviour:  <br /> 1. Full - usage will be credited in full  <br /> 2. None - no credit will be created */
    // @ApiMember(Description="Credit behaviour:  <br /> 1. Full - usage will be credited in full  <br /> 2. None - no credit will be created", IsRequired=true)
    public Behaviour: UsageBehaviourEnum;

    /** @description Credit kind:  <br /> 1. Normal - default credit type  <br /> 2. Internal - corresponding credit will be marked as internal in invoice file line */
    // @ApiMember(Description="Credit kind:  <br /> 1. Normal - default credit type  <br /> 2. Internal - corresponding credit will be marked as internal in invoice file line", IsRequired=true)
    public CreditKind: CreditKindEnum;

    public constructor(init?: Partial<CreateVossUsageTermination>) { (Object as any).assign(this, init); }
}

TypeScript CreateVossUsageTermination DTOs

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

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /voss/usage/{Id}/termination HTTP/1.1 
Host: api.bokamera.se 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"Id":"String","InvoiceLineTexts":["String"],"TerminationReasonComment":"String","Behaviour":"Full","CreditKind":"Normal"}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{}