Back to arkyStore.io

API Types

API request and response type definitions

Type definitions for API requests and responses.

User API Types

Authentication

interface LoginUserParams {
  email?: string;
  password?: string;
  provider: 'EMAIL' | 'GOOGLE' | 'APPLE' | 'GUEST';
  code?: string;  // OAuth code
}

interface RegisterUserParams {
  email: string;
  password: string;
  provider: 'EMAIL';
  first_name?: string;
  last_name?: string;
}

interface ConfirmUserParams {
  token: string;
}

interface GetLoginUrlParams {
  provider: 'GOOGLE' | 'APPLE';
  redirect_url: string;
}

Profile Management

interface UpdateAccountProfileParams {
  phone_numbers?: string[];
  addresses?: any[];
  api_tokens?: any[] | null;
}

Password Management

interface ForgotPasswordParams {
  email: string;
}

interface ResetForgotPasswordParams {
  token: string;
  new_password: string;
}

interface ResetPasswordParams {
  old_password: string;
  new_password: string;
}

Store API Types

interface CreateStoreParams {
  name: string;
  slug?: string;
  description?: string;
  settings?: Partial<StoreSettings>;
  parent_id?: string;
}

interface UpdateStoreParams {
  id: string;
  name?: string;
  slug?: string;
  description?: string;
  logo?: string;
  settings?: Partial<StoreSettings>;
}

interface GetStoreParams {
  store_id: string;
}

interface GetStoresParams extends PaginationParams {
  search?: string;
}

interface AddMemberParams {
  store_id: string;
  email: string;
  role?: 'admin' | 'owner' | 'super';
}

E-shop API Types

Products

interface CreateProductParams {
  key: string;
  description?: string;
  audience_ids?: string[];
  blocks?: any[];
  taxonomies?: any[];
  variants?: any[];
  status?: Status;       // 'active' | 'archived'
  [key: string]: any;
}

interface UpdateProductParams {
  id: string;
  key?: string;
  description?: string;
  audience_ids?: string[];
  blocks?: any[];
  taxonomies?: any[];
  variants?: any[];
  status?: Status;
  [key: string]: any;
}

interface GetProductParams {
  id?: string;
  slug?: string;
}

interface GetProductsParams {
  ids?: string[];
  taxonomy_query?: any[];
  status?: string;
  statuses?: string[];
  query?: string;
  limit?: number;
  cursor?: string;
  sort_field?: string;
  sort_direction?: string;
  created_at_from?: number | null;
  created_at_to?: number | null;
}

Orders

interface EshopItem {
  product_id: string;
  variant_id: string;
  quantity: number;
}

interface GetQuoteParams {
  items: EshopItem[];
  payment_method_id?: string;
  shipping_method_id?: string;
  promo_code?: string;
  blocks?: any[];
  location?: ZoneLocation;
}

interface OrderCheckoutParams {
  items: EshopItem[];
  payment_method_id?: string;
  blocks?: any[];
  shipping_method_id: string;
  promo_code_id?: string;
  shipping_address?: Address;
  billing_address?: Address;
}

interface UpdateOrderParams {
  id: string;
  status: string;
  blocks: any[];
  items: any[];
  address?: any | null;
  billing_address?: any | null;
  payment?: any | null;
}

interface GetOrdersParams {
  statuses?: string[] | null;
  product_ids?: string[];
  query?: string | null;
  limit?: number | null;
  cursor?: string | null;
  sort_field?: string | null;
  sort_direction?: string | null;
  created_at_from?: string | null;
  created_at_to?: string | null;
}
Note

The current SDK still types OrderCheckoutParams.blocks as any[]. The server has since renamed this to forms, but the SDK type has not yet been regenerated — pass blocks until the next SDK release.

CMS API Types

interface CreateNodeParams {
  store_id?: string;
  key: string;
  parent_id?: string | null;
  blocks?: any[];
  filters?: any[];
  slug?: Record<string, string>;
  audience_ids?: string[];
  status?: string;       // 'active' | 'archived'
}

interface UpdateNodeParams {
  id: string;
  store_id?: string;
  key?: string;
  parent_id?: string | null;
  blocks?: any[];
  filters?: any[];
  slug?: Record<string, string>;
  audience_ids?: string[];
  status?: string;
}

interface GetNodeParams {
  id?: string;
  slug?: string;
  key?: string;
  store_id?: string;
}

interface GetNodesParams {
  store_id?: string;
  parent_id?: string;
  ids?: string[];
  query?: string;
  type?: string;
  key?: string;
  statuses?: string[];
  limit?: number;
  cursor?: string;
  sort_field?: string;
  sort_direction?: string;
  created_at_from?: string;
  created_at_to?: string;
}

Forms

interface CreateFormParams {
  store_id?: string;
  key: string;
  schema?: any[];        // FormSchema[]
}

