@codeqr/ts 0.19.3 → 0.24.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.
Files changed (202) hide show
  1. package/CHANGELOG.md +278 -0
  2. package/api-promise.d.mts +1 -0
  3. package/api-promise.d.mts.map +1 -1
  4. package/api-promise.d.ts +1 -0
  5. package/api-promise.d.ts.map +1 -1
  6. package/api-promise.mjs +1 -0
  7. package/api-promise.mjs.map +1 -1
  8. package/client.d.mts +4 -4
  9. package/client.d.mts.map +1 -1
  10. package/client.d.ts +4 -4
  11. package/client.d.ts.map +1 -1
  12. package/client.js +20 -1
  13. package/client.js.map +1 -1
  14. package/client.mjs +20 -1
  15. package/client.mjs.map +1 -1
  16. package/core/api-promise.d.mts.map +1 -1
  17. package/core/api-promise.d.ts.map +1 -1
  18. package/core/api-promise.mjs.map +1 -1
  19. package/core/error.mjs.map +1 -1
  20. package/core/resource.d.mts.map +1 -1
  21. package/core/resource.d.ts.map +1 -1
  22. package/core/uploads.d.mts.map +1 -1
  23. package/core/uploads.d.ts.map +1 -1
  24. package/core/uploads.mjs.map +1 -1
  25. package/error.d.mts +1 -0
  26. package/error.d.mts.map +1 -1
  27. package/error.d.ts +1 -0
  28. package/error.d.ts.map +1 -1
  29. package/error.mjs +1 -0
  30. package/error.mjs.map +1 -1
  31. package/index.d.mts.map +1 -1
  32. package/index.d.ts.map +1 -1
  33. package/index.mjs.map +1 -1
  34. package/internal/detect-platform.mjs.map +1 -1
  35. package/internal/headers.mjs.map +1 -1
  36. package/internal/parse.d.mts.map +1 -1
  37. package/internal/parse.d.ts.map +1 -1
  38. package/internal/parse.mjs.map +1 -1
  39. package/internal/qs/formats.d.mts.map +1 -1
  40. package/internal/qs/formats.d.ts.map +1 -1
  41. package/internal/qs/index.d.mts +2 -2
  42. package/internal/qs/index.d.mts.map +1 -1
  43. package/internal/qs/index.d.ts +2 -2
  44. package/internal/qs/index.d.ts.map +1 -1
  45. package/internal/qs/index.mjs.map +1 -1
  46. package/internal/qs/stringify.d.mts.map +1 -1
  47. package/internal/qs/stringify.d.ts.map +1 -1
  48. package/internal/qs/stringify.mjs.map +1 -1
  49. package/internal/qs/utils.d.mts.map +1 -1
  50. package/internal/qs/utils.d.ts.map +1 -1
  51. package/internal/qs/utils.mjs.map +1 -1
  52. package/internal/request-options.d.mts.map +1 -1
  53. package/internal/request-options.d.ts.map +1 -1
  54. package/internal/shims.d.mts +6 -0
  55. package/internal/shims.d.mts.map +1 -1
  56. package/internal/shims.d.ts +6 -0
  57. package/internal/shims.d.ts.map +1 -1
  58. package/internal/to-file.d.mts.map +1 -1
  59. package/internal/to-file.d.ts.map +1 -1
  60. package/internal/to-file.mjs.map +1 -1
  61. package/internal/types.d.mts +10 -10
  62. package/internal/types.d.mts.map +1 -1
  63. package/internal/types.d.ts +10 -10
  64. package/internal/types.d.ts.map +1 -1
  65. package/internal/uploads.d.mts.map +1 -1
  66. package/internal/uploads.d.ts.map +1 -1
  67. package/internal/uploads.mjs.map +1 -1
  68. package/internal/utils/base64.mjs.map +1 -1
  69. package/internal/utils/env.js +2 -2
  70. package/internal/utils/env.js.map +1 -1
  71. package/internal/utils/env.mjs +2 -2
  72. package/internal/utils/env.mjs.map +1 -1
  73. package/internal/utils/log.d.mts.map +1 -1
  74. package/internal/utils/log.d.ts.map +1 -1
  75. package/internal/utils/log.js +2 -0
  76. package/internal/utils/log.js.map +1 -1
  77. package/internal/utils/log.mjs +2 -0
  78. package/internal/utils/log.mjs.map +1 -1
  79. package/internal/utils/path.mjs.map +1 -1
  80. package/internal/utils/query.mjs.map +1 -1
  81. package/internal/utils/values.mjs.map +1 -1
  82. package/internal/utils.d.mts.map +1 -1
  83. package/internal/utils.d.ts.map +1 -1
  84. package/internal/utils.mjs.map +1 -1
  85. package/package.json +1 -1
  86. package/resource.d.mts +1 -0
  87. package/resource.d.mts.map +1 -1
  88. package/resource.d.ts +1 -0
  89. package/resource.d.ts.map +1 -1
  90. package/resource.mjs +1 -0
  91. package/resource.mjs.map +1 -1
  92. package/resources/analytics.d.mts +22 -2
  93. package/resources/analytics.d.mts.map +1 -1
  94. package/resources/analytics.d.ts +22 -2
  95. package/resources/analytics.d.ts.map +1 -1
  96. package/resources/analytics.mjs.map +1 -1
  97. package/resources/domains.d.mts +26 -26
  98. package/resources/domains.d.mts.map +1 -1
  99. package/resources/domains.d.ts +26 -26
  100. package/resources/domains.d.ts.map +1 -1
  101. package/resources/domains.js +8 -8
  102. package/resources/domains.js.map +1 -1
  103. package/resources/domains.mjs +8 -8
  104. package/resources/domains.mjs.map +1 -1
  105. package/resources/events.d.mts +49 -3
  106. package/resources/events.d.mts.map +1 -1
  107. package/resources/events.d.ts +49 -3
  108. package/resources/events.d.ts.map +1 -1
  109. package/resources/events.mjs.map +1 -1
  110. package/resources/index.d.mts +4 -4
  111. package/resources/index.d.mts.map +1 -1
  112. package/resources/index.d.ts +4 -4
  113. package/resources/index.d.ts.map +1 -1
  114. package/resources/index.mjs.map +1 -1
  115. package/resources/links/bulk.d.mts +10 -0
  116. package/resources/links/bulk.d.mts.map +1 -1
  117. package/resources/links/bulk.d.ts +10 -0
  118. package/resources/links/bulk.d.ts.map +1 -1
  119. package/resources/links/bulk.mjs.map +1 -1
  120. package/resources/links/index.d.mts +1 -1
  121. package/resources/links/index.d.mts.map +1 -1
  122. package/resources/links/index.d.ts +1 -1
  123. package/resources/links/index.d.ts.map +1 -1
  124. package/resources/links/index.mjs.map +1 -1
  125. package/resources/links/links.d.mts +257 -201
  126. package/resources/links/links.d.mts.map +1 -1
  127. package/resources/links/links.d.ts +257 -201
  128. package/resources/links/links.d.ts.map +1 -1
  129. package/resources/links/links.js +21 -21
  130. package/resources/links/links.js.map +1 -1
  131. package/resources/links/links.mjs +21 -21
  132. package/resources/links/links.mjs.map +1 -1
  133. package/resources/links.d.mts.map +1 -1
  134. package/resources/links.d.ts.map +1 -1
  135. package/resources/links.mjs.map +1 -1
  136. package/resources/projects.d.mts.map +1 -1
  137. package/resources/projects.d.ts.map +1 -1
  138. package/resources/projects.mjs.map +1 -1
  139. package/resources/qrcodes/bulk.d.mts +83 -7
  140. package/resources/qrcodes/bulk.d.mts.map +1 -1
  141. package/resources/qrcodes/bulk.d.ts +83 -7
  142. package/resources/qrcodes/bulk.d.ts.map +1 -1
  143. package/resources/qrcodes/bulk.mjs.map +1 -1
  144. package/resources/qrcodes/index.d.mts +1 -1
  145. package/resources/qrcodes/index.d.mts.map +1 -1
  146. package/resources/qrcodes/index.d.ts +1 -1
  147. package/resources/qrcodes/index.d.ts.map +1 -1
  148. package/resources/qrcodes/index.mjs.map +1 -1
  149. package/resources/qrcodes/qrcodes.d.mts +385 -169
  150. package/resources/qrcodes/qrcodes.d.mts.map +1 -1
  151. package/resources/qrcodes/qrcodes.d.ts +385 -169
  152. package/resources/qrcodes/qrcodes.d.ts.map +1 -1
  153. package/resources/qrcodes/qrcodes.js +11 -11
  154. package/resources/qrcodes/qrcodes.js.map +1 -1
  155. package/resources/qrcodes/qrcodes.mjs +11 -11
  156. package/resources/qrcodes/qrcodes.mjs.map +1 -1
  157. package/resources/qrcodes.d.mts.map +1 -1
  158. package/resources/qrcodes.d.ts.map +1 -1
  159. package/resources/qrcodes.mjs.map +1 -1
  160. package/resources/tags.d.mts +12 -12
  161. package/resources/tags.d.mts.map +1 -1
  162. package/resources/tags.d.ts +12 -12
  163. package/resources/tags.d.ts.map +1 -1
  164. package/resources/tags.js +6 -6
  165. package/resources/tags.js.map +1 -1
  166. package/resources/tags.mjs +6 -6
  167. package/resources/tags.mjs.map +1 -1
  168. package/resources/track.d.mts +8 -7
  169. package/resources/track.d.mts.map +1 -1
  170. package/resources/track.d.ts +8 -7
  171. package/resources/track.d.ts.map +1 -1
  172. package/resources/track.mjs.map +1 -1
  173. package/resources.d.mts.map +1 -1
  174. package/resources.d.ts.map +1 -1
  175. package/resources.mjs.map +1 -1
  176. package/src/client.ts +25 -5
  177. package/src/internal/types.ts +6 -8
  178. package/src/internal/utils/env.ts +2 -2
  179. package/src/internal/utils/log.ts +2 -0
  180. package/src/resources/analytics.ts +32 -2
  181. package/src/resources/domains.ts +37 -37
  182. package/src/resources/events.ts +80 -3
  183. package/src/resources/index.ts +4 -4
  184. package/src/resources/links/bulk.ts +22 -0
  185. package/src/resources/links/index.ts +1 -1
  186. package/src/resources/links/links.ts +289 -212
  187. package/src/resources/qrcodes/bulk.ts +118 -7
  188. package/src/resources/qrcodes/index.ts +1 -1
  189. package/src/resources/qrcodes/qrcodes.ts +603 -309
  190. package/src/resources/tags.ts +16 -16
  191. package/src/resources/track.ts +8 -7
  192. package/src/version.ts +1 -1
  193. package/uploads.d.mts +1 -0
  194. package/uploads.d.mts.map +1 -1
  195. package/uploads.d.ts +1 -0
  196. package/uploads.d.ts.map +1 -1
  197. package/uploads.mjs +1 -0
  198. package/uploads.mjs.map +1 -1
  199. package/version.d.mts +1 -1
  200. package/version.d.ts +1 -1
  201. package/version.js +1 -1
  202. package/version.mjs +1 -1
