thread-master/apps/backend/generate/api/billing.api

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
}