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 .xml suffix or ?format=xml

HTTP + XML

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: application/xml
Content-Type: application/xml
Content-Length: length

<CreateSubscribeCustomer xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/sfgboxapi.ServiceModel">
  <Email>String</Email>
</CreateSubscribeCustomer>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<StripeCustomer xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ServiceStack.Stripe.Types">
  <Object>unknown</Object>
  <Id>String</Id>
  <AccountBalance>0</AccountBalance>
  <BusinessVatId>String</BusinessVatId>
  <Created>0001-01-01T00:00:00</Created>
  <Currency>String</Currency>
  <DefaultSource>String</DefaultSource>
  <Deleted>false</Deleted>
  <Delinquent>false</Delinquent>
  <Description>String</Description>
  <Discount>
    <Object>unknown</Object>
    <Id>String</Id>
    <Coupon>
      <Object>unknown</Object>
      <Id>String</Id>
      <AmountOff>0</AmountOff>
      <Created>0001-01-01T00:00:00</Created>
      <Currency>String</Currency>
      <Duration>forever</Duration>
      <DurationInMonths>0</DurationInMonths>
      <Livemode>false</Livemode>
      <MaxRedemptions>0</MaxRedemptions>
      <Metadata xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d4p1:KeyValueOfstringstring>
          <d4p1:Key>String</d4p1:Key>
          <d4p1:Value>String</d4p1:Value>
        </d4p1:KeyValueOfstringstring>
      </Metadata>
      <PercentOff>0</PercentOff>
      <RedeemBy>0001-01-01T00:00:00</RedeemBy>
      <TimesRedeemed>0</TimesRedeemed>
      <Valid>false</Valid>
    </Coupon>
    <Customer>String</Customer>
    <End>0001-01-01T00:00:00</End>
    <Start>0001-01-01T00:00:00</Start>
  </Discount>
  <Email>String</Email>
  <InvoicePrefix>String</InvoicePrefix>
  <Livemode>false</Livemode>
  <Metadata xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <d2p1:KeyValueOfstringstring>
      <d2p1:Key>String</d2p1:Key>
      <d2p1:Value>String</d2p1:Value>
    </d2p1:KeyValueOfstringstring>
  </Metadata>
  <Shipping>
    <Address xmlns:d3p1="http://schemas.datacontract.org/2004/07/ServiceStack.Stripe">
      <d3p1:City>String</d3p1:City>
      <d3p1:Country>String</d3p1:Country>
      <d3p1:Line1>String</d3p1:Line1>
      <d3p1:Line2>String</d3p1:Line2>
      <d3p1:PostalCode>String</d3p1:PostalCode>
      <d3p1:State>String</d3p1:State>
    </Address>
    <Name>String</Name>
    <Phone>String</Phone>
  </Shipping>
  <Sources>
    <Object>unknown</Object>
    <Id>String</Id>
    <Data>
      <StripeCard>
        <Object>unknown</Object>
        <Id>String</Id>
        <AddressCity>String</AddressCity>
        <AddressCountry>String</AddressCountry>
        <AddressLine1>String</AddressLine1>
        <AddressLine1Check>String</AddressLine1Check>
        <AddressLine2>String</AddressLine2>
        <AddressState>String</AddressState>
        <AddressZip>String</AddressZip>
        <AddressZipCheck>String</AddressZipCheck>
        <Brand>String</Brand>
        <Country>String</Country>
        <Customer>String</Customer>
        <Cvc>String</Cvc>
        <CvcCheck>Unknown</CvcCheck>
        <DynamicLast4>String</DynamicLast4>
        <ExpMonth>0</ExpMonth>
        <ExpYear>0</ExpYear>
        <Fingerprint>String</Fingerprint>
        <Funding>String</Funding>
        <Last4>String</Last4>
        <Name>String</Name>
        <Number>String</Number>
      </StripeCard>
    </Data>
    <HasMore>false</HasMore>
    <TotalCount>0</TotalCount>
    <Url>String</Url>
  </Sources>
  <Subscriptions>
    <Object>unknown</Object>
    <Id>String</Id>
    <Data>
      <StripeSubscription>
        <Object>unknown</Object>
        <Id>String</Id>
        <CancelAtPeriodEnd>false</CancelAtPeriodEnd>
        <CanceledAt>0001-01-01T00:00:00</CanceledAt>
        <CurrentPeriodEnd>0001-01-01T00:00:00</CurrentPeriodEnd>
        <CurrentPeriodStart>0001-01-01T00:00:00</CurrentPeriodStart>
        <Customer>String</Customer>
        <EndedAt>0001-01-01T00:00:00</EndedAt>
        <Plan>
          <Object>unknown</Object>
          <Id>String</Id>
          <Amount>0</Amount>
          <Created>0001-01-01T00:00:00</Created>
          <Currency>String</Currency>
          <Interval>month</Interval>
          <IntervalCount>0</IntervalCount>
          <Livemode>false</Livemode>
          <Metadata xmlns:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
            <d6p1:KeyValueOfstringstring>
              <d6p1:Key>String</d6p1:Key>
              <d6p1:Value>String</d6p1:Value>
            </d6p1:KeyValueOfstringstring>
          </Metadata>
          <Nickname>String</Nickname>
          <Product>String</Product>
          <TrialPeriodDays>0</TrialPeriodDays>
        </Plan>
        <Quantity>0</Quantity>
        <Start>0001-01-01T00:00:00</Start>
        <Status>Unknown</Status>
        <TrialEnd>0001-01-01T00:00:00</TrialEnd>
        <TrialStart>0001-01-01T00:00:00</TrialStart>
      </StripeSubscription>
    </Data>
    <HasMore>false</HasMore>
    <TotalCount>0</TotalCount>
    <Url>String</Url>
  </Subscriptions>
</StripeCustomer>