@@ -23,6 +23,21 @@ export class Qrcodes extends APIResource {
23
23
  return this._client.post('/qrcodes', { body, ...options });
24
24
  }
25
25
 
26
+ /**
27
+ * Retrieve a paginated list of QR Codes for the authenticated workspace.
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * const qrCodes = await client.qrcodes.list();
32
+ * ```
33
+ */
34
+ list(
35
+ query: QrcodeListParams | null | undefined = {},
36
+ options?: RequestOptions,
37
+ ): APIPromise<QrcodeListResponse> {
38
+ return this._client.get('/qrcodes', { query, ...options });
39
+ }
40
+
26
41
  /**
27
42
  * Retrieve the info for a QR Code.
28
43
  *
@@ -56,21 +71,6 @@ export class Qrcodes extends APIResource {
56
71
  return this._client.put(path`/qrcodes/${qrcodeID}`, { body, ...options });
57
72
  }
58
73
 
59
- /**
60
- * Retrieve a paginated list of QR Codes for the authenticated workspace.
61
- *
62
- * @example
63
- * ```ts
64
- * const qrCodes = await client.qrcodes.list();
65
- * ```
66
- */
67
- list(
68
- query: QrcodeListParams | null | undefined = {},
69
- options?: RequestOptions,
70
- ): APIPromise<QrcodeListResponse> {
71
- return this._client.get('/qrcodes', { query, ...options });
72
- }
73
-
74
74
  /**
75
75
  * Delete a QR Code for the authenticated workspace.
76
76
  *
@@ -291,6 +291,11 @@ export interface QrCode {
291
291
  */
292
292
  rewrite: boolean;
293
293
 
294
+ /**
295
+ * Smart rules for conditional destination routing by request attribute.
296
+ */
297
+ rules: Array<QrCode.Rule> | null;
298
+
294
299
  /**
295
300
  * The amount of the sale generated by the link.
296
301
  */
