digital-tools 2.1.1 → 2.3.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 (293) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +2 -0
  3. package/dist/client.d.ts +109 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +69 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/define.d.ts +2 -2
  8. package/dist/define.d.ts.map +1 -1
  9. package/dist/define.js +22 -20
  10. package/dist/define.js.map +1 -1
  11. package/dist/function-ref.d.ts +229 -0
  12. package/dist/function-ref.d.ts.map +1 -0
  13. package/dist/function-ref.js +28 -0
  14. package/dist/function-ref.js.map +1 -0
  15. package/dist/function-sugar.d.ts +57 -0
  16. package/dist/function-sugar.d.ts.map +1 -0
  17. package/dist/function-sugar.js +79 -0
  18. package/dist/function-sugar.js.map +1 -0
  19. package/dist/index.d.ts +10 -3
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +24 -4
  22. package/dist/index.js.map +1 -1
  23. package/dist/providers/analytics/mixpanel.d.ts.map +1 -1
  24. package/dist/providers/analytics/mixpanel.js +21 -18
  25. package/dist/providers/analytics/mixpanel.js.map +1 -1
  26. package/dist/providers/calendar/cal-com.d.ts.map +1 -1
  27. package/dist/providers/calendar/cal-com.js +10 -10
  28. package/dist/providers/calendar/cal-com.js.map +1 -1
  29. package/dist/providers/calendar/google-calendar.d.ts.map +1 -1
  30. package/dist/providers/calendar/google-calendar.js +4 -4
  31. package/dist/providers/calendar/google-calendar.js.map +1 -1
  32. package/dist/providers/crm/hubspot.d.ts.map +1 -1
  33. package/dist/providers/crm/hubspot.js +107 -85
  34. package/dist/providers/crm/hubspot.js.map +1 -1
  35. package/dist/providers/development/github.d.ts.map +1 -1
  36. package/dist/providers/development/github.js +40 -43
  37. package/dist/providers/development/github.js.map +1 -1
  38. package/dist/providers/ecommerce/shopify.d.ts.map +1 -1
  39. package/dist/providers/ecommerce/shopify.js +79 -62
  40. package/dist/providers/ecommerce/shopify.js.map +1 -1
  41. package/dist/providers/email/resend.d.ts.map +1 -1
  42. package/dist/providers/email/resend.js +20 -16
  43. package/dist/providers/email/resend.js.map +1 -1
  44. package/dist/providers/email/sendgrid.d.ts.map +1 -1
  45. package/dist/providers/email/sendgrid.js +12 -9
  46. package/dist/providers/email/sendgrid.js.map +1 -1
  47. package/dist/providers/finance/stripe.d.ts.map +1 -1
  48. package/dist/providers/finance/stripe.js +44 -42
  49. package/dist/providers/finance/stripe.js.map +1 -1
  50. package/dist/providers/forms/typeform.d.ts.map +1 -1
  51. package/dist/providers/forms/typeform.js +68 -58
  52. package/dist/providers/forms/typeform.js.map +1 -1
  53. package/dist/providers/knowledge/notion.d.ts.map +1 -1
  54. package/dist/providers/knowledge/notion.js +75 -41
  55. package/dist/providers/knowledge/notion.js.map +1 -1
  56. package/dist/providers/marketing/mailchimp.d.ts.map +1 -1
  57. package/dist/providers/marketing/mailchimp.js +74 -61
  58. package/dist/providers/marketing/mailchimp.js.map +1 -1
  59. package/dist/providers/media/cloudinary.d.ts.map +1 -1
  60. package/dist/providers/media/cloudinary.js +30 -28
  61. package/dist/providers/media/cloudinary.js.map +1 -1
  62. package/dist/providers/messaging/slack.d.ts.map +1 -1
  63. package/dist/providers/messaging/slack.js +75 -58
  64. package/dist/providers/messaging/slack.js.map +1 -1
  65. package/dist/providers/messaging/twilio-sms.d.ts.map +1 -1
  66. package/dist/providers/messaging/twilio-sms.js +33 -15
  67. package/dist/providers/messaging/twilio-sms.js.map +1 -1
  68. package/dist/providers/project-management/linear.d.ts.map +1 -1
  69. package/dist/providers/project-management/linear.js +31 -27
  70. package/dist/providers/project-management/linear.js.map +1 -1
  71. package/dist/providers/spreadsheet/google-sheets.d.ts.map +1 -1
  72. package/dist/providers/spreadsheet/google-sheets.js +21 -18
  73. package/dist/providers/spreadsheet/google-sheets.js.map +1 -1
  74. package/dist/providers/spreadsheet/xlsx.d.ts.map +1 -1
  75. package/dist/providers/spreadsheet/xlsx.js +4 -4
  76. package/dist/providers/spreadsheet/xlsx.js.map +1 -1
  77. package/dist/providers/storage/index.js +1 -0
  78. package/dist/providers/storage/index.js.map +1 -1
  79. package/dist/providers/storage/s3.d.ts.map +1 -1
  80. package/dist/providers/storage/s3.js +36 -27
  81. package/dist/providers/storage/s3.js.map +1 -1
  82. package/dist/providers/support/zendesk.d.ts.map +1 -1
  83. package/dist/providers/support/zendesk.js +24 -25
  84. package/dist/providers/support/zendesk.js.map +1 -1
  85. package/dist/providers/tasks/todoist.d.ts.map +1 -1
  86. package/dist/providers/tasks/todoist.js +18 -18
  87. package/dist/providers/tasks/todoist.js.map +1 -1
  88. package/dist/providers/video-conferencing/google-meet.d.ts.map +1 -1
  89. package/dist/providers/video-conferencing/google-meet.js +11 -11
  90. package/dist/providers/video-conferencing/google-meet.js.map +1 -1
  91. package/dist/providers/video-conferencing/jitsi.js +14 -14
  92. package/dist/providers/video-conferencing/jitsi.js.map +1 -1
  93. package/dist/providers/video-conferencing/teams.d.ts.map +1 -1
  94. package/dist/providers/video-conferencing/teams.js +9 -7
  95. package/dist/providers/video-conferencing/teams.js.map +1 -1
  96. package/dist/providers/video-conferencing/zoom.d.ts.map +1 -1
  97. package/dist/providers/video-conferencing/zoom.js +26 -24
  98. package/dist/providers/video-conferencing/zoom.js.map +1 -1
  99. package/dist/tools/data.d.ts.map +1 -1
  100. package/dist/tools/data.js +5 -12
  101. package/dist/tools/data.js.map +1 -1
  102. package/dist/tools/index.d.ts +1 -0
  103. package/dist/tools/index.d.ts.map +1 -1
  104. package/dist/tools/index.js +1 -0
  105. package/dist/tools/index.js.map +1 -1
  106. package/dist/tools/system.d.ts +289 -0
  107. package/dist/tools/system.d.ts.map +1 -0
  108. package/dist/tools/system.js +752 -0
  109. package/dist/tools/system.js.map +1 -0
  110. package/dist/tools/web.d.ts.map +1 -1
  111. package/dist/tools/web.js +22 -10
  112. package/dist/tools/web.js.map +1 -1
  113. package/dist/track-record.d.ts +101 -0
  114. package/dist/track-record.d.ts.map +1 -0
  115. package/dist/track-record.js +17 -0
  116. package/dist/track-record.js.map +1 -0
  117. package/dist/types.d.ts +210 -9
  118. package/dist/types.d.ts.map +1 -1
  119. package/dist/verb-registration.d.ts +122 -0
  120. package/dist/verb-registration.d.ts.map +1 -0
  121. package/dist/verb-registration.js +176 -0
  122. package/dist/verb-registration.js.map +1 -0
  123. package/dist/worker.d.ts +93 -0
  124. package/dist/worker.d.ts.map +1 -0
  125. package/dist/worker.js +315 -0
  126. package/dist/worker.js.map +1 -0
  127. package/dist/wrap.d.ts +89 -0
  128. package/dist/wrap.d.ts.map +1 -0
  129. package/dist/wrap.js +225 -0
  130. package/dist/wrap.js.map +1 -0
  131. package/package.json +21 -4
  132. package/src/client.ts +136 -0
  133. package/src/define.ts +31 -37
  134. package/src/function-ref.ts +264 -0
  135. package/src/function-sugar.ts +134 -0
  136. package/src/index.ts +132 -10
  137. package/src/providers/analytics/mixpanel.ts +19 -18
  138. package/src/providers/calendar/cal-com.ts +29 -18
  139. package/src/providers/calendar/google-calendar.ts +20 -14
  140. package/src/providers/crm/hubspot.ts +225 -99
  141. package/src/providers/development/github.ts +206 -135
  142. package/src/providers/ecommerce/shopify.ts +250 -89
  143. package/src/providers/email/resend.ts +101 -28
  144. package/src/providers/email/sendgrid.ts +12 -9
  145. package/src/providers/finance/stripe.ts +128 -49
  146. package/src/providers/forms/typeform.ts +74 -58
  147. package/src/providers/knowledge/notion.ts +340 -88
  148. package/src/providers/marketing/mailchimp.ts +86 -70
  149. package/src/providers/media/cloudinary.ts +99 -41
  150. package/src/providers/messaging/slack.ts +283 -85
  151. package/src/providers/messaging/twilio-sms.ts +35 -15
  152. package/src/providers/project-management/linear.ts +143 -55
  153. package/src/providers/spreadsheet/google-sheets.ts +222 -56
  154. package/src/providers/spreadsheet/xlsx.ts +47 -16
  155. package/src/providers/storage/s3.ts +119 -47
  156. package/src/providers/support/zendesk.ts +196 -46
  157. package/src/providers/tasks/todoist.ts +20 -26
  158. package/src/providers/video-conferencing/google-meet.ts +17 -20
  159. package/src/providers/video-conferencing/jitsi.ts +14 -14
  160. package/src/providers/video-conferencing/teams.ts +14 -13
  161. package/src/providers/video-conferencing/zoom.ts +54 -49
  162. package/src/tools/data.ts +6 -16
  163. package/src/tools/index.ts +1 -0
  164. package/src/tools/system.ts +887 -0
  165. package/src/tools/web.ts +22 -10
  166. package/src/track-record.ts +106 -0
  167. package/src/types.ts +241 -13
  168. package/src/verb-registration.ts +197 -0
  169. package/src/worker.ts +370 -0
  170. package/src/wrap.ts +260 -0
  171. package/test/client.test.ts +146 -0
  172. package/test/communication-tools-extended.test.ts +734 -0
  173. package/test/data-tools-extended.test.ts +743 -0
  174. package/test/define-extended.test.ts +819 -0
  175. package/test/define.test.ts +150 -41
  176. package/test/entities.test.ts +623 -0
  177. package/test/extended-entities.test.ts +1228 -0
  178. package/test/provider-implementations.test.ts +725 -0
  179. package/test/provider-registry-extended.test.ts +583 -0
  180. package/test/providers/google-sheets.test.ts +851 -0
  181. package/test/providers/helpers.ts +554 -0
  182. package/test/providers/hubspot.test.ts +576 -0
  183. package/test/providers/slack.test.ts +932 -0
  184. package/test/providers/stripe.test.ts +701 -0
  185. package/test/providers.test.ts +578 -0
  186. package/test/system-tools-extended.test.ts +632 -0
  187. package/test/system.test.ts +673 -0
  188. package/test/tools.test.ts +15 -11
  189. package/test/types.test.ts +402 -0
  190. package/test/verb-registration.test.ts +395 -0
  191. package/test/web-tools.test.ts +553 -0
  192. package/test/worker-extended.test.ts +699 -0
  193. package/test/worker.test.ts +576 -0
  194. package/test/wrap.test.ts +366 -0
  195. package/tsconfig.json +3 -13
  196. package/vitest.config.ts +37 -0
  197. package/wrangler.jsonc +9 -0
  198. package/.turbo/turbo-build.log +0 -5
  199. package/dist/providers/voice/vapi.d.ts +0 -27
  200. package/dist/providers/voice/vapi.d.ts.map +0 -1
  201. package/dist/providers/voice/vapi.js +0 -440
  202. package/dist/providers/voice/vapi.js.map +0 -1
  203. package/src/define.js +0 -267
  204. package/src/entities/advertising.js +0 -999
  205. package/src/entities/ai.js +0 -756
  206. package/src/entities/analytics.js +0 -1588
  207. package/src/entities/automation.js +0 -601
  208. package/src/entities/communication.js +0 -1150
  209. package/src/entities/crm.js +0 -1386
  210. package/src/entities/design.js +0 -546
  211. package/src/entities/development.js +0 -2212
  212. package/src/entities/document.js +0 -874
  213. package/src/entities/ecommerce.js +0 -1429
  214. package/src/entities/experiment.js +0 -1039
  215. package/src/entities/finance.js +0 -3478
  216. package/src/entities/forms.js +0 -1892
  217. package/src/entities/hr.js +0 -661
  218. package/src/entities/identity.js +0 -997
  219. package/src/entities/index.js +0 -282
  220. package/src/entities/infrastructure.js +0 -1153
  221. package/src/entities/knowledge.js +0 -1438
  222. package/src/entities/marketing.js +0 -1610
  223. package/src/entities/media.js +0 -1634
  224. package/src/entities/notification.js +0 -1199
  225. package/src/entities/presentation.js +0 -1274
  226. package/src/entities/productivity.js +0 -1317
  227. package/src/entities/project-management.js +0 -1136
  228. package/src/entities/recruiting.js +0 -736
  229. package/src/entities/shipping.js +0 -509
  230. package/src/entities/signature.js +0 -1102
  231. package/src/entities/site.js +0 -222
  232. package/src/entities/spreadsheet.js +0 -1341
  233. package/src/entities/storage.js +0 -1198
  234. package/src/entities/support.js +0 -1166
  235. package/src/entities/video-conferencing.js +0 -1750
  236. package/src/entities/video.js +0 -950
  237. package/src/entities.js +0 -1663
  238. package/src/index.js +0 -74
  239. package/src/providers/analytics/index.js +0 -17
  240. package/src/providers/analytics/mixpanel.js +0 -255
  241. package/src/providers/calendar/cal-com.js +0 -303
  242. package/src/providers/calendar/google-calendar.js +0 -335
  243. package/src/providers/calendar/index.js +0 -20
  244. package/src/providers/crm/hubspot.js +0 -566
  245. package/src/providers/crm/index.js +0 -17
  246. package/src/providers/development/github.js +0 -472
  247. package/src/providers/development/index.js +0 -17
  248. package/src/providers/ecommerce/index.js +0 -17
  249. package/src/providers/ecommerce/shopify.js +0 -378
  250. package/src/providers/email/index.js +0 -20
  251. package/src/providers/email/resend.js +0 -258
  252. package/src/providers/email/sendgrid.js +0 -161
  253. package/src/providers/finance/index.js +0 -17
  254. package/src/providers/finance/stripe.js +0 -549
  255. package/src/providers/forms/index.js +0 -17
  256. package/src/providers/forms/typeform.js +0 -500
  257. package/src/providers/index.js +0 -123
  258. package/src/providers/knowledge/index.js +0 -17
  259. package/src/providers/knowledge/notion.js +0 -389
  260. package/src/providers/marketing/index.js +0 -17
  261. package/src/providers/marketing/mailchimp.js +0 -443
  262. package/src/providers/media/cloudinary.js +0 -318
  263. package/src/providers/media/index.js +0 -17
  264. package/src/providers/messaging/index.js +0 -20
  265. package/src/providers/messaging/slack.js +0 -393
  266. package/src/providers/messaging/twilio-sms.js +0 -249
  267. package/src/providers/project-management/index.js +0 -17
  268. package/src/providers/project-management/linear.js +0 -575
  269. package/src/providers/registry.js +0 -86
  270. package/src/providers/spreadsheet/google-sheets.js +0 -375
  271. package/src/providers/spreadsheet/index.js +0 -20
  272. package/src/providers/spreadsheet/xlsx.js +0 -423
  273. package/src/providers/storage/index.js +0 -24
  274. package/src/providers/storage/s3.js +0 -419
  275. package/src/providers/support/index.js +0 -17
  276. package/src/providers/support/zendesk.js +0 -373
  277. package/src/providers/tasks/index.js +0 -17
  278. package/src/providers/tasks/todoist.js +0 -286
  279. package/src/providers/types.js +0 -9
  280. package/src/providers/video-conferencing/google-meet.js +0 -286
  281. package/src/providers/video-conferencing/index.js +0 -31
  282. package/src/providers/video-conferencing/jitsi.js +0 -254
  283. package/src/providers/video-conferencing/teams.js +0 -270
  284. package/src/providers/video-conferencing/zoom.js +0 -332
  285. package/src/registry.js +0 -128
  286. package/src/tools/communication.js +0 -184
  287. package/src/tools/data.js +0 -205
  288. package/src/tools/index.js +0 -11
  289. package/src/tools/web.js +0 -137
  290. package/src/types.js +0 -10
  291. package/test/define.test.js +0 -306
  292. package/test/registry.test.js +0 -357
  293. package/test/tools.test.js +0 -363
