@crvouga/mockingbird-service-google-ads 0.1.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/openapi.yaml ADDED
@@ -0,0 +1,1838 @@
1
+ {
2
+ "openapi": "3.1.0",
3
+ "info": {
4
+ "title": "Google Ads v25 and GA4 local API subset",
5
+ "version": "0.1.0",
6
+ "x-mockingbird-upstream": {
7
+ "note": "Bounded subset of official googleapis/googleapis proto SHA03a91044136a014466d4293eb1fe91f2b02075d2, Google Ads REST and GA4 Measurement Protocol/Data API documentation. Developer tokens are ignored under the September2026 policy."
8
+ }
9
+ },
10
+ "servers": [
11
+ {
12
+ "url": "https://googleads.googleapis.com"
13
+ }
14
+ ],
15
+ "paths": {
16
+ "/v25/customers/{customerId}/googleAds:search": {
17
+ "post": {
18
+ "operationId": "SearchGoogleAds",
19
+ "summary": "SearchGoogleAds",
20
+ "parameters": [
21
+ {
22
+ "name": "customerId",
23
+ "in": "path",
24
+ "required": true,
25
+ "schema": {
26
+ "type": "string",
27
+ "pattern": "^[0-9]+$",
28
+ "example": "1000000001"
29
+ }
30
+ }
31
+ ],
32
+ "requestBody": {
33
+ "required": true,
34
+ "content": {
35
+ "application/json": {
36
+ "schema": {
37
+ "$ref": "#/components/schemas/SearchRequest"
38
+ }
39
+ }
40
+ }
41
+ },
42
+ "responses": {
43
+ "200": {
44
+ "description": "Success",
45
+ "content": {
46
+ "application/json": {
47
+ "schema": {
48
+ "$ref": "#/components/schemas/SearchResponse"
49
+ }
50
+ }
51
+ }
52
+ },
53
+ "400": {
54
+ "description": "Google RPC error",
55
+ "content": {
56
+ "application/json": {
57
+ "schema": {
58
+ "$ref": "#/components/schemas/AdsError"
59
+ }
60
+ }
61
+ }
62
+ },
63
+ "401": {
64
+ "description": "Google RPC error",
65
+ "content": {
66
+ "application/json": {
67
+ "schema": {
68
+ "$ref": "#/components/schemas/AdsError"
69
+ }
70
+ }
71
+ }
72
+ },
73
+ "403": {
74
+ "description": "Google RPC error",
75
+ "content": {
76
+ "application/json": {
77
+ "schema": {
78
+ "$ref": "#/components/schemas/AdsError"
79
+ }
80
+ }
81
+ }
82
+ },
83
+ "404": {
84
+ "description": "Google RPC error",
85
+ "content": {
86
+ "application/json": {
87
+ "schema": {
88
+ "$ref": "#/components/schemas/AdsError"
89
+ }
90
+ }
91
+ }
92
+ },
93
+ "429": {
94
+ "description": "Google RPC error",
95
+ "content": {
96
+ "application/json": {
97
+ "schema": {
98
+ "$ref": "#/components/schemas/AdsError"
99
+ }
100
+ }
101
+ }
102
+ },
103
+ "500": {
104
+ "description": "Google RPC error",
105
+ "content": {
106
+ "application/json": {
107
+ "schema": {
108
+ "$ref": "#/components/schemas/AdsError"
109
+ }
110
+ }
111
+ }
112
+ },
113
+ "503": {
114
+ "description": "Google RPC error",
115
+ "content": {
116
+ "application/json": {
117
+ "schema": {
118
+ "$ref": "#/components/schemas/AdsError"
119
+ }
120
+ }
121
+ }
122
+ }
123
+ }
124
+ }
125
+ },
126
+ "/v25/customers/{customerId}/googleAds:searchStream": {
127
+ "post": {
128
+ "operationId": "SearchStreamGoogleAds",
129
+ "summary": "SearchStreamGoogleAds",
130
+ "parameters": [
131
+ {
132
+ "name": "customerId",
133
+ "in": "path",
134
+ "required": true,
135
+ "schema": {
136
+ "type": "string",
137
+ "pattern": "^[0-9]+$",
138
+ "example": "1000000001"
139
+ }
140
+ }
141
+ ],
142
+ "requestBody": {
143
+ "required": true,
144
+ "content": {
145
+ "application/json": {
146
+ "schema": {
147
+ "$ref": "#/components/schemas/SearchStreamRequest"
148
+ }
149
+ }
150
+ }
151
+ },
152
+ "responses": {
153
+ "200": {
154
+ "description": "Success",
155
+ "content": {
156
+ "application/json": {
157
+ "schema": {
158
+ "type": "array",
159
+ "items": {
160
+ "$ref": "#/components/schemas/StreamBatch"
161
+ }
162
+ }
163
+ }
164
+ }
165
+ },
166
+ "400": {
167
+ "description": "Google RPC error",
168
+ "content": {
169
+ "application/json": {
170
+ "schema": {
171
+ "$ref": "#/components/schemas/AdsError"
172
+ }
173
+ }
174
+ }
175
+ },
176
+ "401": {
177
+ "description": "Google RPC error",
178
+ "content": {
179
+ "application/json": {
180
+ "schema": {
181
+ "$ref": "#/components/schemas/AdsError"
182
+ }
183
+ }
184
+ }
185
+ },
186
+ "403": {
187
+ "description": "Google RPC error",
188
+ "content": {
189
+ "application/json": {
190
+ "schema": {
191
+ "$ref": "#/components/schemas/AdsError"
192
+ }
193
+ }
194
+ }
195
+ },
196
+ "404": {
197
+ "description": "Google RPC error",
198
+ "content": {
199
+ "application/json": {
200
+ "schema": {
201
+ "$ref": "#/components/schemas/AdsError"
202
+ }
203
+ }
204
+ }
205
+ },
206
+ "429": {
207
+ "description": "Google RPC error",
208
+ "content": {
209
+ "application/json": {
210
+ "schema": {
211
+ "$ref": "#/components/schemas/AdsError"
212
+ }
213
+ }
214
+ }
215
+ },
216
+ "500": {
217
+ "description": "Google RPC error",
218
+ "content": {
219
+ "application/json": {
220
+ "schema": {
221
+ "$ref": "#/components/schemas/AdsError"
222
+ }
223
+ }
224
+ }
225
+ },
226
+ "503": {
227
+ "description": "Google RPC error",
228
+ "content": {
229
+ "application/json": {
230
+ "schema": {
231
+ "$ref": "#/components/schemas/AdsError"
232
+ }
233
+ }
234
+ }
235
+ }
236
+ }
237
+ }
238
+ },
239
+ "/v25/customers/{customerId}/campaignBudgets:mutate": {
240
+ "post": {
241
+ "operationId": "MutateCampaignBudgets",
242
+ "summary": "MutateCampaignBudgets",
243
+ "parameters": [
244
+ {
245
+ "name": "customerId",
246
+ "in": "path",
247
+ "required": true,
248
+ "schema": {
249
+ "type": "string",
250
+ "pattern": "^[0-9]+$",
251
+ "example": "1000000001"
252
+ }
253
+ }
254
+ ],
255
+ "requestBody": {
256
+ "required": true,
257
+ "content": {
258
+ "application/json": {
259
+ "schema": {
260
+ "$ref": "#/components/schemas/BudgetMutationRequest"
261
+ }
262
+ }
263
+ }
264
+ },
265
+ "responses": {
266
+ "200": {
267
+ "description": "Success",
268
+ "content": {
269
+ "application/json": {
270
+ "schema": {
271
+ "$ref": "#/components/schemas/BudgetMutationResponse"
272
+ }
273
+ }
274
+ }
275
+ },
276
+ "400": {
277
+ "description": "Google RPC error",
278
+ "content": {
279
+ "application/json": {
280
+ "schema": {
281
+ "$ref": "#/components/schemas/AdsError"
282
+ }
283
+ }
284
+ }
285
+ },
286
+ "401": {
287
+ "description": "Google RPC error",
288
+ "content": {
289
+ "application/json": {
290
+ "schema": {
291
+ "$ref": "#/components/schemas/AdsError"
292
+ }
293
+ }
294
+ }
295
+ },
296
+ "403": {
297
+ "description": "Google RPC error",
298
+ "content": {
299
+ "application/json": {
300
+ "schema": {
301
+ "$ref": "#/components/schemas/AdsError"
302
+ }
303
+ }
304
+ }
305
+ },
306
+ "404": {
307
+ "description": "Google RPC error",
308
+ "content": {
309
+ "application/json": {
310
+ "schema": {
311
+ "$ref": "#/components/schemas/AdsError"
312
+ }
313
+ }
314
+ }
315
+ },
316
+ "429": {
317
+ "description": "Google RPC error",
318
+ "content": {
319
+ "application/json": {
320
+ "schema": {
321
+ "$ref": "#/components/schemas/AdsError"
322
+ }
323
+ }
324
+ }
325
+ },
326
+ "500": {
327
+ "description": "Google RPC error",
328
+ "content": {
329
+ "application/json": {
330
+ "schema": {
331
+ "$ref": "#/components/schemas/AdsError"
332
+ }
333
+ }
334
+ }
335
+ },
336
+ "503": {
337
+ "description": "Google RPC error",
338
+ "content": {
339
+ "application/json": {
340
+ "schema": {
341
+ "$ref": "#/components/schemas/AdsError"
342
+ }
343
+ }
344
+ }
345
+ }
346
+ },
347
+ "x-mockingbird": {
348
+ "parity": {
349
+ "safe": false
350
+ }
351
+ }
352
+ }
353
+ },
354
+ "/v25/customers/{customerId}:uploadClickConversions": {
355
+ "post": {
356
+ "operationId": "UploadClickConversions",
357
+ "summary": "UploadClickConversions",
358
+ "parameters": [
359
+ {
360
+ "name": "customerId",
361
+ "in": "path",
362
+ "required": true,
363
+ "schema": {
364
+ "type": "string",
365
+ "pattern": "^[0-9]+$",
366
+ "example": "1000000001"
367
+ }
368
+ }
369
+ ],
370
+ "requestBody": {
371
+ "required": true,
372
+ "content": {
373
+ "application/json": {
374
+ "schema": {
375
+ "$ref": "#/components/schemas/ConversionRequest"
376
+ }
377
+ }
378
+ }
379
+ },
380
+ "responses": {
381
+ "200": {
382
+ "description": "Success",
383
+ "content": {
384
+ "application/json": {
385
+ "schema": {
386
+ "$ref": "#/components/schemas/ConversionResponse"
387
+ }
388
+ }
389
+ }
390
+ },
391
+ "400": {
392
+ "description": "Google RPC error",
393
+ "content": {
394
+ "application/json": {
395
+ "schema": {
396
+ "$ref": "#/components/schemas/AdsError"
397
+ }
398
+ }
399
+ }
400
+ },
401
+ "401": {
402
+ "description": "Google RPC error",
403
+ "content": {
404
+ "application/json": {
405
+ "schema": {
406
+ "$ref": "#/components/schemas/AdsError"
407
+ }
408
+ }
409
+ }
410
+ },
411
+ "403": {
412
+ "description": "Google RPC error",
413
+ "content": {
414
+ "application/json": {
415
+ "schema": {
416
+ "$ref": "#/components/schemas/AdsError"
417
+ }
418
+ }
419
+ }
420
+ },
421
+ "404": {
422
+ "description": "Google RPC error",
423
+ "content": {
424
+ "application/json": {
425
+ "schema": {
426
+ "$ref": "#/components/schemas/AdsError"
427
+ }
428
+ }
429
+ }
430
+ },
431
+ "429": {
432
+ "description": "Google RPC error",
433
+ "content": {
434
+ "application/json": {
435
+ "schema": {
436
+ "$ref": "#/components/schemas/AdsError"
437
+ }
438
+ }
439
+ }
440
+ },
441
+ "500": {
442
+ "description": "Google RPC error",
443
+ "content": {
444
+ "application/json": {
445
+ "schema": {
446
+ "$ref": "#/components/schemas/AdsError"
447
+ }
448
+ }
449
+ }
450
+ },
451
+ "503": {
452
+ "description": "Google RPC error",
453
+ "content": {
454
+ "application/json": {
455
+ "schema": {
456
+ "$ref": "#/components/schemas/AdsError"
457
+ }
458
+ }
459
+ }
460
+ }
461
+ },
462
+ "x-mockingbird": {
463
+ "parity": {
464
+ "safe": false
465
+ }
466
+ }
467
+ }
468
+ },
469
+ "/mp/collect": {
470
+ "post": {
471
+ "operationId": "CollectAnalyticsEvents",
472
+ "summary": "CollectAnalyticsEvents",
473
+ "parameters": [
474
+ {
475
+ "name": "measurement_id",
476
+ "in": "query",
477
+ "required": true,
478
+ "schema": {
479
+ "type": "string",
480
+ "example": "G-FIXTURE"
481
+ }
482
+ },
483
+ {
484
+ "name": "api_secret",
485
+ "in": "query",
486
+ "required": false,
487
+ "schema": {
488
+ "type": "string",
489
+ "example": "fixture-ga4-secret"
490
+ }
491
+ }
492
+ ],
493
+ "requestBody": {
494
+ "required": false,
495
+ "content": {
496
+ "application/json": {
497
+ "schema": {
498
+ "$ref": "#/components/schemas/CollectRequest"
499
+ }
500
+ }
501
+ }
502
+ },
503
+ "responses": {
504
+ "204": {
505
+ "description": "Success"
506
+ }
507
+ },
508
+ "x-mockingbird": {
509
+ "parity": {
510
+ "safe": false
511
+ }
512
+ }
513
+ }
514
+ },
515
+ "/debug/mp/collect": {
516
+ "post": {
517
+ "operationId": "ValidateAnalyticsEvents",
518
+ "summary": "ValidateAnalyticsEvents",
519
+ "parameters": [
520
+ {
521
+ "name": "measurement_id",
522
+ "in": "query",
523
+ "required": true,
524
+ "schema": {
525
+ "type": "string",
526
+ "example": "G-FIXTURE"
527
+ }
528
+ },
529
+ {
530
+ "name": "api_secret",
531
+ "in": "query",
532
+ "required": false,
533
+ "schema": {
534
+ "type": "string",
535
+ "example": "fixture-ga4-secret"
536
+ }
537
+ }
538
+ ],
539
+ "requestBody": {
540
+ "required": true,
541
+ "content": {
542
+ "application/json": {
543
+ "schema": {
544
+ "$ref": "#/components/schemas/CollectRequest"
545
+ }
546
+ }
547
+ }
548
+ },
549
+ "responses": {
550
+ "200": {
551
+ "description": "Success",
552
+ "content": {
553
+ "application/json": {
554
+ "schema": {
555
+ "$ref": "#/components/schemas/ValidationResponse"
556
+ }
557
+ }
558
+ }
559
+ },
560
+ "400": {
561
+ "description": "Google RPC error",
562
+ "content": {
563
+ "application/json": {
564
+ "schema": {
565
+ "$ref": "#/components/schemas/AdsError"
566
+ }
567
+ }
568
+ }
569
+ },
570
+ "401": {
571
+ "description": "Google RPC error",
572
+ "content": {
573
+ "application/json": {
574
+ "schema": {
575
+ "$ref": "#/components/schemas/AdsError"
576
+ }
577
+ }
578
+ }
579
+ },
580
+ "403": {
581
+ "description": "Google RPC error",
582
+ "content": {
583
+ "application/json": {
584
+ "schema": {
585
+ "$ref": "#/components/schemas/AdsError"
586
+ }
587
+ }
588
+ }
589
+ },
590
+ "404": {
591
+ "description": "Google RPC error",
592
+ "content": {
593
+ "application/json": {
594
+ "schema": {
595
+ "$ref": "#/components/schemas/AdsError"
596
+ }
597
+ }
598
+ }
599
+ },
600
+ "429": {
601
+ "description": "Google RPC error",
602
+ "content": {
603
+ "application/json": {
604
+ "schema": {
605
+ "$ref": "#/components/schemas/AdsError"
606
+ }
607
+ }
608
+ }
609
+ },
610
+ "500": {
611
+ "description": "Google RPC error",
612
+ "content": {
613
+ "application/json": {
614
+ "schema": {
615
+ "$ref": "#/components/schemas/AdsError"
616
+ }
617
+ }
618
+ }
619
+ },
620
+ "503": {
621
+ "description": "Google RPC error",
622
+ "content": {
623
+ "application/json": {
624
+ "schema": {
625
+ "$ref": "#/components/schemas/AdsError"
626
+ }
627
+ }
628
+ }
629
+ }
630
+ }
631
+ }
632
+ },
633
+ "/v1beta/properties/{propertyId}:runReport": {
634
+ "post": {
635
+ "operationId": "RunAnalyticsReport",
636
+ "summary": "RunAnalyticsReport",
637
+ "parameters": [
638
+ {
639
+ "name": "propertyId",
640
+ "in": "path",
641
+ "required": true,
642
+ "schema": {
643
+ "type": "string",
644
+ "pattern": "^[0-9]+$",
645
+ "example": "1000000001"
646
+ }
647
+ }
648
+ ],
649
+ "requestBody": {
650
+ "required": true,
651
+ "content": {
652
+ "application/json": {
653
+ "schema": {
654
+ "$ref": "#/components/schemas/ReportRequest"
655
+ }
656
+ }
657
+ }
658
+ },
659
+ "responses": {
660
+ "200": {
661
+ "description": "Success",
662
+ "content": {
663
+ "application/json": {
664
+ "schema": {
665
+ "$ref": "#/components/schemas/ReportResponse"
666
+ }
667
+ }
668
+ }
669
+ },
670
+ "400": {
671
+ "description": "Google RPC error",
672
+ "content": {
673
+ "application/json": {
674
+ "schema": {
675
+ "$ref": "#/components/schemas/AdsError"
676
+ }
677
+ }
678
+ }
679
+ },
680
+ "401": {
681
+ "description": "Google RPC error",
682
+ "content": {
683
+ "application/json": {
684
+ "schema": {
685
+ "$ref": "#/components/schemas/AdsError"
686
+ }
687
+ }
688
+ }
689
+ },
690
+ "403": {
691
+ "description": "Google RPC error",
692
+ "content": {
693
+ "application/json": {
694
+ "schema": {
695
+ "$ref": "#/components/schemas/AdsError"
696
+ }
697
+ }
698
+ }
699
+ },
700
+ "404": {
701
+ "description": "Google RPC error",
702
+ "content": {
703
+ "application/json": {
704
+ "schema": {
705
+ "$ref": "#/components/schemas/AdsError"
706
+ }
707
+ }
708
+ }
709
+ },
710
+ "429": {
711
+ "description": "Google RPC error",
712
+ "content": {
713
+ "application/json": {
714
+ "schema": {
715
+ "$ref": "#/components/schemas/AdsError"
716
+ }
717
+ }
718
+ }
719
+ },
720
+ "500": {
721
+ "description": "Google RPC error",
722
+ "content": {
723
+ "application/json": {
724
+ "schema": {
725
+ "$ref": "#/components/schemas/AdsError"
726
+ }
727
+ }
728
+ }
729
+ },
730
+ "503": {
731
+ "description": "Google RPC error",
732
+ "content": {
733
+ "application/json": {
734
+ "schema": {
735
+ "$ref": "#/components/schemas/AdsError"
736
+ }
737
+ }
738
+ }
739
+ }
740
+ }
741
+ }
742
+ },
743
+ "/v1beta/properties/{propertyId}:batchRunReports": {
744
+ "post": {
745
+ "operationId": "BatchRunAnalyticsReports",
746
+ "summary": "BatchRunAnalyticsReports",
747
+ "parameters": [
748
+ {
749
+ "name": "propertyId",
750
+ "in": "path",
751
+ "required": true,
752
+ "schema": {
753
+ "type": "string",
754
+ "pattern": "^[0-9]+$",
755
+ "example": "1000000001"
756
+ }
757
+ }
758
+ ],
759
+ "requestBody": {
760
+ "required": true,
761
+ "content": {
762
+ "application/json": {
763
+ "schema": {
764
+ "$ref": "#/components/schemas/BatchReportRequest"
765
+ }
766
+ }
767
+ }
768
+ },
769
+ "responses": {
770
+ "200": {
771
+ "description": "Success",
772
+ "content": {
773
+ "application/json": {
774
+ "schema": {
775
+ "$ref": "#/components/schemas/BatchReportResponse"
776
+ }
777
+ }
778
+ }
779
+ },
780
+ "400": {
781
+ "description": "Google RPC error",
782
+ "content": {
783
+ "application/json": {
784
+ "schema": {
785
+ "$ref": "#/components/schemas/AdsError"
786
+ }
787
+ }
788
+ }
789
+ },
790
+ "401": {
791
+ "description": "Google RPC error",
792
+ "content": {
793
+ "application/json": {
794
+ "schema": {
795
+ "$ref": "#/components/schemas/AdsError"
796
+ }
797
+ }
798
+ }
799
+ },
800
+ "403": {
801
+ "description": "Google RPC error",
802
+ "content": {
803
+ "application/json": {
804
+ "schema": {
805
+ "$ref": "#/components/schemas/AdsError"
806
+ }
807
+ }
808
+ }
809
+ },
810
+ "404": {
811
+ "description": "Google RPC error",
812
+ "content": {
813
+ "application/json": {
814
+ "schema": {
815
+ "$ref": "#/components/schemas/AdsError"
816
+ }
817
+ }
818
+ }
819
+ },
820
+ "429": {
821
+ "description": "Google RPC error",
822
+ "content": {
823
+ "application/json": {
824
+ "schema": {
825
+ "$ref": "#/components/schemas/AdsError"
826
+ }
827
+ }
828
+ }
829
+ },
830
+ "500": {
831
+ "description": "Google RPC error",
832
+ "content": {
833
+ "application/json": {
834
+ "schema": {
835
+ "$ref": "#/components/schemas/AdsError"
836
+ }
837
+ }
838
+ }
839
+ },
840
+ "503": {
841
+ "description": "Google RPC error",
842
+ "content": {
843
+ "application/json": {
844
+ "schema": {
845
+ "$ref": "#/components/schemas/AdsError"
846
+ }
847
+ }
848
+ }
849
+ }
850
+ }
851
+ }
852
+ }
853
+ },
854
+ "components": {
855
+ "schemas": {
856
+ "AdsError": {
857
+ "type": "object",
858
+ "properties": {
859
+ "error": {
860
+ "type": "object",
861
+ "properties": {
862
+ "code": {
863
+ "type": "integer"
864
+ },
865
+ "message": {
866
+ "type": "string"
867
+ },
868
+ "status": {
869
+ "type": "string"
870
+ },
871
+ "details": {
872
+ "type": "array",
873
+ "items": {
874
+ "type": "object",
875
+ "properties": {
876
+ "@type": {
877
+ "type": "string"
878
+ },
879
+ "errors": {
880
+ "type": "array",
881
+ "items": {
882
+ "type": "object",
883
+ "properties": {
884
+ "errorCode": {
885
+ "type": "object",
886
+ "properties": {},
887
+ "additionalProperties": {
888
+ "type": "string"
889
+ }
890
+ },
891
+ "message": {
892
+ "type": "string"
893
+ },
894
+ "location": {
895
+ "type": "object",
896
+ "properties": {
897
+ "fieldPathElements": {
898
+ "type": "array",
899
+ "items": {
900
+ "type": "object",
901
+ "properties": {
902
+ "fieldName": {
903
+ "type": "string"
904
+ },
905
+ "index": {
906
+ "type": "integer",
907
+ "minimum": 0
908
+ }
909
+ },
910
+ "additionalProperties": false,
911
+ "required": [
912
+ "fieldName"
913
+ ]
914
+ }
915
+ }
916
+ },
917
+ "additionalProperties": false
918
+ }
919
+ },
920
+ "additionalProperties": false,
921
+ "required": [
922
+ "errorCode",
923
+ "message"
924
+ ]
925
+ }
926
+ },
927
+ "requestId": {
928
+ "type": "string",
929
+ "x-mockingbird-volatile": {
930
+ "kind": "id"
931
+ }
932
+ }
933
+ },
934
+ "additionalProperties": true
935
+ }
936
+ }
937
+ },
938
+ "additionalProperties": false,
939
+ "required": [
940
+ "code",
941
+ "message",
942
+ "status"
943
+ ]
944
+ }
945
+ },
946
+ "additionalProperties": false,
947
+ "required": [
948
+ "error"
949
+ ]
950
+ },
951
+ "PartialFailure": {
952
+ "type": "object",
953
+ "properties": {
954
+ "code": {
955
+ "type": "integer"
956
+ },
957
+ "message": {
958
+ "type": "string"
959
+ },
960
+ "details": {
961
+ "type": "array",
962
+ "items": {
963
+ "type": "object",
964
+ "properties": {},
965
+ "additionalProperties": true
966
+ }
967
+ }
968
+ },
969
+ "additionalProperties": false,
970
+ "required": [
971
+ "code",
972
+ "message",
973
+ "details"
974
+ ]
975
+ },
976
+ "Budget": {
977
+ "type": "object",
978
+ "properties": {
979
+ "resourceName": {
980
+ "type": "string"
981
+ },
982
+ "id": {
983
+ "type": "string",
984
+ "pattern": "^-?[0-9]+$"
985
+ },
986
+ "name": {
987
+ "type": "string"
988
+ },
989
+ "amountMicros": {
990
+ "type": "string",
991
+ "pattern": "^-?[0-9]+$"
992
+ },
993
+ "totalAmountMicros": {
994
+ "type": "string",
995
+ "pattern": "^-?[0-9]+$"
996
+ },
997
+ "period": {
998
+ "type": "string",
999
+ "enum": [
1000
+ "DAILY",
1001
+ "CUSTOM_PERIOD",
1002
+ "UNSPECIFIED"
1003
+ ]
1004
+ },
1005
+ "deliveryMethod": {
1006
+ "type": "string",
1007
+ "enum": [
1008
+ "STANDARD",
1009
+ "UNSPECIFIED"
1010
+ ]
1011
+ },
1012
+ "explicitlyShared": {
1013
+ "type": "boolean"
1014
+ },
1015
+ "status": {
1016
+ "type": "string"
1017
+ },
1018
+ "referenceCount": {
1019
+ "type": "string",
1020
+ "pattern": "^-?[0-9]+$"
1021
+ }
1022
+ },
1023
+ "additionalProperties": true
1024
+ },
1025
+ "AdsRow": {
1026
+ "type": "object",
1027
+ "properties": {
1028
+ "campaign": {
1029
+ "type": "object",
1030
+ "properties": {
1031
+ "id": {
1032
+ "type": "string",
1033
+ "pattern": "^-?[0-9]+$"
1034
+ },
1035
+ "resourceName": {
1036
+ "type": "string"
1037
+ },
1038
+ "name": {
1039
+ "type": "string"
1040
+ },
1041
+ "status": {
1042
+ "type": "string"
1043
+ },
1044
+ "campaignBudget": {
1045
+ "type": "string"
1046
+ }
1047
+ },
1048
+ "additionalProperties": true
1049
+ },
1050
+ "campaignBudget": {
1051
+ "$ref": "#/components/schemas/Budget"
1052
+ },
1053
+ "conversionAction": {
1054
+ "type": "object",
1055
+ "properties": {
1056
+ "id": {
1057
+ "type": "string",
1058
+ "pattern": "^-?[0-9]+$"
1059
+ },
1060
+ "resourceName": {
1061
+ "type": "string"
1062
+ },
1063
+ "name": {
1064
+ "type": "string"
1065
+ },
1066
+ "category": {
1067
+ "type": "string"
1068
+ },
1069
+ "type": {
1070
+ "type": "string"
1071
+ },
1072
+ "status": {
1073
+ "type": "string"
1074
+ }
1075
+ },
1076
+ "additionalProperties": true
1077
+ },
1078
+ "customer": {
1079
+ "type": "object",
1080
+ "properties": {
1081
+ "id": {
1082
+ "type": "string",
1083
+ "pattern": "^-?[0-9]+$"
1084
+ },
1085
+ "resourceName": {
1086
+ "type": "string"
1087
+ },
1088
+ "descriptiveName": {
1089
+ "type": "string"
1090
+ },
1091
+ "currencyCode": {
1092
+ "type": "string"
1093
+ },
1094
+ "timeZone": {
1095
+ "type": "string"
1096
+ }
1097
+ },
1098
+ "additionalProperties": true
1099
+ },
1100
+ "metrics": {
1101
+ "type": "object",
1102
+ "properties": {
1103
+ "costMicros": {
1104
+ "type": "string",
1105
+ "pattern": "^-?[0-9]+$"
1106
+ },
1107
+ "clicks": {
1108
+ "type": "string",
1109
+ "pattern": "^-?[0-9]+$"
1110
+ },
1111
+ "impressions": {
1112
+ "type": "string",
1113
+ "pattern": "^-?[0-9]+$"
1114
+ },
1115
+ "conversions": {
1116
+ "type": "number"
1117
+ },
1118
+ "conversionsValue": {
1119
+ "type": "number"
1120
+ }
1121
+ },
1122
+ "additionalProperties": true
1123
+ },
1124
+ "segments": {
1125
+ "type": "object",
1126
+ "properties": {
1127
+ "date": {
1128
+ "type": "string"
1129
+ },
1130
+ "conversionAction": {
1131
+ "type": "string"
1132
+ },
1133
+ "conversionActionCategory": {
1134
+ "type": "string"
1135
+ }
1136
+ },
1137
+ "additionalProperties": true
1138
+ }
1139
+ },
1140
+ "additionalProperties": true
1141
+ },
1142
+ "SearchRequest": {
1143
+ "type": "object",
1144
+ "properties": {
1145
+ "query": {
1146
+ "type": "string",
1147
+ "minLength": 1,
1148
+ "example": "SELECT campaign.id, campaign.name, metrics.cost_micros, metrics.clicks, metrics.impressions, metrics.conversions, metrics.conversions_value, segments.date FROM campaign ORDER BY campaign.id"
1149
+ },
1150
+ "pageToken": {
1151
+ "type": "string"
1152
+ },
1153
+ "pageSize": {
1154
+ "type": "integer",
1155
+ "minimum": 0
1156
+ },
1157
+ "validateOnly": {
1158
+ "type": "boolean"
1159
+ },
1160
+ "searchSettings": {
1161
+ "type": "object",
1162
+ "properties": {
1163
+ "omitResults": {
1164
+ "type": "boolean"
1165
+ },
1166
+ "returnSummaryRow": {
1167
+ "type": "boolean"
1168
+ },
1169
+ "returnTotalResultsCount": {
1170
+ "type": "boolean"
1171
+ }
1172
+ },
1173
+ "additionalProperties": false
1174
+ }
1175
+ },
1176
+ "additionalProperties": false,
1177
+ "required": [
1178
+ "query"
1179
+ ]
1180
+ },
1181
+ "SearchResponse": {
1182
+ "type": "object",
1183
+ "properties": {
1184
+ "results": {
1185
+ "type": "array",
1186
+ "items": {
1187
+ "$ref": "#/components/schemas/AdsRow"
1188
+ }
1189
+ },
1190
+ "nextPageToken": {
1191
+ "type": "string",
1192
+ "x-mockingbird-volatile": {
1193
+ "kind": "token"
1194
+ }
1195
+ },
1196
+ "fieldMask": {
1197
+ "type": "string"
1198
+ },
1199
+ "totalResultsCount": {
1200
+ "type": "string",
1201
+ "pattern": "^-?[0-9]+$"
1202
+ },
1203
+ "summaryRow": {
1204
+ "$ref": "#/components/schemas/AdsRow"
1205
+ }
1206
+ },
1207
+ "additionalProperties": false
1208
+ },
1209
+ "SearchStreamRequest": {
1210
+ "type": "object",
1211
+ "properties": {
1212
+ "query": {
1213
+ "type": "string",
1214
+ "minLength": 1
1215
+ },
1216
+ "summaryRowSetting": {
1217
+ "type": "string",
1218
+ "enum": [
1219
+ "NO_SUMMARY_ROW",
1220
+ "SUMMARY_ROW_WITH_RESULTS",
1221
+ "SUMMARY_ROW_ONLY",
1222
+ "UNSPECIFIED"
1223
+ ]
1224
+ }
1225
+ },
1226
+ "additionalProperties": false,
1227
+ "required": [
1228
+ "query"
1229
+ ]
1230
+ },
1231
+ "StreamBatch": {
1232
+ "type": "object",
1233
+ "properties": {
1234
+ "results": {
1235
+ "type": "array",
1236
+ "items": {
1237
+ "$ref": "#/components/schemas/AdsRow"
1238
+ }
1239
+ },
1240
+ "fieldMask": {
1241
+ "type": "string"
1242
+ },
1243
+ "requestId": {
1244
+ "type": "string",
1245
+ "x-mockingbird-volatile": {
1246
+ "kind": "id"
1247
+ }
1248
+ },
1249
+ "summaryRow": {
1250
+ "$ref": "#/components/schemas/AdsRow"
1251
+ }
1252
+ },
1253
+ "additionalProperties": false
1254
+ },
1255
+ "BudgetOperation": {
1256
+ "type": "object",
1257
+ "properties": {
1258
+ "create": {
1259
+ "$ref": "#/components/schemas/Budget"
1260
+ },
1261
+ "update": {
1262
+ "$ref": "#/components/schemas/Budget"
1263
+ },
1264
+ "remove": {
1265
+ "type": "string"
1266
+ },
1267
+ "updateMask": {
1268
+ "type": "string"
1269
+ }
1270
+ },
1271
+ "additionalProperties": false
1272
+ },
1273
+ "BudgetMutationRequest": {
1274
+ "type": "object",
1275
+ "properties": {
1276
+ "operations": {
1277
+ "type": "array",
1278
+ "items": {
1279
+ "$ref": "#/components/schemas/BudgetOperation"
1280
+ },
1281
+ "minItems": 1
1282
+ },
1283
+ "partialFailure": {
1284
+ "type": "boolean"
1285
+ },
1286
+ "validateOnly": {
1287
+ "type": "boolean"
1288
+ },
1289
+ "responseContentType": {
1290
+ "type": "string",
1291
+ "enum": [
1292
+ "RESOURCE_NAME_ONLY",
1293
+ "MUTABLE_RESOURCE",
1294
+ "UNSPECIFIED"
1295
+ ]
1296
+ }
1297
+ },
1298
+ "additionalProperties": false,
1299
+ "required": [
1300
+ "operations"
1301
+ ]
1302
+ },
1303
+ "BudgetMutationResponse": {
1304
+ "type": "object",
1305
+ "properties": {
1306
+ "results": {
1307
+ "type": "array",
1308
+ "items": {
1309
+ "type": "object",
1310
+ "properties": {
1311
+ "resourceName": {
1312
+ "type": "string",
1313
+ "x-mockingbird-resource": {
1314
+ "type": "google_campaign_budget",
1315
+ "identity": true
1316
+ }
1317
+ },
1318
+ "campaignBudget": {
1319
+ "$ref": "#/components/schemas/Budget"
1320
+ }
1321
+ },
1322
+ "additionalProperties": false
1323
+ }
1324
+ },
1325
+ "partialFailureError": {
1326
+ "$ref": "#/components/schemas/PartialFailure"
1327
+ }
1328
+ },
1329
+ "additionalProperties": false
1330
+ },
1331
+ "Conversion": {
1332
+ "type": "object",
1333
+ "properties": {
1334
+ "gclid": {
1335
+ "type": "string"
1336
+ },
1337
+ "gbraid": {
1338
+ "type": "string"
1339
+ },
1340
+ "wbraid": {
1341
+ "type": "string"
1342
+ },
1343
+ "conversionAction": {
1344
+ "type": "string"
1345
+ },
1346
+ "conversionDateTime": {
1347
+ "type": "string"
1348
+ },
1349
+ "conversionValue": {
1350
+ "type": "number"
1351
+ },
1352
+ "currencyCode": {
1353
+ "type": "string"
1354
+ },
1355
+ "orderId": {
1356
+ "type": "string"
1357
+ },
1358
+ "consent": {
1359
+ "type": "object",
1360
+ "properties": {},
1361
+ "additionalProperties": true
1362
+ },
1363
+ "customVariables": {
1364
+ "type": "array",
1365
+ "items": {
1366
+ "type": "object",
1367
+ "properties": {},
1368
+ "additionalProperties": true
1369
+ }
1370
+ },
1371
+ "userIdentifiers": {
1372
+ "type": "array",
1373
+ "items": {
1374
+ "type": "object",
1375
+ "properties": {},
1376
+ "additionalProperties": true
1377
+ }
1378
+ }
1379
+ },
1380
+ "additionalProperties": true,
1381
+ "required": [
1382
+ "conversionAction",
1383
+ "conversionDateTime"
1384
+ ]
1385
+ },
1386
+ "ConversionRequest": {
1387
+ "type": "object",
1388
+ "properties": {
1389
+ "conversions": {
1390
+ "type": "array",
1391
+ "items": {
1392
+ "$ref": "#/components/schemas/Conversion"
1393
+ },
1394
+ "minItems": 1
1395
+ },
1396
+ "partialFailure": {
1397
+ "type": "boolean"
1398
+ },
1399
+ "validateOnly": {
1400
+ "type": "boolean"
1401
+ },
1402
+ "jobId": {
1403
+ "type": "integer",
1404
+ "minimum": 0,
1405
+ "maximum": 2147483647
1406
+ }
1407
+ },
1408
+ "additionalProperties": false,
1409
+ "required": [
1410
+ "conversions",
1411
+ "partialFailure"
1412
+ ]
1413
+ },
1414
+ "ConversionResponse": {
1415
+ "type": "object",
1416
+ "properties": {
1417
+ "jobId": {
1418
+ "type": "string",
1419
+ "pattern": "^-?[0-9]+$",
1420
+ "x-mockingbird-volatile": {
1421
+ "kind": "id"
1422
+ }
1423
+ },
1424
+ "partialFailureError": {
1425
+ "$ref": "#/components/schemas/PartialFailure"
1426
+ },
1427
+ "results": {
1428
+ "type": "array",
1429
+ "items": {
1430
+ "type": "object",
1431
+ "properties": {
1432
+ "gclid": {
1433
+ "type": "string"
1434
+ },
1435
+ "gbraid": {
1436
+ "type": "string"
1437
+ },
1438
+ "wbraid": {
1439
+ "type": "string"
1440
+ },
1441
+ "conversionAction": {
1442
+ "type": "string"
1443
+ },
1444
+ "conversionDateTime": {
1445
+ "type": "string"
1446
+ },
1447
+ "userIdentifiers": {
1448
+ "type": "array",
1449
+ "items": {
1450
+ "type": "object",
1451
+ "properties": {},
1452
+ "additionalProperties": true
1453
+ }
1454
+ }
1455
+ },
1456
+ "additionalProperties": false
1457
+ }
1458
+ }
1459
+ },
1460
+ "additionalProperties": false,
1461
+ "required": [
1462
+ "jobId"
1463
+ ]
1464
+ },
1465
+ "Event": {
1466
+ "type": "object",
1467
+ "properties": {
1468
+ "name": {
1469
+ "type": "string"
1470
+ },
1471
+ "params": {
1472
+ "type": "object",
1473
+ "properties": {},
1474
+ "additionalProperties": true
1475
+ },
1476
+ "timestamp_micros": {
1477
+ "type": "integer"
1478
+ }
1479
+ },
1480
+ "additionalProperties": true,
1481
+ "required": [
1482
+ "name"
1483
+ ]
1484
+ },
1485
+ "CollectRequest": {
1486
+ "type": "object",
1487
+ "properties": {
1488
+ "client_id": {
1489
+ "type": "string"
1490
+ },
1491
+ "user_id": {
1492
+ "type": "string"
1493
+ },
1494
+ "timestamp_micros": {
1495
+ "type": "integer"
1496
+ },
1497
+ "events": {
1498
+ "type": "array",
1499
+ "items": {
1500
+ "$ref": "#/components/schemas/Event"
1501
+ }
1502
+ },
1503
+ "validation_behavior": {
1504
+ "type": "string",
1505
+ "enum": [
1506
+ "RELAXED",
1507
+ "ENFORCE_RECOMMENDATIONS"
1508
+ ]
1509
+ },
1510
+ "user_properties": {
1511
+ "type": "object",
1512
+ "properties": {},
1513
+ "additionalProperties": true
1514
+ },
1515
+ "consent": {
1516
+ "type": "object",
1517
+ "properties": {},
1518
+ "additionalProperties": true
1519
+ },
1520
+ "non_personalized_ads": {
1521
+ "type": "boolean"
1522
+ }
1523
+ },
1524
+ "additionalProperties": true
1525
+ },
1526
+ "ValidationResponse": {
1527
+ "type": "object",
1528
+ "properties": {
1529
+ "validationMessages": {
1530
+ "type": "array",
1531
+ "items": {
1532
+ "type": "object",
1533
+ "properties": {
1534
+ "fieldPath": {
1535
+ "type": "string"
1536
+ },
1537
+ "description": {
1538
+ "type": "string"
1539
+ },
1540
+ "validationCode": {
1541
+ "type": "string",
1542
+ "enum": [
1543
+ "VALUE_INVALID",
1544
+ "VALUE_REQUIRED",
1545
+ "NAME_INVALID",
1546
+ "NAME_RESERVED",
1547
+ "VALUE_OUT_OF_BOUNDS",
1548
+ "EXCEEDED_MAX_ENTITIES",
1549
+ "NAME_DUPLICATED"
1550
+ ]
1551
+ }
1552
+ },
1553
+ "additionalProperties": false,
1554
+ "required": [
1555
+ "fieldPath",
1556
+ "description",
1557
+ "validationCode"
1558
+ ]
1559
+ }
1560
+ }
1561
+ },
1562
+ "additionalProperties": false,
1563
+ "required": [
1564
+ "validationMessages"
1565
+ ]
1566
+ },
1567
+ "ReportRequest": {
1568
+ "type": "object",
1569
+ "properties": {
1570
+ "property": {
1571
+ "type": "string"
1572
+ },
1573
+ "dimensions": {
1574
+ "type": "array",
1575
+ "items": {
1576
+ "type": "object",
1577
+ "properties": {
1578
+ "name": {
1579
+ "type": "string"
1580
+ }
1581
+ },
1582
+ "additionalProperties": false,
1583
+ "required": [
1584
+ "name"
1585
+ ]
1586
+ }
1587
+ },
1588
+ "metrics": {
1589
+ "type": "array",
1590
+ "items": {
1591
+ "type": "object",
1592
+ "properties": {
1593
+ "name": {
1594
+ "type": "string"
1595
+ }
1596
+ },
1597
+ "additionalProperties": false,
1598
+ "required": [
1599
+ "name"
1600
+ ]
1601
+ },
1602
+ "minItems": 1
1603
+ },
1604
+ "dateRanges": {
1605
+ "type": "array",
1606
+ "items": {
1607
+ "type": "object",
1608
+ "properties": {
1609
+ "startDate": {
1610
+ "type": "string"
1611
+ },
1612
+ "endDate": {
1613
+ "type": "string"
1614
+ },
1615
+ "name": {
1616
+ "type": "string"
1617
+ }
1618
+ },
1619
+ "additionalProperties": false,
1620
+ "required": [
1621
+ "startDate",
1622
+ "endDate"
1623
+ ]
1624
+ }
1625
+ },
1626
+ "dimensionFilter": {
1627
+ "type": "object",
1628
+ "properties": {},
1629
+ "additionalProperties": true
1630
+ },
1631
+ "metricFilter": {
1632
+ "type": "object",
1633
+ "properties": {},
1634
+ "additionalProperties": true
1635
+ },
1636
+ "offset": {
1637
+ "type": "string",
1638
+ "pattern": "^-?[0-9]+$"
1639
+ },
1640
+ "limit": {
1641
+ "type": "string",
1642
+ "pattern": "^-?[0-9]+$"
1643
+ },
1644
+ "orderBys": {
1645
+ "type": "array",
1646
+ "items": {
1647
+ "type": "object",
1648
+ "properties": {},
1649
+ "additionalProperties": true
1650
+ }
1651
+ },
1652
+ "currencyCode": {
1653
+ "type": "string"
1654
+ },
1655
+ "keepEmptyRows": {
1656
+ "type": "boolean"
1657
+ },
1658
+ "returnPropertyQuota": {
1659
+ "type": "boolean"
1660
+ },
1661
+ "metricAggregations": {
1662
+ "type": "array",
1663
+ "items": {
1664
+ "type": "string"
1665
+ }
1666
+ },
1667
+ "comparisons": {
1668
+ "type": "array",
1669
+ "items": {
1670
+ "type": "object",
1671
+ "properties": {},
1672
+ "additionalProperties": true
1673
+ }
1674
+ },
1675
+ "cohortSpec": {
1676
+ "type": "object",
1677
+ "properties": {},
1678
+ "additionalProperties": true
1679
+ }
1680
+ },
1681
+ "additionalProperties": false,
1682
+ "required": [
1683
+ "metrics"
1684
+ ]
1685
+ },
1686
+ "ReportResponse": {
1687
+ "type": "object",
1688
+ "properties": {
1689
+ "dimensionHeaders": {
1690
+ "type": "array",
1691
+ "items": {
1692
+ "type": "object",
1693
+ "properties": {
1694
+ "name": {
1695
+ "type": "string"
1696
+ }
1697
+ },
1698
+ "additionalProperties": false,
1699
+ "required": [
1700
+ "name"
1701
+ ]
1702
+ }
1703
+ },
1704
+ "metricHeaders": {
1705
+ "type": "array",
1706
+ "items": {
1707
+ "type": "object",
1708
+ "properties": {
1709
+ "name": {
1710
+ "type": "string"
1711
+ },
1712
+ "type": {
1713
+ "type": "string"
1714
+ }
1715
+ },
1716
+ "additionalProperties": false,
1717
+ "required": [
1718
+ "name",
1719
+ "type"
1720
+ ]
1721
+ }
1722
+ },
1723
+ "rows": {
1724
+ "type": "array",
1725
+ "items": {
1726
+ "type": "object",
1727
+ "properties": {
1728
+ "dimensionValues": {
1729
+ "type": "array",
1730
+ "items": {
1731
+ "type": "object",
1732
+ "properties": {
1733
+ "value": {
1734
+ "type": "string"
1735
+ }
1736
+ },
1737
+ "additionalProperties": false,
1738
+ "required": [
1739
+ "value"
1740
+ ]
1741
+ }
1742
+ },
1743
+ "metricValues": {
1744
+ "type": "array",
1745
+ "items": {
1746
+ "type": "object",
1747
+ "properties": {
1748
+ "value": {
1749
+ "type": "string"
1750
+ }
1751
+ },
1752
+ "additionalProperties": false,
1753
+ "required": [
1754
+ "value"
1755
+ ]
1756
+ }
1757
+ }
1758
+ },
1759
+ "additionalProperties": false,
1760
+ "required": [
1761
+ "dimensionValues",
1762
+ "metricValues"
1763
+ ]
1764
+ }
1765
+ },
1766
+ "rowCount": {
1767
+ "type": "integer",
1768
+ "minimum": 0
1769
+ },
1770
+ "metadata": {
1771
+ "type": "object",
1772
+ "properties": {
1773
+ "currencyCode": {
1774
+ "type": "string"
1775
+ },
1776
+ "timeZone": {
1777
+ "type": "string"
1778
+ }
1779
+ },
1780
+ "additionalProperties": false,
1781
+ "required": [
1782
+ "currencyCode",
1783
+ "timeZone"
1784
+ ]
1785
+ },
1786
+ "kind": {
1787
+ "type": "string"
1788
+ }
1789
+ },
1790
+ "additionalProperties": false,
1791
+ "required": [
1792
+ "dimensionHeaders",
1793
+ "metricHeaders",
1794
+ "rows",
1795
+ "rowCount",
1796
+ "metadata",
1797
+ "kind"
1798
+ ]
1799
+ },
1800
+ "BatchReportRequest": {
1801
+ "type": "object",
1802
+ "properties": {
1803
+ "requests": {
1804
+ "type": "array",
1805
+ "items": {
1806
+ "$ref": "#/components/schemas/ReportRequest"
1807
+ },
1808
+ "minItems": 1,
1809
+ "maxItems": 5
1810
+ }
1811
+ },
1812
+ "additionalProperties": false,
1813
+ "required": [
1814
+ "requests"
1815
+ ]
1816
+ },
1817
+ "BatchReportResponse": {
1818
+ "type": "object",
1819
+ "properties": {
1820
+ "reports": {
1821
+ "type": "array",
1822
+ "items": {
1823
+ "$ref": "#/components/schemas/ReportResponse"
1824
+ }
1825
+ },
1826
+ "kind": {
1827
+ "type": "string"
1828
+ }
1829
+ },
1830
+ "additionalProperties": false,
1831
+ "required": [
1832
+ "reports",
1833
+ "kind"
1834
+ ]
1835
+ }
1836
+ }
1837
+ }
1838
+ }