sfgboxapi

<back to all web services

CreateSubscribeCustomer

Requires Authentication
The following routes are available for this service:
POST/create-customer

export enum StripeType
{
    unknown = 'unknown',
    account = 'account',
    card = 'card',
    charge = 'charge',
    coupon = 'coupon',
    customer = 'customer',
    discount = 'discount',
    dispute = 'dispute',
    event = 'event',
    invoiceitem = 'invoiceitem',
    invoice = 'invoice',
    line_item = 'line_item',
    plan = 'plan',
    subscription = 'subscription',
    token = 'token',
    transfer = 'transfer',
    list = 'list',
    product = 'product',
}

export class StripeObject
{
    public object?: StripeType;

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

export class StripeId extends StripeObject
{
    public id: string;

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

export enum StripeCouponDuration
{
    forever = 'forever',
    once = 'once',
    repeating = 'repeating',
}

export class StripeCoupon extends StripeId
{
    public amountOff?: number;
    public created?: string;
    public currency: string;
    public duration: StripeCouponDuration;
    public durationInMonths?: number;
    public livemode: boolean;
    public maxRedemptions?: number;
    public metadata: { [index: string]: string; };
    public percentOff?: number;
    public redeemBy?: string;
    public timesRedeemed: number;
    public valid: boolean;

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

export class StripeDiscount extends StripeId
{
    public customer: string;
    public coupon: StripeCoupon;
    public start?: string;
    public end?: string;

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

export class StripeAddress
{
    public city: string;
    public country: string;
    public line1: string;
    public line2: string;
    public postalCode: string;
    public state: string;

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

export class StripeShipping
{
    public address: StripeAddress;
    public name: string;
    public phone: string;

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

export enum StripeCvcCheck
{
    Unknown = 'Unknown',
    Pass = 'Pass',
    Fail = 'Fail',
    Unchecked = 'Unchecked',
}

export class StripeCard extends StripeId
{
    public brand: string;
    public number: string;
    public last4: string;
    public dynamicLast4: string;
    public expMonth: number;
    public expYear: number;
    public cvc: string;
    public name: string;
    public addressCity: string;
    public addressCountry: string;
    public addressLine1: string;
    public addressLine2: string;
    public addressState: string;
    public addressZip: string;
    public cvcCheck?: StripeCvcCheck;
    public addressLine1Check: string;
    public addressZipCheck: string;
    public funding: string;
    public fingerprint: string;
    public customer: string;
    public country: string;

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

export enum StripeSubscriptionStatus
{
    Unknown = 'Unknown',
    Trialing = 'Trialing',
    Active = 'Active',
    PastDue = 'PastDue',
    Canceled = 'Canceled',
    Unpaid = 'Unpaid',
}

export enum StripePlanInterval
{
    month = 'month',
    year = 'year',
}

export class StripePlan extends StripeId
{
    public amount: number;
    public created?: string;
    public currency: string;
    public interval: StripePlanInterval;
    public intervalCount?: number;
    public livemode: boolean;
    public metadata: { [index: string]: string; };
    public nickname: string;
    public product: string;
    public trialPeriodDays?: number;

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

export class StripeSubscription extends StripeId
{
    public currentPeriodEnd?: string;
    public status: StripeSubscriptionStatus;
    public plan: StripePlan;
    public currentPeriodStart?: string;
    public start?: string;
    public trialStart?: string;
    public cancelAtPeriodEnd?: boolean;
    public trialEnd?: string;
    public canceledAt?: string;
    public endedAt?: string;
    public customer: string;
    public quantity: number;

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

export class StripeCustomer extends StripeId
{
    public accountBalance: number;
    public businessVatId: string;
    public created?: string;
    public defaultSource: string;
    public delinquent?: boolean;
    public description: string;
    public discount: StripeDiscount;
    public email: string;
    public invoicePrefix: string;
    public livemode: boolean;
    public metadata: { [index: string]: string; };
    public shipping: StripeShipping;
    public sources: StripeCollection<StripeCard>;
    public subscriptions: StripeCollection<StripeSubscription>;
    public deleted: boolean;
    public currency: string;

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

export class CreateSubscribeCustomer implements IPost
{
    public email: string;

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

export class StripeCollection<T> extends StripeId
{
    public url: string;
    public totalCount: number;
    public hasMore?: boolean;
    public data: T[];

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

TypeScript CreateSubscribeCustomer DTOs

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

HTTP + JSV

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

POST /create-customer HTTP/1.1 
Host: sfgboxapi.dev.scadsoftware.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	email: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	accountBalance: 0,
	businessVatId: String,
	created: 0001-01-01,
	defaultSource: String,
	delinquent: False,
	description: String,
	discount: 
	{
		customer: String,
		coupon: 
		{
			amountOff: 0,
			created: 0001-01-01,
			currency: String,
			duration: forever,
			durationInMonths: 0,
			livemode: False,
			maxRedemptions: 0,
			metadata: 
			{
				String: String
			},
			percentOff: 0,
			redeemBy: 0001-01-01,
			timesRedeemed: 0,
			valid: False,
			id: String,
			object: unknown
		},
		start: 0001-01-01,
		end: 0001-01-01,
		id: String,
		object: unknown
	},
	email: String,
	invoicePrefix: String,
	livemode: False,
	metadata: 
	{
		String: String
	},
	shipping: 
	{
		address: 
		{
			city: String,
			country: String,
			line1: String,
			line2: String,
			postalCode: String,
			state: String
		},
		name: String,
		phone: String
	},
	sources: 
	{
		url: String,
		totalCount: 0,
		hasMore: False,
		data: 
		[
			{
				brand: String,
				number: String,
				last4: String,
				dynamicLast4: String,
				expMonth: 0,
				expYear: 0,
				cvc: String,
				name: String,
				addressCity: String,
				addressCountry: String,
				addressLine1: String,
				addressLine2: String,
				addressState: String,
				addressZip: String,
				cvcCheck: Unknown,
				addressLine1Check: String,
				addressZipCheck: String,
				funding: String,
				fingerprint: String,
				customer: String,
				country: String,
				id: String,
				object: unknown
			}
		],
		id: String,
		object: unknown
	},
	subscriptions: 
	{
		url: String,
		totalCount: 0,
		hasMore: False,
		data: 
		[
			{
				currentPeriodEnd: 0001-01-01,
				status: Unknown,
				plan: 
				{
					amount: 0,
					created: 0001-01-01,
					currency: String,
					interval: month,
					intervalCount: 0,
					livemode: False,
					metadata: 
					{
						String: String
					},
					nickname: String,
					product: String,
					trialPeriodDays: 0,
					id: String,
					object: unknown
				},
				currentPeriodStart: 0001-01-01,
				start: 0001-01-01,
				trialStart: 0001-01-01,
				cancelAtPeriodEnd: False,
				trialEnd: 0001-01-01,
				canceledAt: 0001-01-01,
				endedAt: 0001-01-01,
				customer: String,
				quantity: 0,
				id: String,
				object: unknown
			}
		],
		id: String,
		object: unknown
	},
	deleted: False,
	currency: String,
	id: String,
	object: unknown
}