@@ -371,8 +376,10 @@ export interface QrCode {
371
376
  | 'crypto'
372
377
  | 'sms'
373
378
  | 'facetime'
379
+ | 'geo'
374
380
  | 'latlog'
375
- | 'pix';
381
+ | 'pix'
382
+ | 'whatsapp';
376
383
 
377
384
  /**
378
385
  * The date and time the QR code was updated last.
@@ -426,6 +433,12 @@ export interface QrCode {
426
433
  */
427
434
  vcard: { [key: string]: string } | null;
428
435
 
436
+ /**
437
+ * The WhatsApp click-to-chat info: E.164 number (digits only) and optional
438
+ * prefilled message.
439
+ */
440
+ whatsapp: QrCode.Whatsapp | null;
441
+
429
442
  /**
430
443
  * The width of the QR code.
431
444
  */
@@ -436,6 +449,14 @@ export interface QrCode {
436
449
  */
437
450
  wifi: { [key: string]: string } | null;
438
451
 
452
+ /**
453
+ * Typographic styles applied to the frame label text. Object with optional keys:
454
+ * `weight` (`normal` | `bold`), `style` (`normal` | `italic`), `family` (`sans` |
455
+ * `sans-condensed` | `serif` | `serif-elegant` | `mono`), `size` (`s` | `m` | `l`
456
+ * | `xl`). Every field is enum-gated on write; omitted keys render with defaults.
457
+ */
458
+ frameTextStyles?: QrCode.FrameTextStyles | null;
459
+
439
460
  /**
440
461
  * The ID of the page to redirect to before the QR code destination.
441
462
  */
@@ -447,6 +468,44 @@ export interface QrCode {
447
468
  pageUrl?: string | null;
448
469
  }
449
470
 
471
+ export namespace QrCode {
472
+ export interface Rule {
473
+ attribute: 'device' | 'country' | 'utm_source' | 'utm_medium' | 'utm_campaign' | 'referrer' | 'language';
474
+
475
+ operator: 'equals' | 'not_equals';
476
+
477
+ url: string;
478
+
479
+ value: string;
480
+ }
481
+
482
+ /**
483
+ * The WhatsApp click-to-chat info: E.164 number (digits only) and optional
484
+ * prefilled message.
485
+ */
486
+ export interface Whatsapp {
487
+ number: string;
488
+
489
+ message?: string;
490
+ }
491
+
492
+ /**
493
+ * Typographic styles applied to the frame label text. Object with optional keys:
494
+ * `weight` (`normal` | `bold`), `style` (`normal` | `italic`), `family` (`sans` |
495
+ * `sans-condensed` | `serif` | `serif-elegant` | `mono`), `size` (`s` | `m` | `l`
496
+ * | `xl`). Every field is enum-gated on write; omitted keys render with defaults.
497
+ */
498
+ export interface FrameTextStyles {
499
+ family?: 'sans' | 'sans-condensed' | 'serif' | 'serif-elegant' | 'mono';
500
+
501
+ size?: 's' | 'm' | 'l' | 'xl';
502
+
503
+ style?: 'normal' | 'italic';
504
+
505
+ weight?: 'normal' | 'bold';
506
+ }
507
+ }
508
+
450
509
  export type QrcodeListResponse = Array<QrCode>;
451
510
 
452
511
  export interface QrcodeDeleteResponse {
@@ -460,7 +519,20 @@ export interface QrcodeCreateParams {
460
519
  /**
461
520
  * The type of content of the QR code.
462
521
  */
463
- type: 'url' | 'text' | 'email' | 'wifi' | 'phone' | 'vcard' | 'crypto' | 'sms' | 'facetime' | 'latlog';
522
+ type:
523
+ | 'url'
524
+ | 'text'
525
+ | 'email'
526
+ | 'wifi'
527
+ | 'phone'
528
+ | 'vcard'
529
+ | 'crypto'
530
+ | 'sms'
531
+ | 'facetime'
532
+ | 'geo'
533
+ | 'latlog'
534
+ | 'pix'
535
+ | 'whatsapp';
464
536
 
465
537
  /**
466
538
  * The destination URL for Android for the QR code for device targeting Android.
@@ -473,7 +545,8 @@ export interface QrcodeCreateParams {
473
545
  archived?: boolean;
474
546
 
475
547
  /**
476
- * The background color of the QR code.
548
+ * The background color of the QR code (hex or CSS keyword). Invalid values are
549
+ * coerced to default.
477
550
  */
478
551
  bgColor?: string;
479
552
 
@@ -544,7 +617,8 @@ export interface QrcodeCreateParams {
544
617
  facetime?: { [key: string]: string } | null;
545
618
 
546
619
  /**
547
- * The foreground color of the QR code.
620
+ * The foreground color of the QR code (hex or CSS keyword). Invalid values are
621
+ * coerced to default.
548
622
  */
549
623
  fgColor?: string;
550
624
 
@@ -578,15 +652,26 @@ export interface QrcodeCreateParams {
578
652
  frameColor?: string;
579
653
 
580
654
  /**
581
- * The text of the frame of the QR code.
655
+ * Label text rendered inside the frame (e.g. "SCAN ME", a product SKU). Maximum
656
+ * 200 characters. Word-wraps to multiple lines at larger sizes; the frame bar
657
+ * grows vertically to fit.
582
658
  */
583
659
  frameText?: string;
584
660
 
585
661
  /**
586
- * The color of the text inside the frame (hex or CSS keyword). When not set, a
587
- * contrasting color is derived from the frame color.
662
+ * Color of the frame label text (hex `#RRGGBB`, `#RGB`, `#RRGGBBAA`, or a CSS
663
+ * keyword from the allowlist). When omitted, a contrasting color is derived
664
+ * automatically from `frameColor`.
665
+ */
666
+ frameTextColor?: string | null;
667
+
668
+ /**
669
+ * Typographic styles applied to the frame label text. Every key is enum-gated —
670
+ * unknown keys or out-of-enum values are rejected to prevent SVG attribute
671
+ * injection. All fields are optional; omitted keys fall back to the default
672
+ * (normal weight, normal style, sans family, medium size).
588
673
  */
589
- frameTextColor?: string;
674
+ frameTextStyles?: QrcodeCreateParams.FrameTextStyles | null;
590
675
 
591
676
  /**
592
677
  * Geographic segmentation information for the QR code in the JSON format
@@ -662,6 +747,12 @@ export interface QrcodeCreateParams {
662
747
  */
663
748
  phone?: string | null;
664
749
 
750
+ /**
751
+ * The prefix for the randomly generated key. If provided, the key will be prefixed
752
+ * with this value.
753
+ */
754
+ prefix?: string;
755
+
665
756
  /**
666
757
  * If the QR code has pre-redirection.
667
758
  */
@@ -682,6 +773,11 @@ export interface QrcodeCreateParams {
682
773
  */
683
774
  rewrite?: boolean;
684
775
 
776
+ /**
777
+ * Smart rules for conditional destination routing by request attribute.
778
+ */
779
+ rules?: Array<QrcodeCreateParams.Rule> | null;
780
+
685
781
  /**
686
782
  * The shape of the design around the QR code (none, square, circle).
687
783
  */
@@ -728,6 +824,13 @@ export interface QrcodeCreateParams {
728
824
  */
729
825
  tagNames?: string | Array<string>;
730
826
 
827
+ /**
828
+ * ID of a QR code (in the same project) marked as a template. Its customization
829
+ * fields (colors, logo, pattern, shape, frame) will be applied to the new QR code
830
+ * unless explicitly overridden.
831
+ */
832
+ templateId?: string | null;
833
+
731
834
  /**
732
835
  * The text of the QR code.
733
836
  */
@@ -772,6 +875,12 @@ export interface QrcodeCreateParams {
772
875
  */
773
876
  webhookIds?: Array<string> | null;
774
877
 
878
+ /**
879
+ * The WhatsApp click-to-chat info: E.164 number (digits only) and optional
880
+ * prefilled message.
881
+ */
882
+ whatsapp?: QrcodeCreateParams.Whatsapp | null;
883
+
775
884
  /**
776
885
  * Logo width in pixels. When omitted, a proportional size is used based on the QR
777
886
  * code size (about 10–20% depending on size).
@@ -785,6 +894,40 @@ export interface QrcodeCreateParams {
785
894
  }
786
895
 
787
896
  export namespace QrcodeCreateParams {
897
+ /**
898
+ * Typographic styles applied to the frame label text. Every key is enum-gated —
899
+ * unknown keys or out-of-enum values are rejected to prevent SVG attribute
900
+ * injection. All fields are optional; omitted keys fall back to the default
901
+ * (normal weight, normal style, sans family, medium size).
902
+ */
903
+ export interface FrameTextStyles {
904
+ /**
905
+ * Font family used for the frame label text. `sans` = Arial / Helvetica (default).
906
+ * `sans-condensed` = Arial Narrow. `serif` = Georgia / Times New Roman.
907
+ * `serif-elegant` = Palatino Linotype / Book Antiqua. `mono` = Courier New. Values
908
+ * resolve to safe system font stacks on the rendered SVG.
909
+ */
910
+ family?: 'sans' | 'sans-condensed' | 'serif' | 'serif-elegant' | 'mono';
911
+
912
+ /**
913
+ * Font size preset for the frame label. `s` = 60 viewBox units, `m` = 89.1
914
+ * (default), `l` = 120, `xl` = 150. Larger sizes grow the frame bar vertically to
915
+ * fit. Extremely long text auto-shrinks to keep within 4 lines (floor 48).
916
+ */
917
+ size?: 's' | 'm' | 'l' | 'xl';
918
+
919
+ /**
920
+ * Font style of the frame label text. `italic` applies `font-style="italic"`.
921
+ */
922
+ style?: 'normal' | 'italic';
923
+
924
+ /**
925
+ * Font weight of the frame label text. `bold` renders at SVG `font-weight="700"`,
926
+ * `normal` at `400`.
927
+ */
928
+ weight?: 'normal' | 'bold';
929
+ }
930
+
788
931
  /**
789
932
  * Geographic segmentation information for the QR code in the JSON format
790
933
  * `{[COUNTRY]: https://example.com }`.
@@ -1290,207 +1433,458 @@ export namespace QrcodeCreateParams {
1290
1433
 
1291
1434
  ZW?: string;
1292
1435
  }
1293
- }
1294
1436
 
1295
- export interface QrcodeRetrieveParams {
1296
- /**
1297
- * The domain of the QR code to be retrieved. For example, for
1298
- * `codeqr.link/github`, the domain is `codeqr.link`.
1299
- */
1300
- domain: string;
1437
+ export interface Rule {
1438
+ attribute: 'device' | 'country' | 'utm_source' | 'utm_medium' | 'utm_campaign' | 'referrer' | 'language';
1301
1439
 
1302
- /**
1303
- * The key of the QR code to be retrieved. For example, for `codeqr.link/github`,
1304
- * the key is `github`.
1305
- */
1306
- key: string;
1440
+ operator: 'equals' | 'not_equals';
1307
1441
 
1308
- /**
1309
- * The slug of the project to which the QR code belongs. For example, for
1310
- * `app.codeqr.io/acme`, the projectSlug is `acme`.
1311
- */
1312
- projectSlug: string;
1442
+ url: string;
1313
1443
 
1314
- /**
1315
- * This is the ID of the QR code in your database. It must be prefixed with `ext_`
1316
- * when passed as a query parameter.
1317
- */
1318
- externalId?: string;
1444
+ value: string;
1445
+ }
1319
1446
 
1320
1447
  /**
1321
- * The unique ID of the QR code.
1448
+ * The WhatsApp click-to-chat info: E.164 number (digits only) and optional
1449
+ * prefilled message.
1322
1450
  */
1323
- qrCodeId?: string;
1451
+ export interface Whatsapp {
1452
+ number: string;
1453
+
1454
+ message?: string;
1455
+ }
1324
1456
  }
1325
1457
 
1326
- export interface QrcodeUpdateParams {
1458
+ export interface QrcodeListParams {
1327
1459
  /**
1328
- * The destination URL for Android for the QR code for device targeting Android.
1460
+ * The comments to filter by.
1329
1461
  */
1330
- android?: string | null;
1462
+ comments?: string;
1331
1463
 
1332
1464
  /**
1333
- * If the QR code is archived.
1465
+ * Filter QR codes created after this date
1334
1466
  */
1335
- archived?: boolean;
1467
+ createdAfter?: string;
1336
1468
 
1337
1469
  /**
1338
- * The background color of the QR code.
1470
+ * Filter QR codes created before this date
1339
1471
  */
1340
- bgColor?: string;
1472
+ createdBefore?: string;
1341
1473
 
1342
1474
  /**
1343
- * The comments for the QR code.
1475
+ * The domain to filter the QR codes. For example, `ac.me`. If not provided, all QR
1476
+ * codes of the project will be returned.
1344
1477
  */
1345
- comments?: string | null;
1478
+ domain?: string;
1346
1479
 
1347
1480
  /**
1348
- * The static content of the QR code.
1481
+ * Filter QR codes expiring after this date
1349
1482
  */
1350
- contentStatic?: string | null;
1483
+ expiresAfter?: string;
1351
1484
 
1352
1485
  /**
1353
- * The cryptocurrency information of the QR code.
1486
+ * The date and time the QR code will expire in ISO-8601 format. Must be in the
1487
+ * future.
1354
1488
  */
1355
- crypto?: { [key: string]: string } | null;
1489
+ expiresAt?: string | null;
1356
1490
 
1357
1491
  /**
1358
- * The description of the QR code generated via `api.codeqr.io/metatags`. Will be
1359
- * used for custom link preview if `proxy` is true.
1492
+ * Filter QR codes expiring before this date
1360
1493
  */
1361
- description?: string | null;
1494
+ expiresBefore?: string;
1362
1495
 
1363
1496
  /**
1364
- * Allow search engines to index your QR code. The default is `false` if not
1365
- * provided. Learn more: https://codeqr.link/noindex
1497
+ * The folder ID to filter the QR codes by.
1366
1498
  */
1367
- doIndex?: boolean;
1499
+ folderId?: string;
1368
1500
 
1369
1501
  /**
1370
- * The domain of the QR code. If not provided, the main domain of the project will
1371
- * be used (or `codeqr.link` if the project does not have domains).
1502
+ * Filter by QR code format - static or dynamic
1372
1503
  */
1373
- domain?: string;
1504
+ format?: 'static' | 'dynamic';
1374
1505
 
1375
1506
  /**
1376
- * The email information of the QR code.
1507
+ * Filter QR codes with/without comments
1377
1508
  */
1378
- email?: { [key: string]: string } | null;
1509
+ hasComments?: boolean;
1379
1510
 
1380
1511
  /**
1381
- * If the QR code should have excavated areas.
1512
+ * Filter QR codes with/without custom social media cards
1382
1513
  */
1383
- excavate?: boolean;
1514
+ hasCustomSocial?: boolean;
1384
1515
 
1385
1516
  /**
1386
- * The URL to redirect when the QR code expires.
1517
+ * Filter QR codes with/without device targeting
1387
1518
  */
1388
- expiredUrl?: string | null;
1519
+ hasDevice?: boolean;
1389
1520
 
1390
1521
  /**
1391
- * The date and time the QR code will expire in ISO-8601 format. Must be in the
1392
- * future.
1522
+ * Filter QR codes with/without expiration date
1393
1523
  */
1394
- expiresAt?: string | null;
1524
+ hasExpiration?: boolean;
1395
1525
 
1396
1526
  /**
1397
- * This is the ID of the QR code in your database. If defined, it can be used to
1398
- * identify the QR code in the future. It must be prefixed with `ext_` when passed
1399
- * as a query parameter.
1527
+ * Filter QR codes with/without geo-targeting
1400
1528
  */
1401
- externalId?: string | null;
1529
+ hasGeo?: boolean;
1402
1530
 
1403
1531
  /**
1404
- * The FaceTime information of the QR code.
1532
+ * Filter QR codes with/without password protection
1405
1533
  */
1406
- facetime?: { [key: string]: string } | null;
1534
+ hasPassword?: boolean;
1407
1535
 
1408
1536
  /**
1409
- * The foreground color of the QR code.
1537
+ * Filter QR codes with/without tags
1410
1538
  */
1411
- fgColor?: string;
1539
+ hasTags?: boolean;
1412
1540
 
1413
1541
  /**
1414
- * If the QR code is filled.
1542
+ * Filter QR codes with/without UTM parameters
1415
1543
  */
1416
- filled?: boolean;
1544
+ hasUTM?: boolean;
1417
1545
 
1418
1546
  /**
1419
- * If the QR code is flexible.
1547
+ * The page number for pagination.
1420
1548
  */
1421
- flexible?: boolean;
1549
+ page?: number;
1422
1550
 
1423
1551
  /**
1424
- * The unique ID of the folder assigned to the QR code. Omit or set to null for no
1425
- * folder.
1552
+ * The number of items per page.
1426
1553
  */
1427
- folderId?: string | null;
1554
+ pageSize?: number;
1428
1555
 
1429
1556
  /**
1430
- * The type of frame of the QR code (e.g. none, frame-1, frame-2, frame-3, frame-5,
1431
- * frame-6). frame-5/6 are top-bar variants. Unknown ids fall back to no frame at
1432
- * render.
1557
+ * The password to filter by.
1433
1558
  */
1434
- frame?: string;
1559
+ password?: string;
1435
1560
 
1436
1561
  /**
1437
- * The color of the frame (hex or CSS keyword). Invalid values are coerced to
1438
- * default.
1562
+ * The slug of the project to which the QR code belongs. For example, for
1563
+ * `app.codeqr.io/acme`, the projectSlug is `acme`.
1439
1564
  */
1440
- frameColor?: string;
1565
+ projectSlug?: string;
1441
1566
 
1442
1567
  /**
1443
- * The text of the frame of the QR code.
1568
+ * Maximum number of scans
1444
1569
  */
1445
- frameText?: string;
1570
+ scansMax?: number;
1446
1571
 
1447
1572
  /**
1448
- * The color of the text inside the frame (hex or CSS keyword). When not set, a
1449
- * contrasting color is derived from the frame color.
1573
+ * Minimum number of scans
1450
1574
  */
1451
- frameTextColor?: string;
1575
+ scansMin?: number;
1452
1576
 
1453
1577
  /**
1454
- * Geographic segmentation information for the QR code in the JSON format
1455
- * `{[COUNTRY]: https://example.com }`.
1578
+ * The search term to filter the QR codes. The search term will be matched against
1579
+ * the QR code slug, title, and the destination URL.
1456
1580
  */
1457
- geo?: QrcodeUpdateParams.Geo | null;
1581
+ search?: string;
1458
1582
 
1459
1583
  /**
1460
- * Logo height in pixels. When omitted, a proportional size is used based on the QR
1461
- * code size (about 10–20% depending on size).
1584
+ * If should include archived QR codes in the response. The default is `false` if
1585
+ * not provided.
1462
1586
  */
1463
- height?: number;
1587
+ showArchived?: boolean;
1464
1588
 
1465
1589
  /**
1466
- * The image of the QR code generated via `api.codeqr.io/metatags`. Will be used
1467
- * for custom link preview if `proxy` is true.
1590
+ * The field to order the QR codes. The default is `createdAt`, and the order of
1591
+ * sorting is always descending.
1468
1592
  */
1469
- image?: string | null;
1593
+ sort?: 'createdAt' | 'scans' | 'lastClicked';
1470
1594
 
1471
1595
  /**
1472
- * The destination URL for iOS for the QR code for device targeting iOS.
1596
+ * @deprecated [DEPRECATED (use tagIds instead)]: The unique ID of the tag assigned
1597
+ * to the QR code.
1473
1598
  */
1474
- ios?: string | null;
1599
+ tagId?: string;
1475
1600
 
1476
1601
  /**
1477
- * If the form is mandatory for the page.
1602
+ * The IDs of the tags to filter the QR codes.
1478
1603
  */
1479
- isFormMandatory?: boolean;
1604
+ tagIds?: string | Array<string>;
1480
1605
 
1481
1606
  /**
1482
- * The slug of the QR code. If not provided, a random slug of 7 characters will be
1483
- * generated.
1607
+ * The unique name of the tags assigned to the QR code (case insensitive).
1484
1608
  */
1485
- key?: string;
1609
+ tagNames?: string | Array<string>;
1486
1610
 
1487
1611
  /**
1488
- * The latitude and longitude information of the QR code.
1612
+ * If should include QR codes with conversion tracking enabled. The default is
1613
+ * `false` if not provided.
1489
1614
  */
1490
- latlog?: { [key: string]: string } | null;
1615
+ trackConversion?: boolean;
1491
1616
 
1492
1617
  /**
1493
- * The level of error correction of the QR code.
1618
+ * Filter by QR code type
1619
+ */
1620
+ type?:
1621
+ | 'url'
1622
+ | 'text'
1623
+ | 'email'
1624
+ | 'wifi'
1625
+ | 'phone'
1626
+ | 'vcard'
1627
+ | 'crypto'
1628
+ | 'sms'
1629
+ | 'facetime'
1630
+ | 'geo'
1631
+ | 'latlog'
1632
+ | 'pix'
1633
+ | 'whatsapp';
1634
+
1635
+ /**
1636
+ * Filter QR codes marked as templates.
1637
+ */
1638
+ useAsTemplate?: boolean;
1639
+
1640
+ /**
1641
+ * The ID of the user to filter by.
1642
+ */
1643
+ userId?: string;
1644
+
1645
+ /**
1646
+ * Filter by UTM campaign value
1647
+ */
1648
+ utm_campaign?: string;
1649
+
1650
+ /**
1651
+ * Filter by UTM content value
1652
+ */
1653
+ utm_content?: string;
1654
+
1655
+ /**
1656
+ * Filter by UTM medium value
1657
+ */
1658
+ utm_medium?: string;
1659
+
1660
+ /**
1661
+ * Filter by UTM source value
1662
+ */
1663
+ utm_source?: string;
1664
+
1665
+ /**
1666
+ * Filter by UTM term value
1667
+ */
1668
+ utm_term?: string;
1669
+
1670
+ /**
1671
+ * If should include tags in the response. The default is `false` if not provided.
1672
+ */
1673
+ withTags?: boolean;
1674
+ }
1675
+
1676
+ export interface QrcodeRetrieveParams {
1677
+ /**
1678
+ * The domain of the QR code to be retrieved. For example, for
1679
+ * `codeqr.link/github`, the domain is `codeqr.link`.
1680
+ */
1681
+ domain: string;
1682
+
1683
+ /**
1684
+ * The key of the QR code to be retrieved. For example, for `codeqr.link/github`,
1685
+ * the key is `github`.
1686
+ */
1687
+ key: string;
1688
+
1689
+ /**
1690
+ * The slug of the project to which the QR code belongs. For example, for
1691
+ * `app.codeqr.io/acme`, the projectSlug is `acme`.
1692
+ */
1693
+ projectSlug: string;
1694
+
1695
+ /**
1696
+ * This is the ID of the QR code in your database. It must be prefixed with `ext_`
1697
+ * when passed as a query parameter.
1698
+ */
1699
+ externalId?: string;
1700
+
1701
+ /**
1702
+ * The unique ID of the QR code.
1703
+ */
1704
+ qrCodeId?: string;
1705
+ }
1706
+
1707
+ export interface QrcodeUpdateParams {
1708
+ /**
1709
+ * The destination URL for Android for the QR code for device targeting Android.
1710
+ */
1711
+ android?: string | null;
1712
+
1713
+ /**
1714
+ * If the QR code is archived.
1715
+ */
1716
+ archived?: boolean;
1717
+
1718
+ /**
1719
+ * The background color of the QR code (hex or CSS keyword). Invalid values are
1720
+ * coerced to default.
1721
+ */
1722
+ bgColor?: string;
1723
+
1724
+ /**
1725
+ * The comments for the QR code.
1726
+ */
1727
+ comments?: string | null;
1728
+
1729
+ /**
1730
+ * The static content of the QR code.
1731
+ */
1732
+ contentStatic?: string | null;
1733
+
1734
+ /**
1735
+ * The cryptocurrency information of the QR code.
1736
+ */
1737
+ crypto?: { [key: string]: string } | null;
1738
+
1739
+ /**
1740
+ * The description of the QR code generated via `api.codeqr.io/metatags`. Will be
1741
+ * used for custom link preview if `proxy` is true.
1742
+ */
1743
+ description?: string | null;
1744
+
1745
+ /**
1746
+ * Allow search engines to index your QR code. The default is `false` if not
1747
+ * provided. Learn more: https://codeqr.link/noindex
1748
+ */
1749
+ doIndex?: boolean;
1750
+
1751
+ /**
1752
+ * The domain of the QR code. If not provided, the main domain of the project will
1753
+ * be used (or `codeqr.link` if the project does not have domains).
1754
+ */
1755
+ domain?: string;
1756
+
1757
+ /**
1758
+ * The email information of the QR code.
1759
+ */
1760
+ email?: { [key: string]: string } | null;
1761
+
1762
+ /**
1763
+ * If the QR code should have excavated areas.
1764
+ */
1765
+ excavate?: boolean;
1766
+
1767
+ /**
1768
+ * The URL to redirect when the QR code expires.
1769
+ */
1770
+ expiredUrl?: string | null;
1771
+
1772
+ /**
1773
+ * The date and time the QR code will expire in ISO-8601 format. Must be in the
1774
+ * future.
1775
+ */
1776
+ expiresAt?: string | null;
1777
+
1778
+ /**
1779
+ * This is the ID of the QR code in your database. If defined, it can be used to
1780
+ * identify the QR code in the future. It must be prefixed with `ext_` when passed
1781
+ * as a query parameter.
1782
+ */
1783
+ externalId?: string | null;
1784
+
1785
+ /**
1786
+ * The FaceTime information of the QR code.
1787
+ */
1788
+ facetime?: { [key: string]: string } | null;
1789
+
1790
+ /**
1791
+ * The foreground color of the QR code (hex or CSS keyword). Invalid values are
1792
+ * coerced to default.
1793
+ */
1794
+ fgColor?: string;
1795
+
1796
+ /**
1797
+ * If the QR code is filled.
1798
+ */
1799
+ filled?: boolean;
1800
+
1801
+ /**
1802
+ * If the QR code is flexible.
1803
+ */
1804
+ flexible?: boolean;
1805
+
1806
+ /**
1807
+ * The unique ID of the folder assigned to the QR code. Omit or set to null for no
1808
+ * folder.
1809
+ */
1810
+ folderId?: string | null;
1811
+
1812
+ /**
1813
+ * The type of frame of the QR code (e.g. none, frame-1, frame-2, frame-3, frame-5,
1814
+ * frame-6). frame-5/6 are top-bar variants. Unknown ids fall back to no frame at
1815
+ * render.
1816
+ */
1817
+ frame?: string;
1818
+
1819
+ /**
1820
+ * The color of the frame (hex or CSS keyword). Invalid values are coerced to
1821
+ * default.
1822
+ */
1823
+ frameColor?: string;
1824
+
1825
+ /**
1826
+ * Label text rendered inside the frame (e.g. "SCAN ME", a product SKU). Maximum
1827
+ * 200 characters. Word-wraps to multiple lines at larger sizes; the frame bar
1828
+ * grows vertically to fit.
1829
+ */
1830
+ frameText?: string;
1831
+
1832
+ /**
1833
+ * Color of the frame label text (hex `#RRGGBB`, `#RGB`, `#RRGGBBAA`, or a CSS
1834
+ * keyword from the allowlist). When omitted, a contrasting color is derived
1835
+ * automatically from `frameColor`.
1836
+ */
1837
+ frameTextColor?: string | null;
1838
+
1839
+ /**
1840
+ * Typographic styles applied to the frame label text. Every key is enum-gated —
1841
+ * unknown keys or out-of-enum values are rejected to prevent SVG attribute
1842
+ * injection. All fields are optional; omitted keys fall back to the default
1843
+ * (normal weight, normal style, sans family, medium size).
1844
+ */
1845
+ frameTextStyles?: QrcodeUpdateParams.FrameTextStyles | null;
1846
+
1847
+ /**
1848
+ * Geographic segmentation information for the QR code in the JSON format
1849
+ * `{[COUNTRY]: https://example.com }`.
1850
+ */
1851
+ geo?: QrcodeUpdateParams.Geo | null;
1852
+
1853
+ /**
1854
+ * Logo height in pixels. When omitted, a proportional size is used based on the QR
1855
+ * code size (about 10–20% depending on size).
1856
+ */
1857
+ height?: number;
1858
+
1859
+ /**
1860
+ * The image of the QR code generated via `api.codeqr.io/metatags`. Will be used
1861
+ * for custom link preview if `proxy` is true.
1862
+ */
1863
+ image?: string | null;
1864
+
1865
+ /**
1866
+ * The destination URL for iOS for the QR code for device targeting iOS.
1867
+ */
1868
+ ios?: string | null;
1869
+
1870
+ /**
1871
+ * If the form is mandatory for the page.
1872
+ */
1873
+ isFormMandatory?: boolean;
1874
+
1875
+ /**
1876
+ * The slug of the QR code. If not provided, a random slug of 7 characters will be
1877
+ * generated.
1878
+ */
1879
+ key?: string;
1880
+
1881
+ /**
1882
+ * The latitude and longitude information of the QR code.
1883
+ */
1884
+ latlog?: { [key: string]: string } | null;
1885
+
1886
+ /**
1887
+ * The level of error correction of the QR code.
1494
1888
  */
1495
1889
  level?: string;
1496
1890
 
@@ -1524,6 +1918,12 @@ export interface QrcodeUpdateParams {
1524
1918
  */
1525
1919
  phone?: string | null;
1526
1920
 
1921
+ /**
1922
+ * The prefix for the randomly generated key. If provided, the key will be prefixed
1923
+ * with this value.
1924
+ */
1925
+ prefix?: string;
1926
+
1527
1927
  /**
1528
1928
  * If the QR code has pre-redirection.
1529
1929
  */
@@ -1544,6 +1944,11 @@ export interface QrcodeUpdateParams {
1544
1944
  */
1545
1945
  rewrite?: boolean;
1546
1946
 
1947
+ /**
1948
+ * Smart rules for conditional destination routing by request attribute.
1949
+ */
1950
+ rules?: Array<QrcodeUpdateParams.Rule> | null;
1951
+
1547
1952
  /**
1548
1953
  * The shape of the design around the QR code (none, square, circle).
1549
1954
  */
@@ -1590,6 +1995,13 @@ export interface QrcodeUpdateParams {
1590
1995
  */
1591
1996
  tagNames?: string | Array<string>;
1592
1997
 
1998
+ /**
1999
+ * ID of a QR code (in the same project) marked as a template. Its customization
2000
+ * fields (colors, logo, pattern, shape, frame) will be applied to the new QR code
2001
+ * unless explicitly overridden.
2002
+ */
2003
+ templateId?: string | null;
2004
+
1593
2005
  /**
1594
2006
  * The text of the QR code.
1595
2007
  */
@@ -1609,7 +2021,20 @@ export interface QrcodeUpdateParams {
1609
2021
  /**
1610
2022
  * The type of content of the QR code.
1611
2023
  */
1612
- type?: 'url' | 'text' | 'email' | 'wifi' | 'phone' | 'vcard' | 'crypto' | 'sms' | 'facetime' | 'latlog';
2024
+ type?:
2025
+ | 'url'
2026
+ | 'text'
2027
+ | 'email'
2028
+ | 'wifi'
2029
+ | 'phone'
2030
+ | 'vcard'
2031
+ | 'crypto'
2032
+ | 'sms'
2033
+ | 'facetime'
2034
+ | 'geo'
2035
+ | 'latlog'
2036
+ | 'pix'
2037
+ | 'whatsapp';
1613
2038
 
1614
2039
  /**
1615
2040
  * The destination URL of the QR code.
@@ -1639,6 +2064,12 @@ export interface QrcodeUpdateParams {
1639
2064
  */
1640
2065
  webhookIds?: Array<string> | null;
1641
2066
 
2067
+ /**
2068
+ * The WhatsApp click-to-chat info: E.164 number (digits only) and optional
2069
+ * prefilled message.
2070
+ */
2071
+ whatsapp?: QrcodeUpdateParams.Whatsapp | null;
2072
+
1642
2073
  /**
1643
2074
  * Logo width in pixels. When omitted, a proportional size is used based on the QR
1644
2075
  * code size (about 10–20% depending on size).
@@ -1652,6 +2083,40 @@ export interface QrcodeUpdateParams {
1652
2083
  }
1653
2084
 
1654
2085
  export namespace QrcodeUpdateParams {
2086
+ /**
2087
+ * Typographic styles applied to the frame label text. Every key is enum-gated —
2088
+ * unknown keys or out-of-enum values are rejected to prevent SVG attribute
2089
+ * injection. All fields are optional; omitted keys fall back to the default
2090
+ * (normal weight, normal style, sans family, medium size).
2091
+ */
2092
+ export interface FrameTextStyles {
2093
+ /**
2094
+ * Font family used for the frame label text. `sans` = Arial / Helvetica (default).
2095
+ * `sans-condensed` = Arial Narrow. `serif` = Georgia / Times New Roman.
2096
+ * `serif-elegant` = Palatino Linotype / Book Antiqua. `mono` = Courier New. Values
2097
+ * resolve to safe system font stacks on the rendered SVG.
2098
+ */
2099
+ family?: 'sans' | 'sans-condensed' | 'serif' | 'serif-elegant' | 'mono';
2100
+
2101
+ /**
2102
+ * Font size preset for the frame label. `s` = 60 viewBox units, `m` = 89.1
2103
+ * (default), `l` = 120, `xl` = 150. Larger sizes grow the frame bar vertically to
2104
+ * fit. Extremely long text auto-shrinks to keep within 4 lines (floor 48).
2105
+ */
2106
+ size?: 's' | 'm' | 'l' | 'xl';
2107
+
2108
+ /**
2109
+ * Font style of the frame label text. `italic` applies `font-style="italic"`.
2110
+ */
2111
+ style?: 'normal' | 'italic';
2112
+
2113
+ /**
2114
+ * Font weight of the frame label text. `bold` renders at SVG `font-weight="700"`,
2115
+ * `normal` at `400`.
2116
+ */
2117
+ weight?: 'normal' | 'bold';
2118
+ }
2119
+
1655
2120
  /**
1656
2121
  * Geographic segmentation information for the QR code in the JSON format
1657
2122
  * `{[COUNTRY]: https://example.com }`.
@@ -2157,197 +2622,26 @@ export namespace QrcodeUpdateParams {
2157
2622
 
2158
2623
  ZW?: string;
2159
2624
  }
2160
- }
2161
-
2162
- export interface QrcodeListParams {
2163
- /**
2164
- * The comments to filter by.
2165
- */
2166
- comments?: string;
2167
-
2168
- /**
2169
- * Filter QR codes created after this date
2170
- */
2171
- createdAfter?: string;
2172
-
2173
- /**
2174
- * Filter QR codes created before this date
2175
- */
2176
- createdBefore?: string;
2177
-
2178
- /**
2179
- * The domain to filter the QR codes. For example, `ac.me`. If not provided, all QR
2180
- * codes of the project will be returned.
2181
- */
2182
- domain?: string;
2183
-
2184
- /**
2185
- * Filter QR codes expiring after this date
2186
- */
2187
- expiresAfter?: string;
2188
-
2189
- /**
2190
- * The date and time the QR code will expire in ISO-8601 format. Must be in the
2191
- * future.
2192
- */
2193
- expiresAt?: string | null;
2194
-
2195
- /**
2196
- * Filter QR codes expiring before this date
2197
- */
2198
- expiresBefore?: string;
2199
-
2200
- /**
2201
- * The folder ID to filter the QR codes by.
2202
- */
2203
- folderId?: string;
2204
-
2205
- /**
2206
- * Filter by QR code format - static or dynamic
2207
- */
2208
- format?: 'static' | 'dynamic';
2209
-
2210
- /**
2211
- * Filter QR codes with/without comments
2212
- */
2213
- hasComments?: boolean;
2214
-
2215
- /**
2216
- * Filter QR codes with/without custom social media cards
2217
- */
2218
- hasCustomSocial?: boolean;
2219
-
2220
- /**
2221
- * Filter QR codes with/without device targeting
2222
- */
2223
- hasDevice?: boolean;
2224
-
2225
- /**
2226
- * Filter QR codes with/without expiration date
2227
- */
2228
- hasExpiration?: boolean;
2229
-
2230
- /**
2231
- * Filter QR codes with/without geo-targeting
2232
- */
2233
- hasGeo?: boolean;
2234
2625
 
2235
- /**
2236
- * Filter QR codes with/without password protection
2237
- */
2238
- hasPassword?: boolean;
2626
+ export interface Rule {
2627
+ attribute: 'device' | 'country' | 'utm_source' | 'utm_medium' | 'utm_campaign' | 'referrer' | 'language';
2239
2628
 
2240
- /**
2241
- * Filter QR codes with/without tags
2242
- */
2243
- hasTags?: boolean;
2244
-
2245
- /**
2246
- * Filter QR codes with/without UTM parameters
2247
- */
2248
- hasUTM?: boolean;
2629
+ operator: 'equals' | 'not_equals';
2249
2630
 
2250
- /**
2251
- * The page number for pagination.
2252
- */
2253
- page?: number;
2254
-
2255
- /**
2256
- * The number of items per page.
2257
- */
2258
- pageSize?: number;
2259
-
2260
- /**
2261
- * The password to filter by.
2262
- */
2263
- password?: string;
2631
+ url: string;
2264
2632
 
2265
- /**
2266
- * The slug of the project to which the QR code belongs. For example, for
2267
- * `app.codeqr.io/acme`, the projectSlug is `acme`.
2268
- */
2269
- projectSlug?: string;
2270
-
2271
- /**
2272
- * Maximum number of scans
2273
- */
2274
- scansMax?: number;
2275
-
2276
- /**
2277
- * Minimum number of scans
2278
- */
2279
- scansMin?: number;
2280
-
2281
- /**
2282
- * The search term to filter the QR codes. The search term will be matched against
2283
- * the QR code slug and the destination URL.
2284
- */
2285
- search?: string;
2286
-
2287
- /**
2288
- * If should include archived QR codes in the response. The default is `false` if
2289
- * not provided.
2290
- */
2291
- showArchived?: boolean;
2292
-
2293
- /**
2294
- * The field to order the QR codes. The default is `createdAt`, and the order of
2295
- * sorting is always descending.
2296
- */
2297
- sort?: 'createdAt' | 'scans' | 'lastClicked';
2298
-
2299
- /**
2300
- * @deprecated [DEPRECATED (use tagIds instead)]: The unique ID of the tag assigned
2301
- * to the QR code.
2302
- */
2303
- tagId?: string;
2304
-
2305
- /**
2306
- * The IDs of the tags to filter the QR codes.
2307
- */
2308
- tagIds?: string | Array<string>;
2309
-
2310
- /**
2311
- * The unique name of the tags assigned to the QR code (case insensitive).
2312
- */
2313
- tagNames?: string | Array<string>;
2314
-
2315
- /**
2316
- * If should include QR codes with conversion tracking enabled. The default is
2317
- * `false` if not provided.
2318
- */
2319
- trackConversion?: boolean;
2320
-
2321
- /**
2322
- * Filter by QR code type
2323
- */
2324
- type?:
2325
- | 'url'
2326
- | 'text'
2327
- | 'email'
2328
- | 'wifi'
2329
- | 'phone'
2330
- | 'vcard'
2331
- | 'crypto'
2332
- | 'sms'
2333
- | 'facetime'
2334
- | 'latlog'
2335
- | 'pix';
2336
-
2337
- /**
2338
- * Filter QR codes marked as templates.
2339
- */
2340
- useAsTemplate?: boolean;
2633
+ value: string;
2634
+ }
2341
2635
 
2342
2636
  /**
2343
- * The ID of the user to filter by.
2637
+ * The WhatsApp click-to-chat info: E.164 number (digits only) and optional
2638
+ * prefilled message.
2344
2639
  */
2345
- userId?: string;
2640
+ export interface Whatsapp {
2641
+ number: string;
2346
2642
 
2347
- /**
2348
- * If should include tags in the response. The default is `false` if not provided.
2349
- */
2350
- withTags?: boolean;
2643
+ message?: string;
2644
+ }
2351
2645
  }
2352
2646
 
2353
2647
  Qrcodes.Bulk = Bulk;
@@ -2358,9 +2652,9 @@ export declare namespace Qrcodes {
2358
2652
  type QrcodeListResponse as QrcodeListResponse,
2359
2653
  type QrcodeDeleteResponse as QrcodeDeleteResponse,
2360
2654
  type QrcodeCreateParams as QrcodeCreateParams,
2655
+ type QrcodeListParams as QrcodeListParams,
2361
2656
  type QrcodeRetrieveParams as QrcodeRetrieveParams,
2362
2657
  type QrcodeUpdateParams as QrcodeUpdateParams,
2363
- type QrcodeListParams as QrcodeListParams,
2364
2658
  };
2365
2659
 
2366
2660
  export {