70 lines
1.9 KiB
Plaintext
70 lines
1.9 KiB
Plaintext
|
|
syntax = "v1"
|
||
|
|
|
||
|
|
type (
|
||
|
|
BillingCheckoutCreateReq {
|
||
|
|
PlanId string `json:"plan_id"`
|
||
|
|
RequestId string `json:"request_id"`
|
||
|
|
}
|
||
|
|
|
||
|
|
BillingCheckoutData {
|
||
|
|
Id string `json:"id"`
|
||
|
|
SessionId string `json:"session_id"`
|
||
|
|
Url string `json:"url"`
|
||
|
|
ExpiresAt int64 `json:"expires_at"`
|
||
|
|
Status string `json:"status,optional"`
|
||
|
|
PaymentStatus string `json:"payment_status,optional"`
|
||
|
|
FulfillmentStatus string `json:"fulfillment_status,optional"`
|
||
|
|
PlanId string `json:"plan_id,optional"`
|
||
|
|
}
|
||
|
|
|
||
|
|
BillingCheckoutGetReq {
|
||
|
|
Id string `path:"id"`
|
||
|
|
}
|
||
|
|
|
||
|
|
BillingSubscriptionData {
|
||
|
|
PlanId string `json:"plan_id"`
|
||
|
|
PaidPlanId string `json:"paid_plan_id,optional"`
|
||
|
|
Status string `json:"status"`
|
||
|
|
CustomerId string `json:"customer_id,optional"`
|
||
|
|
SubscriptionId string `json:"subscription_id,optional"`
|
||
|
|
CurrentPeriodStart int64 `json:"current_period_start,optional"`
|
||
|
|
CurrentPeriodEnd int64 `json:"current_period_end,optional"`
|
||
|
|
CancelAtPeriodEnd bool `json:"cancel_at_period_end"`
|
||
|
|
AdminOverride bool `json:"admin_override"`
|
||
|
|
}
|
||
|
|
|
||
|
|
BillingPortalData {
|
||
|
|
Url string `json:"url"`
|
||
|
|
}
|
||
|
|
)
|
||
|
|
|
||
|
|
@server (
|
||
|
|
jwt: Auth
|
||
|
|
group: billing
|
||
|
|
prefix: /api/v1/billing
|
||
|
|
middleware: AuthJWT
|
||
|
|
)
|
||
|
|
service gateway {
|
||
|
|
@handler CreateBillingCheckoutSession
|
||
|
|
post /checkout-sessions (BillingCheckoutCreateReq) returns (BillingCheckoutData)
|
||
|
|
|
||
|
|
@handler GetBillingCheckoutSession
|
||
|
|
get /checkout-sessions/:id (BillingCheckoutGetReq) returns (BillingCheckoutData)
|
||
|
|
|
||
|
|
@handler GetBillingSubscription
|
||
|
|
get /subscription returns (BillingSubscriptionData)
|
||
|
|
|
||
|
|
@handler CreateBillingPortalSession
|
||
|
|
post /portal-sessions returns (BillingPortalData)
|
||
|
|
}
|
||
|
|
|
||
|
|
@server (
|
||
|
|
group: billing
|
||
|
|
prefix: /api/v1/billing
|
||
|
|
middleware: StripeRawBody
|
||
|
|
)
|
||
|
|
service gateway {
|
||
|
|
@handler HandleStripeWebhook
|
||
|
|
post /stripe/webhook
|
||
|
|
}
|