Back to arky.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';
  firstName?: string;
  lastName?: string;
}

interface ConfirmUserParams {
  token: string;
}

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

Profile Management

interface UpdateAccountProfileParams {
  phoneNumbers?: string[];
  addresses?: any[];
  apiTokens?: any[] | null;
}

Password Management

interface ForgotPasswordParams {
  email: string;
}

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

interface ResetPasswordParams {
  oldPassword: string;
  newPassword: string;
}

Business API Types

interface CreateBusinessParams {
  name: string;
  slug?: string;
  description?: string;
  settings?: Partial<BusinessSettings>;
  parentId?: string;
}

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

interface GetBusinessParams {
  businessId: string;
}

interface GetBusinessesParams extends PaginationParams {
  search?: string;
}

interface InviteUserParams {
  businessId: string;
  email: string;
  roleId: string;
}

interface HandleInvitationParams {
  businessId: string;
  token: string;
  accept: boolean;
}

E-shop API Types

Products

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

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

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

interface GetProductsParams {
  ids?: string[];
  taxonomyQuery?: any[];
  status?: string;
  statuses?: string[];
  query?: string;
  limit?: number;
  cursor?: string;
  sortField?: string;
  sortDirection?: string;
  createdAtFrom?: number | null;
  createdAtTo?: number | null;
}

Orders

interface EshopItem {
  productId: string;
  variantId: string;
  quantity: number;
}

interface GetQuoteParams {
  items: EshopItem[];
  paymentMethodId?: string;
  shippingMethodId?: string;
  promoCode?: string;
  blocks?: any[];
  location?: ZoneLocation;
}

interface OrderCheckoutParams {
  items: EshopItem[];
  paymentMethodId?: string;
  blocks?: any[];
  shippingMethodId: string;
  promoCodeId?: string;
  shippingAddress?: Address;
  billingAddress?: Address;
}

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

interface GetOrdersParams {
  statuses?: string[] | null;
  productIds?: string[];
  query?: string | null;
  limit?: number | null;
  cursor?: string | null;
  sortField?: string | null;
  sortDirection?: string | null;
  createdAtFrom?: string | null;
  createdAtTo?: 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 {
  businessId?: string;
  key: string;
  parentId?: string | null;
  blocks?: any[];
  filters?: any[];
  slug?: Record<string, string>;
  audienceIds?: string[];
  status?: string;       // 'active' | 'archived'
}

interface UpdateNodeParams {
  id: string;
  businessId?: string;
  key?: string;
  parentId?: string | null;
  blocks?: any[];
  filters?: any[];
  slug?: Record<string, string>;
  audienceIds?: string[];
  status?: string;
}

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

interface GetNodesParams {
  businessId?: string;
  parentId?: string;
  ids?: string[];
  query?: string;
  type?: string;
  key?: string;
  statuses?: string[];
  limit?: number;
  cursor?: string;
  sortField?: string;
  sortDirection?: string;
  createdAtFrom?: string;
  createdAtTo?: string;
}

Forms

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

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

interface SubmitFormParams {
  formId: string;
  businessId?: string;
  fields: any[];         // FormField[]
}

Customers

interface CreateCustomerParams {
  businessId?: string;
  email: string;
  blocks?: Block[];
  taxonomies?: TaxonomyEntry[];
}

interface UpdateCustomerParams {
  id: string;
  businessId?: string;
  emails?: string[];
  blocks?: Block[];
  taxonomies?: TaxonomyEntry[];
  status?: 'active' | 'archived';
}

Audiences

Audiences live under sdk.crm.audiences.*.

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

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

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

interface SubscribeAudienceParams {
  id: string;
  customerId: string;
  priceId?: string;
  successUrl?: string;
  cancelUrl?: string;
  confirmUrl?: string;
}

Booking API Types

Services

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

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

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

interface GetServicesParams {
  businessId?: string;
  providerId?: string;
  taxonomyQuery?: any[];
  ids?: string[];
  query?: string;
  statuses?: string[];
  limit?: number;
  cursor?: string;
  sortField?: string;
  sortDirection?: string;
}

Providers

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

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

interface GetProvidersParams {
  businessId?: string;
  serviceId?: string;
  taxonomyQuery?: any[];
  ids?: string[];
  query?: string | null;
  statuses?: string[] | null;
  limit?: number;
  cursor?: string;
  sortField?: string | null;
  sortDirection?: string | null;
  createdAtFrom?: string | null;
  createdAtTo?: string | null;
}

Service Providers

interface CreateServiceProviderParams {
  businessId?: string;
  serviceId: string;
  providerId: string;
  workingDays: WorkingDay[];
  specificDates: SpecificDate[];
  prices?: any[];
  durations?: any[];
  slotInterval: number;
}

interface UpdateServiceProviderParams {
  businessId?: string;
  id: string;
  workingDays: WorkingDay[];
  specificDates: SpecificDate[];
  prices?: any[];
  durations?: any[];
  slotInterval: number;
}

Availability

interface GetAvailabilityParams {
  businessId?: string;
  serviceId: string;
  month: string;          // YYYY-MM
  providerId?: string;
}

Bookings

interface CreateBookingParams {
  businessId?: string;
  [key: string]: any;
}

interface UpdateBookingParams {
  id: string;
  status?: string;
  forms?: any;
  parts?: any;
  payment?: any | null;
  [key: string]: any;
}

interface GetBookingParams {
  id: string;
  businessId?: string;
}

interface SearchBookingsParams {
  businessId?: string;
  query?: string;
  serviceIds?: string[];
  providerIds?: string[];
  from?: number;
  to?: number;
  status?: string;
  limit?: number;
  cursor?: string;
  sortField?: string;
  sortOrder?: string;
}

interface BookingQuoteItem {
  serviceId: string;
  providerId: string;
  slots: SlotRange[];
}

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

interface GetBookingQuoteParams {
  businessId?: string;
  items: BookingQuoteItem[];
  paymentMethodId?: string;
  promoCode?: string;
  location?: ZoneLocation;
}

interface BookingCheckoutParams {
  businessId?: string;
  items: any[];
  paymentMethodId?: string;
  forms?: any[];
  promoCodeId?: string;
  location?: ZoneLocation;
}

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>;
}