@joai/sdk 1.0.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -310,7 +310,7 @@ type TeamBrand = {
310
310
  fg?: string;
311
311
  label?: string;
312
312
  logo?: string;
313
- bankName?: string;
313
+ bankAccountHolder?: string;
314
314
  bankIban?: string;
315
315
  bankBic?: string;
316
316
  invoiceAddress?: string;
@@ -422,6 +422,7 @@ type JsonValue = string | number | boolean | null | JsonValue[] | {
422
422
  [key: string]: JsonValue;
423
423
  }; //#endregion
424
424
  //#region src/contact/types.d.ts
425
+ type ContactHealth = 'active' | 'lukewarm' | 'cold' | 'stale' | 'unknown';
425
426
  type Contact = {
426
427
  id: string;
427
428
  name: string;
@@ -439,6 +440,11 @@ type Contact = {
439
440
  userId: string | null;
440
441
  locale?: string | null;
441
442
  props?: Record<string, string> | null;
443
+ settings?: {
444
+ marketingOptOut?: boolean;
445
+ } | null;
446
+ lastActivityAt?: string | null;
447
+ health?: ContactHealth;
442
448
  };
443
449
  type ContactActivityType = 'note' | 'call' | 'meeting' | 'task' | 'update' | 'custom' | 'form' | 'loyalty';
444
450
  type ContactActivityAuthor = {
@@ -468,6 +474,9 @@ type ContactFormData = {
468
474
  tags?: string[] | null;
469
475
  locale?: string | null;
470
476
  props?: Record<string, string> | null;
477
+ settings?: {
478
+ marketingOptOut?: boolean;
479
+ };
471
480
  };
472
481
  type ContactCreatePayload = ContactFormData & {
473
482
  name: string;
@@ -504,7 +513,7 @@ type TranslatableValue = Partial<Record<WarpLocale, string>>;
504
513
  type OrderStatus = 'pending' | 'completed' | 'delivered' | 'canceled';
505
514
  type OrderSource = 'auto' | 'manual' | 'kiosk';
506
515
  type OrderType = 'order' | 'quote';
507
- type SubscriptionStatus = 'active' | 'canceled' | 'past_due';
516
+ type SubscriptionStatus = 'active' | 'canceled' | 'past_due' | 'pending';
508
517
  type SubscriptionInterval = 'weekly' | 'biweekly' | 'monthly' | 'quarterly' | 'yearly';
509
518
  type PricingModel = 'free' | 'one-time' | 'weekly' | 'biweekly' | 'monthly' | 'quarterly' | 'yearly' | 'per-run';
510
519
  type AppSubscription = {
@@ -711,6 +720,7 @@ type Order = {
711
720
  invoiceDate: string;
712
721
  meta: Record<string, JsonValue> | null;
713
722
  contactId: string | null;
723
+ contact?: Contact | null;
714
724
  source: OrderSource | null;
715
725
  context: OrderContext | null;
716
726
  paymentMode: string | null;
@@ -746,10 +756,14 @@ type Cart = {
746
756
  coupon: Coupon | null;
747
757
  couponDiscount: number;
748
758
  };
759
+ type CouponCondition = 'none' | 'onetime-use' | 'previous-purchase';
749
760
  type Coupon = {
761
+ id: string;
750
762
  code: string;
751
- amount: number;
752
- percent: number;
763
+ amount: number | null;
764
+ percent: number | null;
765
+ condition: CouponCondition;
766
+ usesLeft: number | null;
753
767
  expiresAt: string | null;
754
768
  };
755
769
  type PurchaseResult = {
@@ -802,6 +816,7 @@ type Integration = {
802
816
  type: IntegrationType;
803
817
  name: string;
804
818
  active: boolean;
819
+ configured: boolean;
805
820
  createdAt: string;
806
821
  meta?: IntegrationMeta;
807
822
  details?: IntegrationDetails;
@@ -939,6 +954,64 @@ type AgentSettings = {
939
954
  'email_provider'?: EmailProvider | null;
940
955
  };
941
956
  //#endregion
957
+ //#region src/link/types.d.ts
958
+ type LinkScanHistory = {
959
+ daily: number[];
960
+ geography: Record<string, number>;
961
+ devices?: Record<string, number>;
962
+ operatingSystems?: Record<string, number>;
963
+ browsers?: Record<string, number>;
964
+ };
965
+ type Link = {
966
+ id: string;
967
+ url: string;
968
+ shortUrl: string;
969
+ status: 'active' | 'paused' | 'expired';
970
+ title: string | null;
971
+ scanCount: number;
972
+ scanHistory: LinkScanHistory;
973
+ lastScannedAt: string | null;
974
+ createdAt: string;
975
+ updatedAt: string;
976
+ };
977
+ type LinkVariation = {
978
+ id: string;
979
+ linkId: string;
980
+ title: string | null;
981
+ values: Record<string, string>;
982
+ url: string;
983
+ shortUrl: string;
984
+ status: 'active' | 'paused' | 'expired';
985
+ scanCount: number;
986
+ lastScannedAt: string | null;
987
+ createdAt: string;
988
+ updatedAt: string;
989
+ };
990
+ type LinkVariationCreatePayload = {
991
+ title?: string | null;
992
+ values: Record<string, string>;
993
+ };
994
+ type LinkVariationBatchCreatePayload = {
995
+ placeholder: string;
996
+ labelTemplate?: string | null;
997
+ from?: number | null;
998
+ to?: number | null;
999
+ values?: Array<{
1000
+ value: string;
1001
+ label?: string | null;
1002
+ }>;
1003
+ };
1004
+ type LinkCreatePayload = {
1005
+ url: string;
1006
+ title: string;
1007
+ };
1008
+ type LinkUpdatePayload = Partial<LinkCreatePayload>;
1009
+ type LinkStats = {
1010
+ totalLinks: number;
1011
+ activeLinks: number;
1012
+ totalScans: number;
1013
+ scanHistory: LinkScanHistory;
1014
+ }; //#endregion
942
1015
  //#region src/warp/types.d.ts
943
1016
  type WarpExtrasFaq = {
944
1017
  question: string;
@@ -968,17 +1041,31 @@ type WarpBackend = {
968
1041
  active: boolean;
969
1042
  category: WarpBackendCategory;
970
1043
  featured: boolean;
1044
+ form: boolean;
1045
+ store: boolean;
1046
+ executions: number;
971
1047
  price?: number | null;
972
1048
  primaryAddress: string | null;
973
1049
  primaryFunc: string | null;
974
1050
  locales: WarpLocale[];
975
1051
  brand: BrandBackend | null;
1052
+ team?: Team | null;
976
1053
  definition?: Record<string, any> | null;
977
1054
  extras?: WarpExtras | null;
978
1055
  agent?: AgentSimple | null;
1056
+ link?: Link | null;
1057
+ executionHistory?: number[] | null;
979
1058
  };
980
1059
  type WarpBackendStatus = 'unverified' | 'verified' | 'blacklisted';
981
1060
  type WarpBackendCategory = 'none';
1061
+ type WarpExecutionBackend = {
1062
+ id: string;
1063
+ room: string | null;
1064
+ inputs: Record<string, unknown> | null;
1065
+ status: string;
1066
+ agent: AgentSimple | null;
1067
+ createdAt: string;
1068
+ };
982
1069
  type BrandSourceConfig = {
983
1070
  type: string;
984
1071
  chain?: string;
@@ -1124,6 +1211,9 @@ type StoreItem = {
1124
1211
  } | {
1125
1212
  type: 'skill';
1126
1213
  item: Skill;
1214
+ } | {
1215
+ type: 'form';
1216
+ item: WarpBackend;
1127
1217
  };
1128
1218
  type StoreData = {
1129
1219
  blueprints: Blueprint[];
@@ -1131,6 +1221,7 @@ type StoreData = {
1131
1221
  flows: Flow[];
1132
1222
  creators: BrandBackend[];
1133
1223
  agents: StoreAgent[];
1224
+ forms: WarpBackend[];
1134
1225
  items: StoreItem[];
1135
1226
  };
1136
1227
  type StorePriceTier = {
@@ -2230,64 +2321,6 @@ type GamificationData = {
2230
2321
  recentExperiences: RecentExperience[];
2231
2322
  nextMilestones: Milestone[];
2232
2323
  }; //#endregion
2233
- //#region src/link/types.d.ts
2234
- type LinkScanHistory = {
2235
- daily: number[];
2236
- geography: Record<string, number>;
2237
- devices?: Record<string, number>;
2238
- operatingSystems?: Record<string, number>;
2239
- browsers?: Record<string, number>;
2240
- };
2241
- type Link = {
2242
- id: string;
2243
- url: string;
2244
- shortUrl: string;
2245
- status: 'active' | 'paused' | 'expired';
2246
- title: string | null;
2247
- scanCount: number;
2248
- scanHistory: LinkScanHistory;
2249
- lastScannedAt: string | null;
2250
- createdAt: string;
2251
- updatedAt: string;
2252
- };
2253
- type LinkVariation = {
2254
- id: string;
2255
- linkId: string;
2256
- title: string | null;
2257
- values: Record<string, string>;
2258
- url: string;
2259
- shortUrl: string;
2260
- status: 'active' | 'paused' | 'expired';
2261
- scanCount: number;
2262
- lastScannedAt: string | null;
2263
- createdAt: string;
2264
- updatedAt: string;
2265
- };
2266
- type LinkVariationCreatePayload = {
2267
- title?: string | null;
2268
- values: Record<string, string>;
2269
- };
2270
- type LinkVariationBatchCreatePayload = {
2271
- placeholder: string;
2272
- labelTemplate?: string | null;
2273
- from?: number | null;
2274
- to?: number | null;
2275
- values?: Array<{
2276
- value: string;
2277
- label?: string | null;
2278
- }>;
2279
- };
2280
- type LinkCreatePayload = {
2281
- url: string;
2282
- title: string;
2283
- };
2284
- type LinkUpdatePayload = Partial<LinkCreatePayload>;
2285
- type LinkStats = {
2286
- totalLinks: number;
2287
- activeLinks: number;
2288
- totalScans: number;
2289
- scanHistory: LinkScanHistory;
2290
- }; //#endregion
2291
2324
  //#region src/loyalty/types.d.ts
2292
2325
  type ProgramSettings = {
2293
2326
  point_name?: string;
@@ -2381,6 +2414,11 @@ type EarnResponse = {
2381
2414
  tierName?: string;
2382
2415
  multiplier?: number;
2383
2416
  };
2417
+ type StampResponse = {
2418
+ contactName: string;
2419
+ stamps: number;
2420
+ rewardReady: boolean;
2421
+ };
2384
2422
  type RedeemResponse = {
2385
2423
  rewardName: string;
2386
2424
  rewardType: string;
@@ -2415,6 +2453,69 @@ type LoyaltyMember = {
2415
2453
  tier: string | null;
2416
2454
  updatedAt: string;
2417
2455
  }; //#endregion
2456
+ //#region src/segment/types.d.ts
2457
+ type SegmentConditionType = 'tag' | 'has_email' | 'has_phone' | 'created_after' | 'created_before' | 'email_contains';
2458
+ type SegmentCondition = {
2459
+ type: SegmentConditionType;
2460
+ value: string | boolean;
2461
+ };
2462
+ type SegmentGroup = {
2463
+ match: 'all' | 'any';
2464
+ conditions: SegmentCondition[];
2465
+ };
2466
+ type Segment = {
2467
+ id: string;
2468
+ name: string;
2469
+ conditions: SegmentGroup[];
2470
+ count: number;
2471
+ campaignsCount: number;
2472
+ createdAt: string;
2473
+ updatedAt: string;
2474
+ };
2475
+ type SegmentCreatePayload = {
2476
+ name: string;
2477
+ conditions: SegmentGroup[];
2478
+ };
2479
+ type SegmentCountPayload = {
2480
+ conditions: SegmentGroup[];
2481
+ channel?: string;
2482
+ };
2483
+ type SegmentCountResult = {
2484
+ count: number;
2485
+ reachable: number | null;
2486
+ }; //#endregion
2487
+ //#region src/campaign/types.d.ts
2488
+ type CampaignChannel = 'email' | 'whatsapp' | 'sms';
2489
+ type CampaignStatus = 'draft' | 'sending' | 'completed' | 'failed';
2490
+ type Campaign = {
2491
+ id: string;
2492
+ name: string;
2493
+ channel: CampaignChannel;
2494
+ subject: string | null;
2495
+ content: string;
2496
+ tags: string[];
2497
+ status: CampaignStatus;
2498
+ totalCount: number;
2499
+ remainingCount: number;
2500
+ sentCount: number;
2501
+ failedCount: number;
2502
+ skippedCount: number;
2503
+ createdAt: string;
2504
+ updatedAt: string;
2505
+ };
2506
+ type CampaignCreatePayload = {
2507
+ name: string;
2508
+ channel: CampaignChannel;
2509
+ subject?: string;
2510
+ content: string;
2511
+ tags?: string[];
2512
+ contactIds?: string[];
2513
+ };
2514
+ type CampaignStats = {
2515
+ totalCampaigns: number;
2516
+ draftCampaigns: number;
2517
+ totalSent: number;
2518
+ }; //#endregion
2418
2519
  //#region src/update/types.d.ts
2419
2520
  type UpdateType = 'deal' | 'event' | 'news';
2420
2521
  type UpdateStatus = 'draft' | 'published' | 'archived';
@@ -2620,7 +2721,7 @@ declare class AgentsResource {
2620
2721
  updatePassword(uuid: string, password: string): Promise<IAppResponse<void>>;
2621
2722
  storePassword(uuid: string, password: string): Promise<IAppResponse<AgentPrivate>>;
2622
2723
  updateSetting<K extends keyof AgentSettings>(uuid: string, key: K, value: AgentSettings[K]): Promise<IAppResponse<AgentPrivate>>;
2623
- updateMeta(uuid: string, key: string, value: Record<string, unknown> | null): Promise<IAppResponse<AgentPrivate>>;
2724
+ updateMeta(uuid: string, key: string, value: unknown): Promise<IAppResponse<AgentPrivate>>;
2624
2725
  publish(uuid: string): Promise<IAppResponse<AgentPrivate>>;
2625
2726
  unpublish(uuid: string): Promise<IAppResponse<AgentPrivate>>;
2626
2727
  moveToTeam(uuid: string, teamSlug: string): Promise<IAppResponse<AgentPrivate>>;
@@ -2981,6 +3082,26 @@ declare class CartsResource {
2981
3082
  applyCoupon(code: string): Promise<IAppResponse<void>>;
2982
3083
  }
2983
3084
  //#endregion
3085
+ //#region src/resources/coupons.d.ts
3086
+ type CouponPayload = {
3087
+ code: string;
3088
+ percent?: number | null;
3089
+ amount?: number | null;
3090
+ condition?: CouponCondition;
3091
+ usesLeft?: number | null;
3092
+ expiresAt?: string | null;
3093
+ };
3094
+ declare class CouponsResource {
3095
+ private readonly http;
3096
+ constructor(http: IHttpService);
3097
+ list(team: string): Promise<IAppResponse<Coupon[]>>;
3098
+ create(team: string, data: CouponPayload): Promise<IAppResponse<Coupon>>;
3099
+ update(id: string, data: Partial<CouponPayload> & {
3100
+ clearExpiry?: boolean;
3101
+ }): Promise<IAppResponse<Coupon>>;
3102
+ delete(id: string): Promise<IAppResponse<void>>;
3103
+ }
3104
+ //#endregion
2984
3105
  //#region src/resources/changelog.d.ts
2985
3106
  declare class ChangelogResource {
2986
3107
  private readonly http;
@@ -2996,6 +3117,7 @@ declare class ContactsResource {
2996
3117
  list(params?: {
2997
3118
  search?: string;
2998
3119
  page?: number;
3120
+ staleDays?: number;
2999
3121
  }): Promise<IAppResponse<Contact[]>>;
3000
3122
  get(id: string): Promise<IAppResponse<Contact>>;
3001
3123
  create(payload: ContactCreatePayload): Promise<IAppResponse<Contact>>;
@@ -3320,6 +3442,7 @@ declare class LoyaltyResource {
3320
3442
  deletePromotion(id: string): Promise<IAppResponse<void>>;
3321
3443
  enroll(contactId: string): Promise<IAppResponse<LoyaltyAccount>>;
3322
3444
  getAccount(contactId: string): Promise<IAppResponse<LoyaltyAccount>>;
3445
+ stamp(contactId: string): Promise<IAppResponse<StampResponse>>;
3323
3446
  earn(contactId: string, context?: {
3324
3447
  spendCents?: number;
3325
3448
  items?: {
@@ -3508,6 +3631,9 @@ declare class OrdersResource {
3508
3631
  pay(id: string, provider: string): Promise<IAppResponse<{
3509
3632
  url: string;
3510
3633
  }>>;
3634
+ notify(id: string, type?: string): Promise<IAppResponse<{
3635
+ message: string;
3636
+ }>>;
3511
3637
  }
3512
3638
  //#endregion
3513
3639
  //#region src/resources/persona.d.ts
@@ -3522,7 +3648,9 @@ declare class PersonaResource {
3522
3648
  declare class ProductsResource {
3523
3649
  private readonly http;
3524
3650
  constructor(http: IHttpService);
3525
- list(): Promise<IAppResponse<Product[]>>;
3651
+ list(params?: {
3652
+ includePrivate?: boolean;
3653
+ }): Promise<IAppResponse<Product[]>>;
3526
3654
  get(id: string): Promise<IAppResponse<Product>>;
3527
3655
  create(data: {
3528
3656
  name: TranslatableValue;
@@ -3654,7 +3782,9 @@ declare class RoomsResource {
3654
3782
  declare class ServicesResource {
3655
3783
  private readonly http;
3656
3784
  constructor(http: IHttpService);
3657
- list(): Promise<IAppResponse<Service[]>>;
3785
+ list(params?: {
3786
+ includePrivate?: boolean;
3787
+ }): Promise<IAppResponse<Service[]>>;
3658
3788
  get(slug: string): Promise<IAppResponse<Service>>;
3659
3789
  store(team: string, data: {
3660
3790
  name: TranslatableValue;
@@ -3837,6 +3967,8 @@ type TeamMutationPayload = {
3837
3967
  email?: string | null;
3838
3968
  address?: string | null;
3839
3969
  location?: string | null;
3970
+ logoMediaId?: string | null;
3971
+ coverMediaId?: string | null;
3840
3972
  };
3841
3973
  declare class TeamsResource {
3842
3974
  private readonly http;
@@ -3873,6 +4005,32 @@ declare class TeamsResource {
3873
4005
  topupFinalize(tx: string): Promise<IAppResponse<void>>;
3874
4006
  }
3875
4007
  //#endregion
4008
+ //#region src/resources/campaigns.d.ts
4009
+ declare class CampaignsResource {
4010
+ private readonly http;
4011
+ constructor(http: IHttpService);
4012
+ stats(): Promise<IAppResponse<CampaignStats>>;
4013
+ list(): Promise<IAppResponse<Campaign[]>>;
4014
+ get(id: string): Promise<IAppResponse<Campaign>>;
4015
+ create(payload: CampaignCreatePayload): Promise<IAppResponse<Campaign>>;
4016
+ send(id: string): Promise<IAppResponse<Campaign>>;
4017
+ delete(id: string): Promise<IAppResponse<void>>;
4018
+ }
4019
+ //#endregion
4020
+ //#region src/resources/segments.d.ts
4021
+ declare class SegmentsResource {
4022
+ private readonly http;
4023
+ constructor(http: IHttpService);
4024
+ list(): Promise<IAppResponse<Segment[]>>;
4025
+ create(payload: SegmentCreatePayload): Promise<IAppResponse<Segment>>;
4026
+ update(id: string, payload: SegmentCreatePayload): Promise<IAppResponse<Segment>>;
4027
+ delete(id: string): Promise<IAppResponse<void>>;
4028
+ count(payload: SegmentCountPayload): Promise<IAppResponse<SegmentCountResult>>;
4029
+ tags(): Promise<IAppResponse<{
4030
+ tags: string[];
4031
+ }>>;
4032
+ }
4033
+ //#endregion
3876
4034
  //#region src/resources/updates.d.ts
3877
4035
  declare class UpdatesResource {
3878
4036
  private readonly http;
@@ -3982,11 +4140,13 @@ type BackendWarpCreateResponse = Pick<BackendWarp, 'id' | 'url' | 'definition' |
3982
4140
  type BackendWarpUpdateResponse = Pick<BackendWarp, 'id'>;
3983
4141
  type BackendWarp = {
3984
4142
  id: string;
4143
+ hash: string;
3985
4144
  title: string;
3986
4145
  url: string;
3987
4146
  definition: WarpDefinition;
3988
4147
  brand: BackendWarpBrand | null;
3989
4148
  agent?: AgentPrivate | null;
4149
+ link?: Link | null;
3990
4150
  };
3991
4151
  declare class WarpsResource {
3992
4152
  private readonly http;
@@ -3996,23 +4156,41 @@ declare class WarpsResource {
3996
4156
  creator?: string;
3997
4157
  primaryAddress?: string;
3998
4158
  status?: WarpBackendStatus;
4159
+ form?: boolean;
4160
+ store?: boolean;
3999
4161
  page?: number;
4000
4162
  perPage?: number;
4001
4163
  }): Promise<IAppResponse<WarpBackend[]>>;
4002
4164
  show(identifier: string): Promise<IAppResponse<WarpBackend>>;
4003
4165
  create(data: {
4004
- brand: string;
4166
+ brand?: string | null;
4005
4167
  definition: WarpDefinition;
4168
+ title?: TranslatableValue;
4169
+ description?: TranslatableValue | null;
4170
+ extras?: Record<string, any> | null;
4006
4171
  public?: boolean;
4172
+ form?: boolean;
4173
+ store?: boolean;
4007
4174
  agent?: string | null;
4008
4175
  }): Promise<IAppResponse<BackendWarpCreateResponse>>;
4009
4176
  update(identifier: string, data: {
4177
+ name?: string;
4178
+ title?: TranslatableValue;
4179
+ description?: TranslatableValue | null;
4010
4180
  definition?: WarpDefinition;
4181
+ extras?: Record<string, any> | null;
4182
+ form?: boolean;
4183
+ store?: boolean;
4011
4184
  agent?: string | null;
4012
4185
  public?: boolean;
4013
4186
  }): Promise<IAppResponse<BackendWarpUpdateResponse>>;
4014
4187
  destroy(identifier: string): Promise<IAppResponse<void>>;
4015
4188
  execute(identifier: string, inputs: string[], room?: string): Promise<IAppResponse<JsonValue>>;
4189
+ executions(identifier: string, page?: number, perPage?: number): Promise<IAppResponse<WarpExecutionBackend[]>>;
4190
+ ensureLink(identifier: string): Promise<IAppResponse<Link>>;
4191
+ install(identifier: string): Promise<IAppResponse<{
4192
+ identifier: string;
4193
+ }>>;
4016
4194
  sync(tx: string): Promise<IAppResponse<void>>;
4017
4195
  listBrands(locale: WarpLocale, options?: {
4018
4196
  chain?: string | string[];
@@ -4053,12 +4231,16 @@ declare class WarpsResource {
4053
4231
  definition: Record<string, any>;
4054
4232
  extras?: Record<string, any>;
4055
4233
  agent?: string | null;
4234
+ form?: boolean;
4235
+ store?: boolean;
4056
4236
  }): Promise<IAppResponse<WarpBackend>>;
4057
4237
  updateBrandWarp(teamSlug: string, brandSlug: string, warpHash: string, data: {
4058
4238
  name?: string;
4059
4239
  definition?: Record<string, any>;
4060
4240
  extras?: Record<string, any>;
4061
4241
  agent?: string | null;
4242
+ form?: boolean;
4243
+ store?: boolean;
4062
4244
  }): Promise<IAppResponse<WarpBackend>>;
4063
4245
  deleteBrandWarp(teamSlug: string, brandSlug: string, warpHash: string): Promise<IAppResponse<void>>;
4064
4246
  fetchSourceSchemaFromUrl(url: string): Promise<IAppResponse<any>>;
@@ -4153,6 +4335,7 @@ declare class JoAiClient {
4153
4335
  readonly notifications: NotificationsResource;
4154
4336
  readonly office: OfficeResource;
4155
4337
  readonly orders: OrdersResource;
4338
+ readonly coupons: CouponsResource;
4156
4339
  readonly persona: PersonaResource;
4157
4340
  readonly privateWarps: WarpsResource;
4158
4341
  readonly products: ProductsResource;
@@ -4170,6 +4353,8 @@ declare class JoAiClient {
4170
4353
  readonly swarms: SwarmsResource;
4171
4354
  readonly tasks: TasksResource;
4172
4355
  readonly teams: TeamsResource;
4356
+ readonly campaigns: CampaignsResource;
4357
+ readonly segments: SegmentsResource;
4173
4358
  readonly updates: UpdatesResource;
4174
4359
  readonly upgrades: UpgradesResource;
4175
4360
  readonly users: UsersResource;
@@ -4215,4 +4400,4 @@ declare class DistributionResource {
4215
4400
  private fetchDistribution;
4216
4401
  }
4217
4402
  //#endregion
4218
- export { AgentsResource, AlertsResource, ApiTokensResource, AppointmentsResource, AuthResource, type AuthSendCodeRequest, type AuthVerifyResponse, type BackendWarp, type BackendWarpBrand, BillingAddressesResource, BillingResource, BlueprintsResource, type CacheConfig, CachedHttpService, CardsResource, CartsResource, ChangelogResource, CharactersResource, ContactsResource, ContractsResource, DeskResource, DistributionResource, DocumentsResource, ElementsResource, EntitiesResource, FlowsResource, GoalsResource, IngestionsResource, InquiriesResource, IntegrationsResource, IntentsResource, ItemsResource, JoAiClient, type JoAiClientConfig, KvResource, LinksResource, LoyaltyResource, McpResource, MeetingsResource, MemoriesResource, MessagesResource, MissionsResource, NotificationsResource, OfficeResource, type OpeningHoursEntry, type OpeningHoursFormatOptions, OrdersResource, PersonaResource, type Product, type ProductVariation, ProductsResource, ProjectsResource, RemindersResource, ServicesResource, ShortcutsResource, SitesResource, SkillsResource, StatsResource, StoreResource, SubscriptionsResource, SwarmsResource, TasksResource, type TeamInviteInfo, TeamsResource, UpdatesResource, UpgradesResource, UsersResource, VoiceResource, WalletsResource, WarpsResource, WebhooksResource, WorkspaceResource, createClient, formatOpeningHours };
4403
+ export { AgentsResource, AlertsResource, ApiTokensResource, AppointmentsResource, AuthResource, type AuthSendCodeRequest, type AuthVerifyResponse, type BackendWarp, type BackendWarpBrand, BillingAddressesResource, BillingResource, BlueprintsResource, type CacheConfig, CachedHttpService, CampaignsResource, CardsResource, CartsResource, ChangelogResource, CharactersResource, ContactsResource, ContractsResource, DeskResource, DistributionResource, DocumentsResource, ElementsResource, EntitiesResource, FlowsResource, GoalsResource, IngestionsResource, InquiriesResource, IntegrationsResource, IntentsResource, ItemsResource, JoAiClient, type JoAiClientConfig, KvResource, LinksResource, LoyaltyResource, McpResource, MeetingsResource, MemoriesResource, MessagesResource, MissionsResource, NotificationsResource, OfficeResource, type OpeningHoursEntry, type OpeningHoursFormatOptions, OrdersResource, PersonaResource, type Product, type ProductVariation, ProductsResource, ProjectsResource, RemindersResource, SegmentsResource, ServicesResource, ShortcutsResource, SitesResource, SkillsResource, StatsResource, StoreResource, SubscriptionsResource, SwarmsResource, TasksResource, type TeamInviteInfo, TeamsResource, UpdatesResource, UpgradesResource, UsersResource, VoiceResource, WalletsResource, WarpsResource, WebhooksResource, WorkspaceResource, createClient, formatOpeningHours };
package/dist/index.mjs CHANGED
@@ -692,6 +692,25 @@ var CartsResource = class {
692
692
  }
693
693
  };
694
694
  //#endregion
695
+ //#region src/resources/coupons.ts
696
+ var CouponsResource = class {
697
+ constructor(http) {
698
+ this.http = http;
699
+ }
700
+ list(team) {
701
+ return this.http.get("coupons", { headers: { "X-Team": team } });
702
+ }
703
+ create(team, data) {
704
+ return this.http.post("coupons", data, { headers: { "X-Team": team } });
705
+ }
706
+ update(id, data) {
707
+ return this.http.put(`coupons/${id}`, data);
708
+ }
709
+ delete(id) {
710
+ return this.http.delete(`coupons/${id}`);
711
+ }
712
+ };
713
+ //#endregion
695
714
  //#region src/resources/changelog.ts
696
715
  var ChangelogResource = class {
697
716
  constructor(http) {
@@ -714,6 +733,7 @@ var ContactsResource = class {
714
733
  const query = new URLSearchParams();
715
734
  if (params?.search) query.set("filter[search]", params.search);
716
735
  if (params?.page) query.set("page", String(params.page));
736
+ if (params?.staleDays) query.set("filter[stale_days]", String(params.staleDays));
717
737
  const qs = query.toString();
718
738
  return this.http.get(`contacts${qs ? "?" + qs : ""}`);
719
739
  }
@@ -1163,6 +1183,9 @@ var LoyaltyResource = class {
1163
1183
  getAccount(contactId) {
1164
1184
  return this.http.get(`loyalty/accounts/${contactId}`);
1165
1185
  }
1186
+ stamp(contactId) {
1187
+ return this.http.post("loyalty/stamp", { contactId });
1188
+ }
1166
1189
  earn(contactId, context) {
1167
1190
  return this.http.post("loyalty/earn", {
1168
1191
  contactId,
@@ -1209,15 +1232,17 @@ var StoreResource = class {
1209
1232
  flows: [],
1210
1233
  creators: [],
1211
1234
  agents: [],
1235
+ forms: [],
1212
1236
  items: []
1213
1237
  };
1214
- const { blueprints = [], skills = [], flows = [], creators = [], agents = [] } = res.data;
1238
+ const { blueprints = [], skills = [], flows = [], creators = [], agents = [], forms = [] } = res.data;
1215
1239
  return {
1216
1240
  blueprints,
1217
1241
  skills,
1218
1242
  flows,
1219
1243
  creators,
1220
1244
  agents,
1245
+ forms,
1221
1246
  items: [
1222
1247
  ...agents.map((item) => ({
1223
1248
  type: "agent",
@@ -1234,6 +1259,10 @@ var StoreResource = class {
1234
1259
  ...skills.map((item) => ({
1235
1260
  type: "skill",
1236
1261
  item
1262
+ })),
1263
+ ...forms.map((item) => ({
1264
+ type: "form",
1265
+ item
1237
1266
  }))
1238
1267
  ]
1239
1268
  };
@@ -1492,6 +1521,9 @@ var OrdersResource = class {
1492
1521
  pay(id, provider) {
1493
1522
  return this.http.post(`orders/${id}/pay`, { provider });
1494
1523
  }
1524
+ notify(id, type = "confirmation") {
1525
+ return this.http.post(`orders/${id}/notify`, { type });
1526
+ }
1495
1527
  };
1496
1528
  //#endregion
1497
1529
  //#region src/resources/persona.ts
@@ -1515,8 +1547,10 @@ var ProductsResource = class {
1515
1547
  constructor(http) {
1516
1548
  this.http = http;
1517
1549
  }
1518
- list() {
1519
- return this.http.get("products");
1550
+ list(params) {
1551
+ let url = "products";
1552
+ if (params?.includePrivate) url += "?includePrivate=1";
1553
+ return this.http.get(url);
1520
1554
  }
1521
1555
  get(id) {
1522
1556
  return this.http.get(`products/${id}`);
@@ -1659,8 +1693,10 @@ var ServicesResource = class {
1659
1693
  constructor(http) {
1660
1694
  this.http = http;
1661
1695
  }
1662
- list() {
1663
- return this.http.get("services");
1696
+ list(params) {
1697
+ let url = "services";
1698
+ if (params?.includePrivate) url += "?includePrivate=1";
1699
+ return this.http.get(url);
1664
1700
  }
1665
1701
  get(slug) {
1666
1702
  return this.http.get(`services/${slug}`);
@@ -1990,6 +2026,56 @@ var TeamsResource = class {
1990
2026
  }
1991
2027
  };
1992
2028
  //#endregion
2029
+ //#region src/resources/campaigns.ts
2030
+ var CampaignsResource = class {
2031
+ constructor(http) {
2032
+ this.http = http;
2033
+ }
2034
+ stats() {
2035
+ return this.http.get("campaigns/stats");
2036
+ }
2037
+ list() {
2038
+ return this.http.get("campaigns");
2039
+ }
2040
+ get(id) {
2041
+ return this.http.get(`campaigns/${id}`);
2042
+ }
2043
+ create(payload) {
2044
+ return this.http.post("campaigns", payload);
2045
+ }
2046
+ send(id) {
2047
+ return this.http.post(`campaigns/${id}/send`);
2048
+ }
2049
+ delete(id) {
2050
+ return this.http.delete(`campaigns/${id}`);
2051
+ }
2052
+ };
2053
+ //#endregion
2054
+ //#region src/resources/segments.ts
2055
+ var SegmentsResource = class {
2056
+ constructor(http) {
2057
+ this.http = http;
2058
+ }
2059
+ list() {
2060
+ return this.http.get("segments");
2061
+ }
2062
+ create(payload) {
2063
+ return this.http.post("segments", payload);
2064
+ }
2065
+ update(id, payload) {
2066
+ return this.http.patch(`segments/${id}`, payload);
2067
+ }
2068
+ delete(id) {
2069
+ return this.http.delete(`segments/${id}`);
2070
+ }
2071
+ count(payload) {
2072
+ return this.http.post("segments/count", payload);
2073
+ }
2074
+ tags() {
2075
+ return this.http.get("segments/tags");
2076
+ }
2077
+ };
2078
+ //#endregion
1993
2079
  //#region src/resources/updates.ts
1994
2080
  var UpdatesResource = class {
1995
2081
  constructor(http) {
@@ -2218,6 +2304,8 @@ var WarpsResource = class {
2218
2304
  if (options?.creator) params.set("creator", options.creator);
2219
2305
  if (options?.primaryAddress) params.set("primaryAddress", options.primaryAddress);
2220
2306
  if (options?.status) params.set("status", options.status);
2307
+ if (options?.form !== void 0) params.set("form", options.form ? "1" : "0");
2308
+ if (options?.store !== void 0) params.set("store", options.store ? "1" : "0");
2221
2309
  if (options?.page) params.set("page", options.page.toString());
2222
2310
  if (options?.perPage) params.set("perPage", options.perPage.toString());
2223
2311
  const qs = params.toString();
@@ -2241,6 +2329,15 @@ var WarpsResource = class {
2241
2329
  ...room ? { room } : {}
2242
2330
  });
2243
2331
  }
2332
+ executions(identifier, page = 1, perPage = 20) {
2333
+ return this.http.get(`warps/${identifier}/executions?page=${page}&perPage=${perPage}`);
2334
+ }
2335
+ ensureLink(identifier) {
2336
+ return this.http.post(`warps/${identifier}/link`, {});
2337
+ }
2338
+ install(identifier) {
2339
+ return this.http.post(`warps/${identifier}/install`, {});
2340
+ }
2244
2341
  sync(tx) {
2245
2342
  return this.http.post("warps/sync", { tx });
2246
2343
  }
@@ -2511,6 +2608,7 @@ var JoAiClient = class {
2511
2608
  this.notifications = new NotificationsResource(this.http);
2512
2609
  this.office = new OfficeResource(this.http);
2513
2610
  this.orders = new OrdersResource(this.http);
2611
+ this.coupons = new CouponsResource(this.http);
2514
2612
  this.persona = new PersonaResource(this.http);
2515
2613
  this.privateWarps = new WarpsResource(this.http);
2516
2614
  this.products = new ProductsResource(this.http);
@@ -2528,6 +2626,8 @@ var JoAiClient = class {
2528
2626
  this.swarms = new SwarmsResource(this.http);
2529
2627
  this.tasks = new TasksResource(this.http);
2530
2628
  this.teams = new TeamsResource(this.http);
2629
+ this.campaigns = new CampaignsResource(this.http);
2630
+ this.segments = new SegmentsResource(this.http);
2531
2631
  this.updates = new UpdatesResource(this.http);
2532
2632
  this.upgrades = new UpgradesResource(this.http);
2533
2633
  this.users = new UsersResource(this.http);
@@ -2579,4 +2679,4 @@ var DistributionResource = class {
2579
2679
  }
2580
2680
  };
2581
2681
  //#endregion
2582
- export { AgentsResource, AlertsResource, ApiTokensResource, AppointmentsResource, AuthResource, BillingAddressesResource, BillingResource, BlueprintsResource, CachedHttpService, CardsResource, CartsResource, ChangelogResource, CharactersResource, ContactsResource, ContractsResource, DeskResource, DistributionResource, DocumentsResource, ElementsResource, EntitiesResource, FlowsResource, GoalsResource, IngestionsResource, InquiriesResource, IntegrationsResource, IntentsResource, ItemsResource, JoAiClient, KvResource, LinksResource, LoyaltyResource, McpResource, MeetingsResource, MemoriesResource, MessagesResource, MissionsResource, NotificationsResource, OfficeResource, OrdersResource, PersonaResource, ProductsResource, ProjectsResource, RemindersResource, ServicesResource, ShortcutsResource, SitesResource, SkillsResource, StatsResource, StoreResource, SubscriptionsResource, SwarmsResource, TasksResource, TeamsResource, UpdatesResource, UpgradesResource, UsersResource, VoiceResource, WalletsResource, WarpsResource, WebhooksResource, WorkspaceResource, createClient, formatOpeningHours };
2682
+ export { AgentsResource, AlertsResource, ApiTokensResource, AppointmentsResource, AuthResource, BillingAddressesResource, BillingResource, BlueprintsResource, CachedHttpService, CampaignsResource, CardsResource, CartsResource, ChangelogResource, CharactersResource, ContactsResource, ContractsResource, DeskResource, DistributionResource, DocumentsResource, ElementsResource, EntitiesResource, FlowsResource, GoalsResource, IngestionsResource, InquiriesResource, IntegrationsResource, IntentsResource, ItemsResource, JoAiClient, KvResource, LinksResource, LoyaltyResource, McpResource, MeetingsResource, MemoriesResource, MessagesResource, MissionsResource, NotificationsResource, OfficeResource, OrdersResource, PersonaResource, ProductsResource, ProjectsResource, RemindersResource, SegmentsResource, ServicesResource, ShortcutsResource, SitesResource, SkillsResource, StatsResource, StoreResource, SubscriptionsResource, SwarmsResource, TasksResource, TeamsResource, UpdatesResource, UpgradesResource, UsersResource, VoiceResource, WalletsResource, WarpsResource, WebhooksResource, WorkspaceResource, createClient, formatOpeningHours };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joai/sdk",
3
- "version": "1.0.1",
3
+ "version": "1.2.0",
4
4
  "description": "JoAi public API SDK — build with your AI agents",
5
5
  "license": "MIT",
6
6
  "type": "module",