sfgboxapi

<back to all web services

CreateSubscribeCustomer

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

open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    type StripeType =
        | unknown = 0
        | account = 1
        | card = 2
        | charge = 3
        | coupon = 4
        | customer = 5
        | discount = 6
        | dispute = 7
        | event = 8
        | invoiceitem = 9
        | invoice = 10
        | line_item = 11
        | plan = 12
        | subscription = 13
        | token = 14
        | transfer = 15
        | list = 16
        | product = 17

    [<AllowNullLiteral>]
    type StripeObject() = 
        member val Object:Nullable<StripeType> = new Nullable<StripeType>() with get,set

    [<AllowNullLiteral>]
    type StripeId() = 
        inherit StripeObject()
        member val Id:String = null with get,set

    type StripeCouponDuration =
        | forever = 0
        | once = 1
        | repeating = 2

    [<AllowNullLiteral>]
    type StripeCoupon() = 
        inherit StripeId()
        member val AmountOff:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val Created:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val Currency:String = null with get,set
        member val Duration:StripeCouponDuration = new StripeCouponDuration() with get,set
        member val DurationInMonths:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val Livemode:Boolean = new Boolean() with get,set
        member val MaxRedemptions:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val Metadata:Dictionary<String, String> = new Dictionary<String, String>() with get,set
        member val PercentOff:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val RedeemBy:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val TimesRedeemed:Int32 = new Int32() with get,set
        member val Valid:Boolean = new Boolean() with get,set

    [<AllowNullLiteral>]
    type StripeDiscount() = 
        inherit StripeId()
        member val Customer:String = null with get,set
        member val Coupon:StripeCoupon = null with get,set
        member val Start:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val End:Nullable<DateTime> = new Nullable<DateTime>() with get,set

    [<AllowNullLiteral>]
    type StripeAddress() = 
        member val City:String = null with get,set
        member val Country:String = null with get,set
        member val Line1:String = null with get,set
        member val Line2:String = null with get,set
        member val PostalCode:String = null with get,set
        member val State:String = null with get,set

    [<AllowNullLiteral>]
    type StripeShipping() = 
        member val Address:StripeAddress = null with get,set
        member val Name:String = null with get,set
        member val Phone:String = null with get,set

    type StripeCvcCheck =
        | Unknown = 0
        | Pass = 1
        | Fail = 2
        | Unchecked = 3

    [<AllowNullLiteral>]
    type StripeCard() = 
        inherit StripeId()
        member val Brand:String = null with get,set
        member val Number:String = null with get,set
        member val Last4:String = null with get,set
        member val DynamicLast4:String = null with get,set
        member val ExpMonth:Int32 = new Int32() with get,set
        member val ExpYear:Int32 = new Int32() with get,set
        member val Cvc:String = null with get,set
        member val Name:String = null with get,set
        member val AddressCity:String = null with get,set
        member val AddressCountry:String = null with get,set
        member val AddressLine1:String = null with get,set
        member val AddressLine2:String = null with get,set
        member val AddressState:String = null with get,set
        member val AddressZip:String = null with get,set
        member val CvcCheck:Nullable<StripeCvcCheck> = new Nullable<StripeCvcCheck>() with get,set
        member val AddressLine1Check:String = null with get,set
        member val AddressZipCheck:String = null with get,set
        member val Funding:String = null with get,set
        member val Fingerprint:String = null with get,set
        member val Customer:String = null with get,set
        member val Country:String = null with get,set

    type StripeSubscriptionStatus =
        | Unknown = 0
        | Trialing = 1
        | Active = 2
        | PastDue = 3
        | Canceled = 4
        | Unpaid = 5

    type StripePlanInterval =
        | month = 0
        | year = 1

    [<AllowNullLiteral>]
    type StripePlan() = 
        inherit StripeId()
        member val Amount:Int32 = new Int32() with get,set
        member val Created:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val Currency:String = null with get,set
        member val Interval:StripePlanInterval = new StripePlanInterval() with get,set
        member val IntervalCount:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val Livemode:Boolean = new Boolean() with get,set
        member val Metadata:Dictionary<String, String> = new Dictionary<String, String>() with get,set
        member val Nickname:String = null with get,set
        member val Product:String = null with get,set
        member val TrialPeriodDays:Nullable<Int32> = new Nullable<Int32>() with get,set

    [<AllowNullLiteral>]
    type StripeSubscription() = 
        inherit StripeId()
        member val CurrentPeriodEnd:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val Status:StripeSubscriptionStatus = new StripeSubscriptionStatus() with get,set
        member val Plan:StripePlan = null with get,set
        member val CurrentPeriodStart:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val Start:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val TrialStart:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val CancelAtPeriodEnd:Nullable<Boolean> = new Nullable<Boolean>() with get,set
        member val TrialEnd:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val CanceledAt:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val EndedAt:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val Customer:String = null with get,set
        member val Quantity:Int32 = new Int32() with get,set

    [<AllowNullLiteral>]
    type StripeCustomer() = 
        inherit StripeId()
        member val AccountBalance:Int32 = new Int32() with get,set
        member val BusinessVatId:String = null with get,set
        member val Created:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val DefaultSource:String = null with get,set
        member val Delinquent:Nullable<Boolean> = new Nullable<Boolean>() with get,set
        member val Description:String = null with get,set
        member val Discount:StripeDiscount = null with get,set
        member val Email:String = null with get,set
        member val InvoicePrefix:String = null with get,set
        member val Livemode:Boolean = new Boolean() with get,set
        member val Metadata:Dictionary<String, String> = new Dictionary<String, String>() with get,set
        member val Shipping:StripeShipping = null with get,set
        member val Sources:StripeCollection<StripeCard> = null with get,set
        member val Subscriptions:StripeCollection<StripeSubscription> = null with get,set
        member val Deleted:Boolean = new Boolean() with get,set
        member val Currency:String = null with get,set

    [<AllowNullLiteral>]
    type CreateSubscribeCustomer() = 
        interface IPost
        member val Email:String = null with get,set

    [<AllowNullLiteral>]
    type StripeCollection<T>() = 
        inherit StripeId()
        member val Url:String = null with get,set
        member val TotalCount:Int32 = new Int32() with get,set
        member val HasMore:Nullable<Boolean> = new Nullable<Boolean>() with get,set
        member val Data:ResizeArray<T> = new ResizeArray<T>() with get,set

F# 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
}