@@ -1,999 +0,0 @@
1
- /**
2
- * Advertising Entity Types (Nouns)
3
- *
4
- * Entities for digital advertising platforms like Google Ads, Meta Ads, etc.
5
- * Includes ads, campaigns, ad groups, keywords, and conversions.
6
- *
7
- * @packageDocumentation
8
- */
9
- // =============================================================================
10
- // Ad
11
- // =============================================================================
12
- /**
13
- * Ad entity
14
- *
15
- * Represents a digital advertisement
16
- */
17
- export const Ad = {
18
- singular: 'ad',
19
- plural: 'ads',
20
- description: 'A digital advertisement',
21
- properties: {
22
- // Identity
23
- name: {
24
- type: 'string',
25
- description: 'Ad name',
26
- },
27
- type: {
28
- type: 'string',
29
- description: 'Ad type: search, display, video, shopping, social',
30
- examples: ['search', 'display', 'video', 'shopping', 'social', 'native'],
31
- },
32
- format: {
33
- type: 'string',
34
- optional: true,
35
- description: 'Ad format: text, image, carousel, video, collection',
36
- examples: ['text', 'image', 'carousel', 'video', 'collection', 'stories'],
37
- },
38
- // Content - Text
39
- headline: {
40
- type: 'string',
41
- optional: true,
42
- description: 'Ad headline',
43
- },
44
- headlines: {
45
- type: 'string',
46
- array: true,
47
- optional: true,
48
- description: 'Multiple headlines (for responsive ads)',
49
- },
50
- description: {
51
- type: 'string',
52
- optional: true,
53
- description: 'Ad description',
54
- },
55
- descriptions: {
56
- type: 'string',
57
- array: true,
58
- optional: true,
59
- description: 'Multiple descriptions',
60
- },
61
- callToAction: {
62
- type: 'string',
63
- optional: true,
64
- description: 'Call to action text',
65
- },
66
- // Content - Media
67
- imageUrl: {
68
- type: 'url',
69
- optional: true,
70
- description: 'Ad image URL',
71
- },
72
- videoUrl: {
73
- type: 'url',
74
- optional: true,
75
- description: 'Ad video URL',
76
- },
77
- thumbnailUrl: {
78
- type: 'url',
79
- optional: true,
80
- description: 'Video thumbnail URL',
81
- },
82
- // Destination
83
- finalUrl: {
84
- type: 'url',
85
- optional: true,
86
- description: 'Final destination URL',
87
- },
88
- displayUrl: {
89
- type: 'string',
90
- optional: true,
91
- description: 'Display URL',
92
- },
93
- trackingUrl: {
94
- type: 'url',
95
- optional: true,
96
- description: 'Tracking URL template',
97
- },
98
- // Status
99
- status: {
100
- type: 'string',
101
- description: 'Ad status: enabled, paused, removed, pending_review, disapproved',
102
- examples: ['enabled', 'paused', 'removed', 'pending_review', 'disapproved'],
103
- },
104
- reviewStatus: {
105
- type: 'string',
106
- optional: true,
107
- description: 'Review status: approved, disapproved, under_review',
108
- examples: ['approved', 'disapproved', 'under_review'],
109
- },
110
- disapprovalReasons: {
111
- type: 'string',
112
- array: true,
113
- optional: true,
114
- description: 'Reasons for disapproval',
115
- },
116
- // Performance
117
- impressions: {
118
- type: 'number',
119
- optional: true,
120
- description: 'Total impressions',
121
- },
122
- clicks: {
123
- type: 'number',
124
- optional: true,
125
- description: 'Total clicks',
126
- },
127
- ctr: {
128
- type: 'number',
129
- optional: true,
130
- description: 'Click-through rate',
131
- },
132
- conversions: {
133
- type: 'number',
134
- optional: true,
135
- description: 'Total conversions',
136
- },
137
- conversionRate: {
138
- type: 'number',
139
- optional: true,
140
- description: 'Conversion rate',
141
- },
142
- cost: {
143
- type: 'number',
144
- optional: true,
145
- description: 'Total cost',
146
- },
147
- cpc: {
148
- type: 'number',
149
- optional: true,
150
- description: 'Cost per click',
151
- },
152
- cpm: {
153
- type: 'number',
154
- optional: true,
155
- description: 'Cost per thousand impressions',
156
- },
157
- cpa: {
158
- type: 'number',
159
- optional: true,
160
- description: 'Cost per acquisition',
161
- },
162
- roas: {
163
- type: 'number',
164
- optional: true,
165
- description: 'Return on ad spend',
166
- },
167
- },
168
- relationships: {
169
- adGroup: {
170
- type: 'AdGroup',
171
- description: 'Parent ad group',
172
- },
173
- campaign: {
174
- type: 'AdCampaign',
175
- description: 'Parent campaign',
176
- },
177
- },
178
- actions: [
179
- 'create',
180
- 'update',
181
- 'delete',
182
- 'enable',
183
- 'pause',
184
- 'duplicate',
185
- 'preview',
186
- 'submitForReview',
187
- ],
188
- events: [
189
- 'created',
190
- 'updated',
191
- 'deleted',
192
- 'enabled',
193
- 'paused',
194
- 'approved',
195
- 'disapproved',
196
- 'impressionServed',
197
- 'clicked',
198
- 'converted',
199
- ],
200
- };
201
- // =============================================================================
202
- // Ad Group
203
- // =============================================================================
204
- /**
205
- * Ad group entity
206
- *
207
- * Represents a group of related ads
208
- */
209
- export const AdGroup = {
210
- singular: 'ad group',
211
- plural: 'ad groups',
212
- description: 'A group of related ads with shared targeting',
213
- properties: {
214
- // Identity
215
- name: {
216
- type: 'string',
217
- description: 'Ad group name',
218
- },
219
- // Status
220
- status: {
221
- type: 'string',
222
- description: 'Ad group status: enabled, paused, removed',
223
- examples: ['enabled', 'paused', 'removed'],
224
- },
225
- // Bidding
226
- bidStrategy: {
227
- type: 'string',
228
- optional: true,
229
- description: 'Bid strategy: manual_cpc, target_cpa, maximize_conversions',
230
- examples: ['manual_cpc', 'target_cpa', 'maximize_conversions', 'target_roas'],
231
- },
232
- defaultBid: {
233
- type: 'number',
234
- optional: true,
235
- description: 'Default bid amount',
236
- },
237
- targetCpa: {
238
- type: 'number',
239
- optional: true,
240
- description: 'Target CPA',
241
- },
242
- targetRoas: {
243
- type: 'number',
244
- optional: true,
245
- description: 'Target ROAS',
246
- },
247
- // Targeting
248
- targetingSettings: {
249
- type: 'json',
250
- optional: true,
251
- description: 'Targeting configuration',
252
- },
253
- audiences: {
254
- type: 'string',
255
- array: true,
256
- optional: true,
257
- description: 'Target audiences',
258
- },
259
- placements: {
260
- type: 'string',
261
- array: true,
262
- optional: true,
263
- description: 'Target placements',
264
- },
265
- topics: {
266
- type: 'string',
267
- array: true,
268
- optional: true,
269
- description: 'Target topics',
270
- },
271
- // Performance
272
- impressions: {
273
- type: 'number',
274
- optional: true,
275
- description: 'Total impressions',
276
- },
277
- clicks: {
278
- type: 'number',
279
- optional: true,
280
- description: 'Total clicks',
281
- },
282
- conversions: {
283
- type: 'number',
284
- optional: true,
285
- description: 'Total conversions',
286
- },
287
- cost: {
288
- type: 'number',
289
- optional: true,
290
- description: 'Total cost',
291
- },
292
- },
293
- relationships: {
294
- campaign: {
295
- type: 'AdCampaign',
296
- backref: 'adGroups',
297
- description: 'Parent campaign',
298
- },
299
- ads: {
300
- type: 'Ad[]',
301
- backref: 'adGroup',
302
- description: 'Ads in this group',
303
- },
304
- keywords: {
305
- type: 'Keyword[]',
306
- backref: 'adGroup',
307
- description: 'Keywords for search ads',
308
- },
309
- },
310
- actions: [
311
- 'create',
312
- 'update',
313
- 'delete',
314
- 'enable',
315
- 'pause',
316
- 'setBid',
317
- 'addAudience',
318
- 'removeAudience',
319
- ],
320
- events: [
321
- 'created',
322
- 'updated',
323
- 'deleted',
324
- 'enabled',
325
- 'paused',
326
- 'bidChanged',
327
- 'audienceAdded',
328
- 'audienceRemoved',
329
- ],
330
- };
331
- // =============================================================================
332
- // Ad Campaign
333
- // =============================================================================
334
- /**
335
- * Ad campaign entity
336
- *
337
- * Represents an advertising campaign
338
- */
339
- export const AdCampaign = {
340
- singular: 'ad campaign',
341
- plural: 'ad campaigns',
342
- description: 'An advertising campaign',
343
- properties: {
344
- // Identity
345
- name: {
346
- type: 'string',
347
- description: 'Campaign name',
348
- },
349
- objective: {
350
- type: 'string',
351
- description: 'Campaign objective: awareness, traffic, engagement, leads, sales',
352
- examples: ['awareness', 'traffic', 'engagement', 'leads', 'sales', 'app_installs'],
353
- },
354
- type: {
355
- type: 'string',
356
- description: 'Campaign type: search, display, video, shopping, performance_max',
357
- examples: ['search', 'display', 'video', 'shopping', 'performance_max', 'app'],
358
- },
359
- // Status
360
- status: {
361
- type: 'string',
362
- description: 'Campaign status: enabled, paused, removed, ended',
363
- examples: ['enabled', 'paused', 'removed', 'ended'],
364
- },
365
- // Schedule
366
- startDate: {
367
- type: 'datetime',
368
- optional: true,
369
- description: 'Campaign start date',
370
- },
371
- endDate: {
372
- type: 'datetime',
373
- optional: true,
374
- description: 'Campaign end date',
375
- },
376
- // Budget
377
- budget: {
378
- type: 'number',
379
- optional: true,
380
- description: 'Campaign budget',
381
- },
382
- budgetType: {
383
- type: 'string',
384
- optional: true,
385
- description: 'Budget type: daily, lifetime',
386
- examples: ['daily', 'lifetime'],
387
- },
388
- spent: {
389
- type: 'number',
390
- optional: true,
391
- description: 'Amount spent',
392
- },
393
- remainingBudget: {
394
- type: 'number',
395
- optional: true,
396
- description: 'Remaining budget',
397
- },
398
- // Bidding
399
- bidStrategy: {
400
- type: 'string',
401
- optional: true,
402
- description: 'Bid strategy',
403
- },
404
- targetCpa: {
405
- type: 'number',
406
- optional: true,
407
- description: 'Target CPA',
408
- },
409
- targetRoas: {
410
- type: 'number',
411
- optional: true,
412
- description: 'Target ROAS',
413
- },
414
- // Targeting
415
- geoTargets: {
416
- type: 'string',
417
- array: true,
418
- optional: true,
419
- description: 'Geographic targets',
420
- },
421
- languages: {
422
- type: 'string',
423
- array: true,
424
- optional: true,
425
- description: 'Target languages',
426
- },
427
- devices: {
428
- type: 'string',
429
- array: true,
430
- optional: true,
431
- description: 'Target devices',
432
- },
433
- schedule: {
434
- type: 'json',
435
- optional: true,
436
- description: 'Ad schedule',
437
- },
438
- // Performance
439
- impressions: {
440
- type: 'number',
441
- optional: true,
442
- description: 'Total impressions',
443
- },
444
- clicks: {
445
- type: 'number',
446
- optional: true,
447
- description: 'Total clicks',
448
- },
449
- ctr: {
450
- type: 'number',
451
- optional: true,
452
- description: 'Click-through rate',
453
- },
454
- conversions: {
455
- type: 'number',
456
- optional: true,
457
- description: 'Total conversions',
458
- },
459
- conversionValue: {
460
- type: 'number',
461
- optional: true,
462
- description: 'Total conversion value',
463
- },
464
- cpc: {
465
- type: 'number',
466
- optional: true,
467
- description: 'Average CPC',
468
- },
469
- cpa: {
470
- type: 'number',
471
- optional: true,
472
- description: 'Average CPA',
473
- },
474
- roas: {
475
- type: 'number',
476
- optional: true,
477
- description: 'Return on ad spend',
478
- },
479
- },
480
- relationships: {
481
- account: {
482
- type: 'Account',
483
- description: 'Advertising account',
484
- },
485
- adGroups: {
486
- type: 'AdGroup[]',
487
- backref: 'campaign',
488
- description: 'Ad groups in this campaign',
489
- },
490
- conversions: {
491
- type: 'Conversion[]',
492
- description: 'Conversions attributed to this campaign',
493
- },
494
- },
495
- actions: [
496
- 'create',
497
- 'update',
498
- 'delete',
499
- 'enable',
500
- 'pause',
501
- 'setBudget',
502
- 'extendSchedule',
503
- 'duplicate',
504
- 'optimize',
505
- ],
506
- events: [
507
- 'created',
508
- 'updated',
509
- 'deleted',
510
- 'enabled',
511
- 'paused',
512
- 'budgetChanged',
513
- 'scheduleExtended',
514
- 'budgetExhausted',
515
- 'ended',
516
- ],
517
- };
518
- // =============================================================================
519
- // Keyword
520
- // =============================================================================
521
- /**
522
- * Keyword entity
523
- *
524
- * Represents a search keyword for advertising
525
- */
526
- export const Keyword = {
527
- singular: 'keyword',
528
- plural: 'keywords',
529
- description: 'A search keyword for advertising',
530
- properties: {
531
- // Identity
532
- text: {
533
- type: 'string',
534
- description: 'Keyword text',
535
- },
536
- matchType: {
537
- type: 'string',
538
- description: 'Match type: exact, phrase, broad',
539
- examples: ['exact', 'phrase', 'broad'],
540
- },
541
- // Status
542
- status: {
543
- type: 'string',
544
- description: 'Keyword status: enabled, paused, removed',
545
- examples: ['enabled', 'paused', 'removed'],
546
- },
547
- qualityScore: {
548
- type: 'number',
549
- optional: true,
550
- description: 'Quality score (1-10)',
551
- },
552
- // Bidding
553
- bid: {
554
- type: 'number',
555
- optional: true,
556
- description: 'Keyword bid',
557
- },
558
- estimatedFirstPageBid: {
559
- type: 'number',
560
- optional: true,
561
- description: 'Estimated first page bid',
562
- },
563
- estimatedTopPageBid: {
564
- type: 'number',
565
- optional: true,
566
- description: 'Estimated top of page bid',
567
- },
568
- // Performance
569
- impressions: {
570
- type: 'number',
571
- optional: true,
572
- description: 'Total impressions',
573
- },
574
- clicks: {
575
- type: 'number',
576
- optional: true,
577
- description: 'Total clicks',
578
- },
579
- ctr: {
580
- type: 'number',
581
- optional: true,
582
- description: 'Click-through rate',
583
- },
584
- conversions: {
585
- type: 'number',
586
- optional: true,
587
- description: 'Total conversions',
588
- },
589
- cost: {
590
- type: 'number',
591
- optional: true,
592
- description: 'Total cost',
593
- },
594
- avgCpc: {
595
- type: 'number',
596
- optional: true,
597
- description: 'Average CPC',
598
- },
599
- avgPosition: {
600
- type: 'number',
601
- optional: true,
602
- description: 'Average position',
603
- },
604
- // Search terms
605
- searchVolume: {
606
- type: 'number',
607
- optional: true,
608
- description: 'Monthly search volume',
609
- },
610
- competition: {
611
- type: 'string',
612
- optional: true,
613
- description: 'Competition level: low, medium, high',
614
- examples: ['low', 'medium', 'high'],
615
- },
616
- },
617
- relationships: {
618
- adGroup: {
619
- type: 'AdGroup',
620
- backref: 'keywords',
621
- description: 'Parent ad group',
622
- },
623
- negativeKeyword: {
624
- type: 'NegativeKeyword',
625
- required: false,
626
- description: 'If this is a negative keyword',
627
- },
628
- },
629
- actions: [
630
- 'create',
631
- 'update',
632
- 'delete',
633
- 'enable',
634
- 'pause',
635
- 'setBid',
636
- 'changeMatchType',
637
- ],
638
- events: [
639
- 'created',
640
- 'updated',
641
- 'deleted',
642
- 'enabled',
643
- 'paused',
644
- 'bidChanged',
645
- 'matchTypeChanged',
646
- ],
647
- };
648
- /**
649
- * Negative keyword entity
650
- */
651
- export const NegativeKeyword = {
652
- singular: 'negative keyword',
653
- plural: 'negative keywords',
654
- description: 'A negative keyword to exclude from targeting',
655
- properties: {
656
- text: {
657
- type: 'string',
658
- description: 'Keyword text',
659
- },
660
- matchType: {
661
- type: 'string',
662
- description: 'Match type: exact, phrase, broad',
663
- examples: ['exact', 'phrase', 'broad'],
664
- },
665
- level: {
666
- type: 'string',
667
- description: 'Level: campaign, ad_group, account',
668
- examples: ['campaign', 'ad_group', 'account'],
669
- },
670
- },
671
- relationships: {
672
- campaign: {
673
- type: 'AdCampaign',
674
- required: false,
675
- description: 'Parent campaign',
676
- },
677
- adGroup: {
678
- type: 'AdGroup',
679
- required: false,
680
- description: 'Parent ad group',
681
- },
682
- },
683
- actions: ['create', 'delete'],
684
- events: ['created', 'deleted'],
685
- };
686
- // =============================================================================
687
- // Conversion
688
- // =============================================================================
689
- /**
690
- * Conversion entity
691
- *
692
- * Represents a tracked conversion
693
- */
694
- export const Conversion = {
695
- singular: 'conversion',
696
- plural: 'conversions',
697
- description: 'A tracked advertising conversion',
698
- properties: {
699
- // Identity
700
- conversionName: {
701
- type: 'string',
702
- description: 'Conversion action name',
703
- },
704
- conversionType: {
705
- type: 'string',
706
- description: 'Conversion type: purchase, lead, signup, pageview, custom',
707
- examples: ['purchase', 'lead', 'signup', 'pageview', 'download', 'custom'],
708
- },
709
- // Attribution
710
- attributionModel: {
711
- type: 'string',
712
- optional: true,
713
- description: 'Attribution model: last_click, first_click, linear, data_driven',
714
- examples: ['last_click', 'first_click', 'linear', 'time_decay', 'data_driven'],
715
- },
716
- clickId: {
717
- type: 'string',
718
- optional: true,
719
- description: 'Click ID that led to conversion',
720
- },
721
- // Value
722
- value: {
723
- type: 'number',
724
- optional: true,
725
- description: 'Conversion value',
726
- },
727
- currency: {
728
- type: 'string',
729
- optional: true,
730
- description: 'Currency code',
731
- },
732
- quantity: {
733
- type: 'number',
734
- optional: true,
735
- description: 'Number of conversions',
736
- },
737
- // Timing
738
- timestamp: {
739
- type: 'datetime',
740
- description: 'Conversion timestamp',
741
- },
742
- clickTimestamp: {
743
- type: 'datetime',
744
- optional: true,
745
- description: 'Original click timestamp',
746
- },
747
- conversionLag: {
748
- type: 'number',
749
- optional: true,
750
- description: 'Days between click and conversion',
751
- },
752
- // Source
753
- source: {
754
- type: 'string',
755
- optional: true,
756
- description: 'Conversion source',
757
- },
758
- medium: {
759
- type: 'string',
760
- optional: true,
761
- description: 'Traffic medium',
762
- },
763
- },
764
- relationships: {
765
- campaign: {
766
- type: 'AdCampaign',
767
- required: false,
768
- description: 'Source campaign',
769
- },
770
- adGroup: {
771
- type: 'AdGroup',
772
- required: false,
773
- description: 'Source ad group',
774
- },
775
- ad: {
776
- type: 'Ad',
777
- required: false,
778
- description: 'Source ad',
779
- },
780
- keyword: {
781
- type: 'Keyword',
782
- required: false,
783
- description: 'Source keyword',
784
- },
785
- },
786
- actions: ['track', 'import', 'adjust', 'delete'],
787
- events: ['tracked', 'imported', 'adjusted', 'deleted'],
788
- };
789
- // =============================================================================
790
- // Budget
791
- // =============================================================================
792
- /**
793
- * Budget entity
794
- *
795
- * Represents an advertising budget
796
- */
797
- export const Budget = {
798
- singular: 'budget',
799
- plural: 'budgets',
800
- description: 'An advertising budget',
801
- properties: {
802
- // Identity
803
- name: {
804
- type: 'string',
805
- description: 'Budget name',
806
- },
807
- // Amount
808
- amount: {
809
- type: 'number',
810
- description: 'Budget amount',
811
- },
812
- currency: {
813
- type: 'string',
814
- description: 'Currency code',
815
- },
816
- period: {
817
- type: 'string',
818
- description: 'Budget period: daily, monthly, lifetime',
819
- examples: ['daily', 'monthly', 'lifetime'],
820
- },
821
- // Delivery
822
- deliveryMethod: {
823
- type: 'string',
824
- optional: true,
825
- description: 'Delivery method: standard, accelerated',
826
- examples: ['standard', 'accelerated'],
827
- },
828
- // Spending
829
- spent: {
830
- type: 'number',
831
- optional: true,
832
- description: 'Amount spent',
833
- },
834
- remaining: {
835
- type: 'number',
836
- optional: true,
837
- description: 'Remaining amount',
838
- },
839
- percentUsed: {
840
- type: 'number',
841
- optional: true,
842
- description: 'Percentage of budget used',
843
- },
844
- // Status
845
- status: {
846
- type: 'string',
847
- description: 'Budget status: active, depleted, paused',
848
- examples: ['active', 'depleted', 'paused'],
849
- },
850
- shared: {
851
- type: 'boolean',
852
- optional: true,
853
- description: 'Whether budget is shared across campaigns',
854
- },
855
- },
856
- relationships: {
857
- campaigns: {
858
- type: 'AdCampaign[]',
859
- description: 'Campaigns using this budget',
860
- },
861
- },
862
- actions: ['create', 'update', 'delete', 'increase', 'decrease'],
863
- events: ['created', 'updated', 'deleted', 'increased', 'decreased', 'depleted'],
864
- };
865
- // =============================================================================
866
- // Audience (for advertising)
867
- // =============================================================================
868
- /**
869
- * Ad audience entity
870
- *
871
- * Represents a targetable audience for advertising
872
- */
873
- export const AdAudience = {
874
- singular: 'ad audience',
875
- plural: 'ad audiences',
876
- description: 'A targetable audience for advertising',
877
- properties: {
878
- // Identity
879
- name: {
880
- type: 'string',
881
- description: 'Audience name',
882
- },
883
- description: {
884
- type: 'string',
885
- optional: true,
886
- description: 'Audience description',
887
- },
888
- type: {
889
- type: 'string',
890
- description: 'Audience type: custom, lookalike, remarketing, in_market, affinity',
891
- examples: ['custom', 'lookalike', 'remarketing', 'in_market', 'affinity'],
892
- },
893
- // Source
894
- source: {
895
- type: 'string',
896
- optional: true,
897
- description: 'Audience source: website, app, crm, engagement',
898
- examples: ['website', 'app', 'crm', 'engagement'],
899
- },
900
- sourceDetails: {
901
- type: 'json',
902
- optional: true,
903
- description: 'Source configuration details',
904
- },
905
- // Size
906
- size: {
907
- type: 'number',
908
- optional: true,
909
- description: 'Estimated audience size',
910
- },
911
- sizeRange: {
912
- type: 'string',
913
- optional: true,
914
- description: 'Size range description',
915
- },
916
- // Lookalike
917
- seedAudience: {
918
- type: 'string',
919
- optional: true,
920
- description: 'Seed audience for lookalike',
921
- },
922
- expansionLevel: {
923
- type: 'number',
924
- optional: true,
925
- description: 'Lookalike expansion level (1-10)',
926
- },
927
- // Status
928
- status: {
929
- type: 'string',
930
- description: 'Audience status: ready, populating, too_small, expired',
931
- examples: ['ready', 'populating', 'too_small', 'expired'],
932
- },
933
- membershipDuration: {
934
- type: 'number',
935
- optional: true,
936
- description: 'Membership duration in days',
937
- },
938
- },
939
- relationships: {
940
- campaigns: {
941
- type: 'AdCampaign[]',
942
- description: 'Campaigns targeting this audience',
943
- },
944
- adGroups: {
945
- type: 'AdGroup[]',
946
- description: 'Ad groups targeting this audience',
947
- },
948
- },
949
- actions: [
950
- 'create',
951
- 'update',
952
- 'delete',
953
- 'refresh',
954
- 'expand',
955
- 'createLookalike',
956
- 'share',
957
- ],
958
- events: [
959
- 'created',
960
- 'updated',
961
- 'deleted',
962
- 'refreshed',
963
- 'expanded',
964
- 'lookalikeCreated',
965
- 'shared',
966
- 'ready',
967
- ],
968
- };
969
- // =============================================================================
970
- // Export all entities as a schema
971
- // =============================================================================
972
- /**
973
- * All advertising entity types
974
- */
975
- export const AdvertisingEntities = {
976
- // Ads
977
- Ad,
978
- AdGroup,
979
- AdCampaign,
980
- // Keywords
981
- Keyword,
982
- NegativeKeyword,
983
- // Conversions
984
- Conversion,
985
- // Budget
986
- Budget,
987
- // Audiences
988
- AdAudience,
989
- };
990
- /**
991
- * Entity categories for organization
992
- */
993
- export const AdvertisingCategories = {
994
- ads: ['Ad', 'AdGroup', 'AdCampaign'],
995
- keywords: ['Keyword', 'NegativeKeyword'],
996
- conversions: ['Conversion'],
997
- budget: ['Budget'],
998
- audiences: ['AdAudience'],
999
- };