interface UpdateFormParams {
  id: string;
  store_id?: string;
  key?: string;
  schema?: any[];
  status?: string;
}

interface SubmitFormParams {
  form_id: string;
  store_id?: string;
  fields: any[];         // FormField[]
}

Profiles

interface CreateProfileParams {
  store_id?: string;
  email: string;
  taxonomies?: TaxonomyEntry[];
}

interface UpdateProfileParams {
  id: string;
  store_id?: string;
  email?: string;
  taxonomies?: TaxonomyEntry[];
  status?: 'active' | 'archived';
}

Audiences

Audiences live under sdk.crm.audiences.*.

interface CreateAudienceParams {
  key: string;
  type?: AudienceType;
  confirm_template_id?: string;
}

interface UpdateAudienceParams {
  id: string;
  key?: string;
  status?: Status;
  confirm_template_id?: string;
}

interface GetAudiencesParams {
  ids?: string[];
  status?: string;
  query?: string;
  limit?: number;
  cursor?: string;
}

interface SubscribeAudienceParams {
  id: string;
  profile_id: string;
  price_id?: string;
  success_url?: string;
  cancel_url?: string;
  confirm_url?: string;
}

E-shop Scheduling API Types

Services

interface CreateServiceParams {
  store_id?: string;
  key: string;
  blocks?: any[];
  taxonomies?: any[];
  status?: Status;
  [key: string]: any;
}

interface UpdateServiceParams {
  id: string;
  store_id?: string;
  key?: string;
  blocks?: any[];
  taxonomies?: any[];
  status?: Status;
  [key: string]: any;
}

interface GetServiceParams {
  id?: string;
  slug?: string;
  store_id?: string;
}

interface GetServicesParams {
  store_id?: string;
  provider_id?: string;
  taxonomy_query?: any[];
  ids?: string[];
  query?: string;
  statuses?: string[];
  limit?: number;
  cursor?: string;
  sort_field?: string;
  sort_direction?: string;
}

Providers

interface CreateProviderParams {
  store_id?: string;
  key: string;
  audience_ids?: string[];
  blocks?: any[];
  taxonomies?: any[];
  status?: Status;
  [key: string]: any;
}

interface UpdateProviderParams {
  id: string;
  store_id?: string;
  key?: string;
  audience_ids?: string[];
  blocks?: any[];
  taxonomies?: any[];
  status?: Status;
  [key: string]: any;
}

interface GetProvidersParams {
  store_id?: string;
  service_id?: string;
  taxonomy_query?: any[];
  ids?: string[];
  query?: string | null;
  statuses?: string[] | null;
  limit?: number;
  cursor?: string;
  sort_field?: string | null;
  sort_direction?: string | null;
  created_at_from?: string | null;
  created_at_to?: string | null;
}

Service Providers

interface CreateServiceProviderParams {
  store_id?: string;
  service_id: string;
  provider_id: string;
  working_days: WorkingDay[];
  specific_dates: SpecificDate[];
  prices?: any[];
  durations?: any[];
  slot_interval: number;
}

interface UpdateServiceProviderParams {
  store_id?: string;
  id: string;
  working_days: WorkingDay[];
  specific_dates: SpecificDate[];
  prices?: any[];
  durations?: any[];
  slot_interval: number;
}

Availability

interface GetAvailabilityParams {
  store_id?: string;
  service_id: string;
  from: number;
  to: number;
  provider_id?: string;
}

Service Order Items

interface ServiceQuoteItemInput {
  type: 'service';
  service_id: string;
  provider_id: string;
  slots: SlotRange[];
}

interface SlotRange {
  from: number;
  to: number;
}

interface GetQuoteParams {
  store_id?: string;
  items: Array<ProductQuoteItemInput | ServiceQuoteItemInput>;
  payment_method_id?: string;
  promo_code?: string;
  shipping_method_id?: string;
  location?: ZoneLocation;
}

interface ServiceCheckoutItemInput extends ServiceQuoteItemInput {
  forms?: FormEntry[];
}

interface OrderCheckoutParams {
  store_id?: string;
  items: Array<ProductCheckoutItemInput | ServiceCheckoutItemInput>;
  payment_method_id?: string;
  forms?: any[];
  promo_code_id?: string;
  shipping_method_id?: string;
  shipping_address?: Address;
  location?: ZoneLocation;
}

interface GetAvailabilityParams {
  store_id?: string;
  service_id: string;
  provider_id?: string;
  from: number;
  to: number;
}

Database API Types

interface PutDataParams {
  key: string;
  value: unknown;
  ttl?: number;
}

interface ScanDataParams {
  key?: string;
  prefix?: string;
  cursor?: string;
  limit?: number;
}

interface DeleteDataParams {
  key: string;
}

interface RunScriptParams {
  script: string;
  input?: Record<string, unknown>;
}