API Reference
SDK Types
Shared TypeScript type definitions for API responses.
SDK Types
Shared TypeScript type definitions for working with the API responses.
SDK Types
cURL
# cURL doesn't use type definitions, but here's the expected JSON structure:
# ============================================
# Plan Types
# ============================================
# Plan object structure:
# {
# "id": "string",
# "segnoId": "string",
# "referenceCode": "string",
# "lookup_key": "string | null",
# "name": "string",
# "price": "string",
# "currencyCode": "TRY" | "USD" | "EUR",
# "paymentInterval": "DAILY" | "WEEKLY" | "MONTHLY" | "YEARLY",
# "paymentIntervalCount": number,
# "trialPeriodDays": number,
# "unit": "string | null",
# "productReference": "string | null",
# "planType": "PHYSICAL" | "DIGITAL",
# "shippingPrice": "string | null",
# "gracePeriodDays": "number | null"
# }
# ============================================
# Checkout Types
# ============================================
# POST /checkout/initialize request:
# {
# "pricingPlanReferenceCode": "string" (or "segno-plan-id", one required),
# "segno-plan-id": "string" (or pricingPlanReferenceCode, one required),
# "callbackUrl": "string" (required),
# "name": "string" (required),
# "surname": "string" (required),
# "email": "string" (required),
# "gsmNumber": "string" (required),
# "identityNumber": "string" (required),
# "subscriptionInitialStatus": "ACTIVE" | "PENDING" (optional),
# "billingAddress": { ... } (optional),
# "shippingAddress": { ... } (optional)
# }
# Checkout callback URL query parameters:
# Success: ?status=success&subscriptionReference=...&customerReference=...&planReference=...&segnoSubscriptionId=...&segnoCustomerId=...
# Error: ?status=error&errorCode=...&errorMessage=...
# ============================================
# Subscriber Types
# ============================================
# GET /subscribers query params:
# ?iyzico-subscriber-code=... OR ?segno-id=...
# GET /subscribers response:
# {
# "status": "success" | "failure",
# "data": {
# "id": "string",
# "segnoId": "string",
# "iyzicoReference": "string",
# "customerReference": "string",
# "planReference": "string",
# "subscriptionStatus": "string",
# "createdAt": "string",
# "customer": { "id", "name", "surname", "email", "gsmNumber" } | null,
# "latestInvoice": {
# "id": "string",
# "segnoId": "string",
# "invoiceNumber": "string",
# "status": "string",
# "amount": "string",
# "currency": "string",
# "date": "string",
# "pdfUrl": "string | null"
# } | null
# }
# }
#
# GET /subscribers/invoices query params:
# ?subscriber-id=... OR ?segno-id=...
# &limit=10
# &starting_after=<invoice_uuid> (optional)
# &ending_before=<invoice_uuid> (optional)
#
# GET /subscribers/invoices response:
# {
# "status": "success",
# "object": "list",
# "url": "/subscribers/invoices",
# "has_more": boolean,
# "limit": number,
# "subscriber": { "id", "segnoId", "subscriberId" },
# "data": [
# {
# "id": "string",
# "segnoId": "string",
# "invoiceNumber": "string",
# "status": "string",
# "amount": "string",
# "currency": "string",
# "date": "string",
# "pdfUrl": "string | null",
# "signedPdf": {
# "provider": "parasut",
# "eArchiveId": "string",
# "url": "string",
# "expiresAt": "string | null",
# "signedAt": "string"
# } | null,
# "pdfStatus": "ready" | "processing" | "unavailable" | "error",
# "pdfMessage": "string | null"
# }
# ]
# }
# PUT /subscribers request (upgrade plan):
# Option 1: iyzico codes (syncs with iyzico)
# {
# "iyzico-subscriber-reference-code": "string",
# "iyzico-plan-reference-code": "string",
# "resetRecurrenceCount": boolean (optional),
# "useTrial": boolean (optional),
# "upgradePeriod": "NOW" | "NEXT_PERIOD" (optional)
# }
# OR use segno IDs (database only):
# {
# "segno-subscriber-id": "string",
# "segno-plan-id": "string"
# }
# DELETE /subscribers request (cancel):
# {
# "iyzico-subscriber-reference-code": "string" OR "segno-id": "string" (one required)
# }
# OR use segno ID (database only):
# {
# "segno-id": "string"
# }
#
# POST /subscribers/undo-cancel request (undo cancel):
# {
# "iyzico-subscriber-reference-code": "string" OR "segno-id": "string" (one required)
# }
# OR use segno ID (database only):
# {
# "segno-id": "string"
# }TypeScript
// ============================================
// Cadence API - TypeScript Types
// ============================================
// Address structure for billing/shipping
interface Address {
contactName: string;
country: string;
city: string;
address: string;
zipCode?: string;
}
// ============================================
// Plans Types
// ============================================
// Plan object returned from /plans/list
interface Plan {
id: string;
segnoId: string;
referenceCode: string;
lookup_key: string | null;
name: string;
price: string;
currencyCode: 'TRY' | 'USD' | 'EUR';
paymentInterval: 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY';
paymentIntervalCount: number;
trialPeriodDays: number;
unit: string | null;
productReference: string | null;
planType: 'PHYSICAL' | 'DIGITAL';
shippingPrice: string | null;
gracePeriodDays: number | null;
}
// Response from GET /plans/list
interface PlansListResponse {
status: 'success';
data: Plan[];
total: number;
page: number;
pageSize: number;
totalPages: number;
}
// ============================================
// Checkout Types
// ============================================
// Request body for POST /checkout/initialize
interface CheckoutInitializeRequest {
pricingPlanReferenceCode?: string;
'segno-plan-id'?: string;
callbackUrl: string;
name: string;
surname: string;
email: string;
gsmNumber: string;
identityNumber: string;
subscriptionInitialStatus?: 'ACTIVE' | 'PENDING';
billingAddress?: Address;
shippingAddress?: Address;
}
// Response from POST /checkout/initialize
interface CheckoutInitializeResponse {
status: 'success' | 'failure';
checkoutFormContent?: string;
token?: string;
tokenExpireTime?: number;
paymentPageUrl?: string;
clientReferenceId?: string;
segnoPlanId?: string | null;
errorCode?: string;
errorMessage?: string;
}
// Callback URL query parameters (redirect after checkout)
// Success: ?status=success&subscriptionReference=...&customerReference=...&planReference=...&segnoSubscriptionId=...&segnoCustomerId=...
// Error: ?status=error&errorCode=...&errorMessage=...
interface CheckoutCallbackSuccessParams {
status: 'success';
subscriptionReference: string;
customerReference: string;
planReference: string;
segnoSubscriptionId: string;
segnoCustomerId: string;
}
interface CheckoutCallbackErrorParams {
status: 'error';
errorCode: string;
errorMessage: string;
}
type CheckoutCallbackParams = CheckoutCallbackSuccessParams | CheckoutCallbackErrorParams;
// ============================================
// Subscriber Types
// ============================================
// Customer info embedded in subscriber responses
interface CustomerInfo {
id: string;
name: string;
surname: string;
email: string;
gsmNumber: string | null;
}
interface SubscriberLatestInvoice {
id: string;
segnoId: string;
invoiceNumber: string;
status: string;
amount: string;
currency: string;
date: string;
pdfUrl: string | null;
}
// Subscriber data returned from API
interface Subscriber {
id: string;
segnoId: string;
iyzicoReference: string;
customerReference: string;
planReference: string;
subscriptionStatus: string;
createdAt: string;
customer: CustomerInfo | null;
latestInvoice: SubscriberLatestInvoice | null;
}
// Query params for GET /subscribers
interface GetSubscriberQuery {
'iyzico-subscriber-code'?: string; // Search by iyzico reference
'segno-id'?: string; // Search by internal ID
}
// Response from GET /subscribers
interface GetSubscriberResponse {
status: 'success' | 'failure';
data?: Subscriber;
error?: string;
message?: string;
}
// Query params for GET /subscribers/invoices
interface ListSubscriberInvoicesQuery {
'subscriber-id'?: string;
'segno-id'?: string;
limit?: number;
starting_after?: string; // invoice UUID cursor
ending_before?: string; // invoice UUID cursor
}
interface SubscriberInvoiceListItem {
id: string;
segnoId: string;
invoiceNumber: string;
status: string;
amount: string;
currency: string;
date: string;
pdfUrl: string | null;
signedPdf: {
provider: 'parasut';
eArchiveId: string;
url: string;
expiresAt: string | null;
signedAt: string;
} | null;
pdfStatus: 'ready' | 'processing' | 'unavailable' | 'error';
pdfMessage: string | null;
}
// Response from GET /subscribers/invoices
interface ListSubscriberInvoicesResponse {
status: 'success';
object: 'list';
url: '/subscribers/invoices';
has_more: boolean;
limit: number;
starting_after: string | null;
ending_before: string | null;
subscriber: {
id: string;
segnoId: string;
subscriberId: string;
};
data: SubscriberInvoiceListItem[];
}
// Request body for PUT /subscribers (update/upgrade plan)
interface UpdateSubscriberRequest {
// Option 1: Use iyzico codes (syncs with iyzico)
'iyzico-subscriber-reference-code'?: string;
'iyzico-plan-reference-code'?: string;
// Option 2: Use segno IDs (database only, no iyzico sync)
'segno-subscriber-id'?: string;
'segno-plan-id'?: string;
// Upgrade options (only for iyzico sync)
resetRecurrenceCount?: boolean;
useTrial?: boolean;
upgradePeriod?: 'NOW' | 'NEXT_PERIOD';
}
// Response from PUT /subscribers
interface UpdateSubscriberResponse {
status: 'success' | 'failure';
message?: string;
data?: {
id: string;
segnoId?: string;
iyzicoReference: string;
newPlanReference: string;
newPlanSegnoId?: string;
syncedWithIyzico: boolean;
iyzicoResponse?: unknown;
};
error?: string;
}
// Request body for DELETE /subscribers (cancel subscription)
interface CancelSubscriberRequest {
// Option 1: Use iyzico code (schedules cancellation at period end)
'iyzico-subscriber-reference-code'?: string;
// Option 2: Use segno ID (database only)
'segno-id'?: string;
}
// Response from DELETE /subscribers
interface CancelSubscriberResponse {
status: 'success' | 'failure';
message?: string;
data?: {
id: string;
segnoId?: string;
iyzicoReference: string;
status: 'ACTIVE';
cancelAtPeriodEnd: boolean;
cancelledAt: string;
accessUntil: string | null;
syncedWithIyzico: boolean;
};
error?: string;
}
// Request body for POST /subscribers/undo-cancel (undo cancellation)
interface UndoCancelSubscriberRequest {
// Option 1: Use iyzico code (undo cancellation)
'iyzico-subscriber-reference-code'?: string;
// Option 2: Use segno ID (database only)
'segno-id'?: string;
}
// Response from POST /subscribers/undo-cancel
interface UndoCancelSubscriberResponse {
status: 'success' | 'failure';
message?: string;
data?: {
id: string;
segnoId?: string;
iyzicoReference: string;
status: 'ACTIVE';
cancelAtPeriodEnd: boolean;
cancelledAt: string | null;
accessUntil: string | null;
syncedWithIyzico: boolean;
};
error?: string;
}Node.js
// ============================================
// Cadence API - Node.js Types (JSDoc)
// ============================================
/**
* @typedef {Object} Address
* @property {string} contactName
* @property {string} country
* @property {string} city
* @property {string} address
* @property {string} [zipCode]
*/
/**
* @typedef {Object} Plan
* @property {string} id
* @property {string} segnoId
* @property {string} referenceCode
* @property {string|null} lookup_key
* @property {string} name
* @property {string} price
* @property {'TRY'|'USD'|'EUR'} currencyCode
* @property {'DAILY'|'WEEKLY'|'MONTHLY'|'YEARLY'} paymentInterval
* @property {number} paymentIntervalCount
* @property {number} trialPeriodDays
* @property {string|null} unit
* @property {string|null} productReference
* @property {'PHYSICAL'|'DIGITAL'} planType
* @property {string|null} shippingPrice
* @property {number|null} gracePeriodDays
*/
/**
* @typedef {Object} PlansListResponse
* @property {Plan[]} data
* @property {number} total
* @property {number} page
* @property {number} pageSize
* @property {number} totalPages
*/
/**
* @typedef {Object} CheckoutInitializeRequest
* @property {string} [pricingPlanReferenceCode] - Or segno-plan-id (one required)
* @property {string} [segno-plan-id] - Or pricingPlanReferenceCode (one required)
* @property {string} callbackUrl
* @property {string} name
* @property {string} surname
* @property {string} email
* @property {string} gsmNumber
* @property {string} identityNumber
* @property {'ACTIVE'|'PENDING'} [subscriptionInitialStatus]
* @property {Address} [billingAddress]
* @property {Address} [shippingAddress]
*/
/**
* @typedef {Object} CheckoutInitializeResponse
* @property {'success'|'failure'} status
* @property {string} [checkoutFormContent]
* @property {string} [token]
* @property {number} [tokenExpireTime]
* @property {string} [clientReferenceId]
* @property {string} [errorCode]
* @property {string} [errorMessage]
*/
// Checkout Callback Types
/**
* Callback URL query params on success:
* ?status=success&subscriptionReference=...&customerReference=...&planReference=...&segnoSubscriptionId=...&segnoCustomerId=...
* @typedef {Object} CheckoutCallbackSuccessParams
* @property {'success'} status
* @property {string} subscriptionReference
* @property {string} customerReference
* @property {string} planReference
* @property {string} segnoSubscriptionId
* @property {string} segnoCustomerId
*/
/**
* Callback URL query params on error:
* ?status=error&errorCode=...&errorMessage=...
* @typedef {Object} CheckoutCallbackErrorParams
* @property {'error'} status
* @property {string} errorCode
* @property {string} errorMessage
*/
// Subscriber Types
/**
* @typedef {Object} CustomerInfo
* @property {string} id
* @property {string} name
* @property {string} surname
* @property {string} email
* @property {string|null} gsmNumber
*/
/**
* @typedef {Object} Subscriber
* @property {string} id
* @property {string} segnoId
* @property {string} iyzicoReference
* @property {string} customerReference
* @property {string} planReference
* @property {string} subscriptionStatus
* @property {string} createdAt
* @property {CustomerInfo|null} customer
*/
/**
* @typedef {Object} GetSubscriberResponse
* @property {'success'|'failure'} status
* @property {Subscriber} [data]
* @property {string} [error]
* @property {string} [message]
*/
/**
* @typedef {Object} UpdateSubscriberRequest
* @property {string} [iyzico-subscriber-reference-code]
* @property {string} [iyzico-plan-reference-code]
* @property {string} [segno-subscriber-id]
* @property {string} [segno-plan-id]
* @property {boolean} [resetRecurrenceCount]
* @property {boolean} [useTrial]
* @property {'NOW'|'NEXT_PERIOD'} [upgradePeriod]
*/
/**
* @typedef {Object} CancelSubscriberRequest
* @property {string} [iyzico-subscriber-reference-code]
* @property {string} [segno-id]
*/
/**
* @typedef {Object} UndoCancelSubscriberRequest
* @property {string} [iyzico-subscriber-reference-code]
* @property {string} [segno-id]
*/PHP
<?php
// ============================================
// Cadence API - PHP Types
// ============================================
class Address {
public string $contactName;
public string $country;
public string $city;
public string $address;
public ?string $zipCode = null;
}
class Plan {
public string $id;
public string $segnoId;
public string $referenceCode;
public ?string $lookup_key;
public string $name;
public string $price;
public string $currencyCode; // 'TRY' | 'USD' | 'EUR'
public string $paymentInterval; // 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY'
public int $paymentIntervalCount;
public int $trialPeriodDays;
public ?string $unit;
public ?string $productReference;
public string $planType; // 'PHYSICAL' | 'DIGITAL'
public ?string $shippingPrice;
public ?int $gracePeriodDays;
}
class PlansListResponse {
/** @var Plan[] */
public array $data;
public int $total;
public int $page;
public int $pageSize;
public int $totalPages;
}
class CheckoutInitializeRequest {
public ?string $pricingPlanReferenceCode = null; // Or segno-plan-id (one required)
public ?string $segnoPlanId = null; // JSON: "segno-plan-id"
public string $callbackUrl;
public string $name;
public string $surname;
public string $email;
public string $gsmNumber;
public string $identityNumber;
public ?string $subscriptionInitialStatus = null; // 'ACTIVE' | 'PENDING'
public ?Address $billingAddress = null;
public ?Address $shippingAddress = null;
}
class CheckoutInitializeResponse {
public string $status; // 'success' | 'failure'
public ?string $checkoutFormContent = null;
public ?string $token = null;
public ?int $tokenExpireTime = null;
public ?string $paymentPageUrl = null;
public ?string $clientReferenceId = null;
public ?string $segnoPlanId = null;
public ?string $errorCode = null;
public ?string $errorMessage = null;
}
// Checkout Callback params
class CheckoutCallbackSuccessParams {
public string $status = 'success';
public string $subscriptionReference;
public string $customerReference;
public string $planReference;
public string $segnoSubscriptionId;
public string $segnoCustomerId;
}
class CheckoutCallbackErrorParams {
public string $status = 'error';
public string $errorCode;
public string $errorMessage;
}
// Subscriber Types
class CustomerInfo {
public string $id;
public string $name;
public string $surname;
public string $email;
public ?string $gsmNumber = null;
}
class Subscriber {
public string $id;
public string $segnoId;
public string $iyzicoReference;
public string $customerReference;
public string $planReference;
public string $subscriptionStatus;
public string $createdAt;
public ?CustomerInfo $customer = null;
}
class GetSubscriberResponse {
public string $status; // 'success' | 'failure'
public ?Subscriber $data = null;
public ?string $error = null;
public ?string $message = null;
}
class UpdateSubscriberRequest {
public ?string $iyzicoSubscriberReferenceCode = null;
public ?string $iyzicoPlanReferenceCode = null;
public ?string $segnoSubscriberId = null;
public ?string $segnoPlanId = null;
public ?bool $resetRecurrenceCount = null;
public ?bool $useTrial = null;
public ?string $upgradePeriod = null; // 'NOW' | 'NEXT_PERIOD'
}
class CancelSubscriberRequest {
public ?string $iyzicoSubscriberReferenceCode = null;
public ?string $segnoId = null;
}
class UndoCancelSubscriberRequest {
public ?string $iyzicoSubscriberReferenceCode = null;
public ?string $segnoId = null;
}Go
package cadence
// ============================================
// Cadence API - Go Types
// ============================================
type Address struct {
ContactName string `json:"contactName"`
Country string `json:"country"`
City string `json:"city"`
Address string `json:"address"`
ZipCode *string `json:"zipCode,omitempty"`
}
type Plan struct {
ID string `json:"id"`
SegnoID string `json:"segnoId"`
ReferenceCode string `json:"referenceCode"`
LookupKey *string `json:"lookup_key"`
Name string `json:"name"`
Price string `json:"price"`
CurrencyCode string `json:"currencyCode"` // "TRY" | "USD" | "EUR"
PaymentInterval string `json:"paymentInterval"` // "DAILY" | "WEEKLY" | "MONTHLY" | "YEARLY"
PaymentIntervalCount int `json:"paymentIntervalCount"`
TrialPeriodDays int `json:"trialPeriodDays"`
Unit *string `json:"unit"`
ProductReference *string `json:"productReference"`
PlanType string `json:"planType"` // "PHYSICAL" | "DIGITAL"
ShippingPrice *string `json:"shippingPrice"`
GracePeriodDays *int `json:"gracePeriodDays"`
}
type PlansListResponse struct {
Status string `json:"status"`
Data []Plan `json:"data"`
Total int `json:"total"`
Page int `json:"page"`
PageSize int `json:"pageSize"`
TotalPages int `json:"totalPages"`
}
type CheckoutInitializeRequest struct {
PricingPlanReferenceCode *string `json:"pricingPlanReferenceCode,omitempty"`
SegnoPlanID *string `json:"segno-plan-id,omitempty"`
CallbackUrl string `json:"callbackUrl"`
Name string `json:"name"`
Surname string `json:"surname"`
Email string `json:"email"`
GsmNumber string `json:"gsmNumber"`
IdentityNumber string `json:"identityNumber"`
SubscriptionInitialStatus *string `json:"subscriptionInitialStatus,omitempty"`
BillingAddress *Address `json:"billingAddress,omitempty"`
ShippingAddress *Address `json:"shippingAddress,omitempty"`
}
type CheckoutInitializeResponse struct {
Status string `json:"status"`
CheckoutFormContent *string `json:"checkoutFormContent,omitempty"`
Token *string `json:"token,omitempty"`
TokenExpireTime *int `json:"tokenExpireTime,omitempty"`
PaymentPageUrl *string `json:"paymentPageUrl,omitempty"`
ClientReferenceId *string `json:"clientReferenceId,omitempty"`
SegnoPlanId *string `json:"segnoPlanId,omitempty"`
ErrorCode *string `json:"errorCode,omitempty"`
ErrorMessage *string `json:"errorMessage,omitempty"`
}
// Checkout Callback Types
type CheckoutCallbackSuccessParams struct {
Status string `json:"status"`
SubscriptionReference string `json:"subscriptionReference"`
CustomerReference string `json:"customerReference"`
PlanReference string `json:"planReference"`
SegnoSubscriptionId string `json:"segnoSubscriptionId"`
SegnoCustomerId string `json:"segnoCustomerId"`
}
type CheckoutCallbackErrorParams struct {
Status string `json:"status"`
ErrorCode string `json:"errorCode"`
ErrorMessage string `json:"errorMessage"`
}
// Subscriber Types
type CustomerInfo struct {
ID string `json:"id"`
Name string `json:"name"`
Surname string `json:"surname"`
Email string `json:"email"`
GsmNumber *string `json:"gsmNumber"`
}
type Subscriber struct {
ID string `json:"id"`
SegnoID string `json:"segnoId"`
IyzicoReference string `json:"iyzicoReference"`
CustomerReference string `json:"customerReference"`
PlanReference string `json:"planReference"`
SubscriptionStatus string `json:"subscriptionStatus"`
CreatedAt string `json:"createdAt"`
Customer *CustomerInfo `json:"customer"`
}
type GetSubscriberResponse struct {
Status string `json:"status"`
Data *Subscriber `json:"data,omitempty"`
Error *string `json:"error,omitempty"`
Message *string `json:"message,omitempty"`
}
type UpdateSubscriberRequest struct {
IyzicoSubscriberReferenceCode *string `json:"iyzico-subscriber-reference-code,omitempty"`
IyzicoPlanReferenceCode *string `json:"iyzico-plan-reference-code,omitempty"`
SegnoSubscriberId *string `json:"segno-subscriber-id,omitempty"`
SegnoPlanId *string `json:"segno-plan-id,omitempty"`
ResetRecurrenceCount *bool `json:"resetRecurrenceCount,omitempty"`
UseTrial *bool `json:"useTrial,omitempty"`
UpgradePeriod *string `json:"upgradePeriod,omitempty"`
}
type CancelSubscriberRequest struct {
IyzicoSubscriberReferenceCode *string `json:"iyzico-subscriber-reference-code,omitempty"`
SegnoId *string `json:"segno-id,omitempty"`
}
type UndoCancelSubscriberRequest struct {
IyzicoSubscriberReferenceCode *string `json:"iyzico-subscriber-reference-code,omitempty"`
SegnoId *string `json:"segno-id,omitempty"`
}Ruby
# ============================================
# Cadence API - Ruby Types (Sorbet)
# ============================================
# typed: strict
extend T::Sig
class Address < T::Struct
const :contact_name, String
const :country, String
const :city, String
const :address, String
const :zip_code, T.nilable(String)
end
class Plan < T::Struct
const :id, String
const :segno_id, String
const :reference_code, String
const :lookup_key, T.nilable(String)
const :name, String
const :price, String
const :currency_code, T.any(String) # 'TRY' | 'USD' | 'EUR'
const :payment_interval, T.any(String) # 'DAILY' | 'WEEKLY' | 'MONTHLY' | 'YEARLY'
const :payment_interval_count, Integer
const :trial_period_days, Integer
const :unit, T.nilable(String)
const :product_reference, T.nilable(String)
const :plan_type, String # 'PHYSICAL' | 'DIGITAL'
const :shipping_price, T.nilable(String)
const :grace_period_days, T.nilable(Integer)
end
class PlansListResponse < T::Struct
const :status, String
const :data, T::Array[Plan]
const :total, Integer
const :page, Integer
const :page_size, Integer
const :total_pages, Integer
end
class CheckoutInitializeRequest < T::Struct
const :pricing_plan_reference_code, T.nilable(String) # Or segno_plan_id (one required)
const :segno_plan_id, T.nilable(String) # JSON: "segno-plan-id"
const :callback_url, String
const :name, String
const :surname, String
const :email, String
const :gsm_number, String
const :identity_number, String
const :subscription_initial_status, T.nilable(String)
const :billing_address, T.nilable(Address)
const :shipping_address, T.nilable(Address)
end
class CheckoutInitializeResponse < T::Struct
const :status, String # 'success' | 'failure'
const :checkout_form_content, T.nilable(String)
const :token, T.nilable(String)
const :token_expire_time, T.nilable(Integer)
const :payment_page_url, T.nilable(String)
const :client_reference_id, T.nilable(String)
const :segno_plan_id, T.nilable(String)
const :error_code, T.nilable(String)
const :error_message, T.nilable(String)
end
# Checkout Callback Types
class CheckoutCallbackSuccessParams < T::Struct
const :status, String # 'success'
const :subscription_reference, String
const :customer_reference, String
const :plan_reference, String
const :segno_subscription_id, String
const :segno_customer_id, String
end
class CheckoutCallbackErrorParams < T::Struct
const :status, String # 'error'
const :error_code, String
const :error_message, String
end
# Subscriber Types
class CustomerInfo < T::Struct
const :id, String
const :name, String
const :surname, String
const :email, String
const :gsm_number, T.nilable(String)
end
class Subscriber < T::Struct
const :id, String
const :segno_id, String
const :iyzico_reference, String
const :customer_reference, String
const :plan_reference, String
const :subscription_status, String
const :created_at, String
const :customer, T.nilable(CustomerInfo)
end
class GetSubscriberResponse < T::Struct
const :status, String
const :data, T.nilable(Subscriber)
const :error, T.nilable(String)
const :message, T.nilable(String)
end
class UpdateSubscriberRequest < T::Struct
const :iyzico_subscriber_reference_code, T.nilable(String)
const :iyzico_plan_reference_code, T.nilable(String)
const :segno_subscriber_id, T.nilable(String)
const :segno_plan_id, T.nilable(String)
const :reset_recurrence_count, T.nilable(T::Boolean)
const :use_trial, T.nilable(T::Boolean)
const :upgrade_period, T.nilable(String)
end
class CancelSubscriberRequest < T::Struct
const :iyzico_subscriber_reference_code, T.nilable(String)
const :segno_id, T.nilable(String)
end
class UndoCancelSubscriberRequest < T::Struct
const :iyzico_subscriber_reference_code, T.nilable(String)
const :segno_id, T.nilable(String)
endPython
# ============================================
# Cadence API - Python Types
# ============================================
from dataclasses import dataclass
from typing import List, Optional, Literal
from enum import Enum
class CurrencyCode(Enum):
TRY = "TRY"
USD = "USD"
EUR = "EUR"
class PaymentInterval(Enum):
DAILY = "DAILY"
WEEKLY = "WEEKLY"
MONTHLY = "MONTHLY"
YEARLY = "YEARLY"
@dataclass
class Address:
contact_name: str
country: str
city: str
address: str
zip_code: Optional[str] = None
@dataclass
class Plan:
id: str
segno_id: str
reference_code: str
lookup_key: Optional[str]
name: str
price: str
currency_code: CurrencyCode
payment_interval: PaymentInterval
payment_interval_count: int
trial_period_days: int
unit: Optional[str]
product_reference: Optional[str]
plan_type: Literal["PHYSICAL", "DIGITAL"]
shipping_price: Optional[str]
grace_period_days: Optional[int]
@dataclass
class PlansListResponse:
status: Literal["success"]
data: List[Plan]
total: int
page: int
page_size: int
total_pages: int
@dataclass
class CheckoutInitializeRequest:
pricing_plan_reference_code: Optional[str] = None # Or segno_plan_id (one required)
segno_plan_id: Optional[str] = None # JSON: "segno-plan-id"
callback_url: str = ""
name: str = ""
surname: str = ""
email: str = ""
gsm_number: str = ""
identity_number: str = ""
subscription_initial_status: Optional[Literal["ACTIVE", "PENDING"]] = None
billing_address: Optional[Address] = None
shipping_address: Optional[Address] = None
@dataclass
class CheckoutInitializeResponse:
status: Literal["success", "failure"]
checkout_form_content: Optional[str] = None
token: Optional[str] = None
token_expire_time: Optional[int] = None
payment_page_url: Optional[str] = None
client_reference_id: Optional[str] = None
segno_plan_id: Optional[str] = None
error_code: Optional[str] = None
error_message: Optional[str] = None
# Checkout Callback Types
@dataclass
class CheckoutCallbackSuccessParams:
status: Literal["success"]
subscription_reference: str
customer_reference: str
plan_reference: str
segno_subscription_id: str
segno_customer_id: str
@dataclass
class CheckoutCallbackErrorParams:
status: Literal["error"]
error_code: str
error_message: str
# Subscriber Types
@dataclass
class CustomerInfo:
id: str
name: str
surname: str
email: str
gsm_number: Optional[str] = None
@dataclass
class Subscriber:
id: str
segno_id: str
iyzico_reference: str
customer_reference: str
plan_reference: str
subscription_status: str
created_at: str
customer: Optional[CustomerInfo] = None
@dataclass
class GetSubscriberResponse:
status: Literal["success", "failure"]
data: Optional[Subscriber] = None
error: Optional[str] = None
message: Optional[str] = None
@dataclass
class UpdateSubscriberRequest:
iyzico_subscriber_reference_code: Optional[str] = None
iyzico_plan_reference_code: Optional[str] = None
segno_subscriber_id: Optional[str] = None
segno_plan_id: Optional[str] = None
reset_recurrence_count: Optional[bool] = None
use_trial: Optional[bool] = None
upgrade_period: Optional[Literal["NOW", "NEXT_PERIOD"]] = None
@dataclass
class CancelSubscriberRequest:
iyzico_subscriber_reference_code: Optional[str] = None
segno_id: Optional[str] = None
@dataclass
class UndoCancelSubscriberRequest:
iyzico_subscriber_reference_code: Optional[str] = None
segno_id: Optional[str] = None