mattermost-redux
Version:
Common code (API client, Redux stores, logic, utility functions) for building a Mattermost client
116 lines (103 loc) • 2.42 kB
text/typescript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {Dictionary} from './utilities';
export type CloudState = {
subscription?: Subscription;
products?: Dictionary<Product>;
customer?: CloudCustomer;
invoices?: Dictionary<Invoice>;
subscriptionStats?: SubscriptionStats;
}
export type Subscription = {
id: string;
customer_id: string;
product_id: string;
add_ons: string[];
start_at: number;
end_at: number;
create_at: number;
seats: number;
is_paid_tier: string;
last_invoice?: Invoice;
}
export type Product = {
id: string;
name: string;
description: string;
price_per_seat: number;
add_ons: AddOn[];
};
export type AddOn = {
id: string;
name: string;
display_name: string;
price_per_seat: number;
};
// Customer model represents a customer on the system.
export type CloudCustomer = {
id: string;
creator_id: string;
create_at: number;
email: string;
name: string;
num_employees: number;
contact_first_name: string;
contact_last_name: string;
billing_address: Address;
company_address: Address;
payment_method: PaymentMethod;
}
// CustomerPatch model represents a customer patch on the system.
export type CloudCustomerPatch = {
email?: string;
name?: string;
num_employees?: number;
contact_first_name?: string;
contact_last_name?: string;
}
// Address model represents a customer's address.
export type Address = {
city: string;
country: string;
line1: string;
line2: string;
postal_code: string;
state: string;
}
// PaymentMethod represents methods of payment for a customer.
export type PaymentMethod = {
type: string;
last_four: number;
exp_month: number;
exp_year: number;
card_brand: string;
name: string;
}
// Invoice model represents a invoice on the system.
export type Invoice = {
id: string;
number: string;
create_at: number;
total: number;
tax: number;
status: string;
description: string;
period_start: number;
period_end: number;
subscription_id: string;
line_items: InvoiceLineItem[];
}
// InvoiceLineItem model represents a invoice lineitem tied to an invoice.
export type InvoiceLineItem = {
price_id: string;
total: number;
quantity: number;
price_per_unit: number;
description: string;
type: string;
metadata: Dictionary<string>;
}
export type SubscriptionStats = {
remaining_seats: number;
is_paid_tier: string;
}