sfgboxapi

<back to all web services

CreateSubscribeCustomer

Requires Authentication
The following routes are available for this service:
POST/create-customer
import java.math.*
import java.util.*
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*


open class CreateSubscribeCustomer : IPost
{
    var email:String? = null
}

open class StripeCustomer : StripeId()
{
    var accountBalance:Int? = null
    var businessVatId:String? = null
    var created:Date? = null
    var defaultSource:String? = null
    var delinquent:Boolean? = null
    var description:String? = null
    var discount:StripeDiscount? = null
    var email:String? = null
    var invoicePrefix:String? = null
    var livemode:Boolean? = null
    var metadata:HashMap<String,String> = HashMap<String,String>()
    var shipping:StripeShipping? = null
    var sources:StripeCollection<StripeCard>? = null
    var subscriptions:StripeCollection<StripeSubscription>? = null
    var deleted:Boolean? = null
    var currency:String? = null
}

open class StripeId : StripeObject()
{
    var id:String? = null
}

open class StripeObject
{
    @SerializedName("object") var Object:StripeType? = null
}

enum class StripeType
{
    Unknown,
    Account,
    Card,
    Charge,
    Coupon,
    Customer,
    Discount,
    Dispute,
    Event,
    Invoiceitem,
    Invoice,
    LineItem,
    Plan,
    Subscription,
    Token,
    Transfer,
    List,
    Product,
}

open class StripeDiscount : StripeId()
{
    var customer:String? = null
    var coupon:StripeCoupon? = null
    var start:Date? = null
    var end:Date? = null
}

open class StripeCoupon : StripeId()
{
    var amountOff:Int? = null
    var created:Date? = null
    var currency:String? = null
    var duration:StripeCouponDuration? = null
    var durationInMonths:Int? = null
    var livemode:Boolean? = null
    var maxRedemptions:Int? = null
    var metadata:HashMap<String,String> = HashMap<String,String>()
    var percentOff:Int? = null
    var redeemBy:Date? = null
    var timesRedeemed:Int? = null
    var valid:Boolean? = null
}

enum class StripeCouponDuration
{
    Forever,
    Once,
    Repeating,
}

open class StripeShipping
{
    var address:StripeAddress? = null
    var name:String? = null
    var phone:String? = null
}

open class StripeAddress
{
    var city:String? = null
    var country:String? = null
    var line1:String? = null
    var line2:String? = null
    var postalCode:String? = null
    var state:String? = null
}

open class StripeCollection<T> : StripeId()
{
    var url:String? = null
    var totalCount:Int? = null
    var hasMore:Boolean? = null
    @SerializedName("data") var Data:ArrayList<T> = ArrayList<T>()
}

open class StripeCard : StripeId()
{
    var brand:String? = null
    var number:String? = null
    var last4:String? = null
    var dynamicLast4:String? = null
    var expMonth:Int? = null
    var expYear:Int? = null
    var cvc:String? = null
    var name:String? = null
    var addressCity:String? = null
    var addressCountry:String? = null
    var addressLine1:String? = null
    var addressLine2:String? = null
    var addressState:String? = null
    var addressZip:String? = null
    var cvcCheck:StripeCvcCheck? = null
    var addressLine1Check:String? = null
    var addressZipCheck:String? = null
    var funding:String? = null
    var fingerprint:String? = null
    var customer:String? = null
    var country:String? = null
}

enum class StripeCvcCheck
{
    Unknown,
    Pass,
    Fail,
    Unchecked,
}

open class StripeSubscription : StripeId()
{
    var currentPeriodEnd:Date? = null
    var status:StripeSubscriptionStatus? = null
    var plan:StripePlan? = null
    var currentPeriodStart:Date? = null
    var start:Date? = null
    var trialStart:Date? = null
    var cancelAtPeriodEnd:Boolean? = null
    var trialEnd:Date? = null
    var canceledAt:Date? = null
    var endedAt:Date? = null
    var customer:String? = null
    var quantity:Int? = null
}

enum class StripeSubscriptionStatus
{
    Unknown,
    Trialing,
    Active,
    PastDue,
    Canceled,
    Unpaid,
}

open class StripePlan : StripeId()
{
    var amount:Int? = null
    var created:Date? = null
    var currency:String? = null
    var interval:StripePlanInterval? = null
    var intervalCount:Int? = null
    var livemode:Boolean? = null
    var metadata:HashMap<String,String> = HashMap<String,String>()
    var nickname:String? = null
    var product:String? = null
    var trialPeriodDays:Int? = null
}

enum class StripePlanInterval
{
    Month,
    Year,
}

Kotlin 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
}