@biggora/claude-plugins 1.2.0 → 1.2.2

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 (185) hide show
  1. package/README.md +11 -4
  2. package/package.json +1 -1
  3. package/registry/registry.json +319 -244
  4. package/specs/coding.md +24 -0
  5. package/specs/pod.md +2 -0
  6. package/src/skills/captcha/README.md +221 -0
  7. package/src/skills/captcha/SKILL.md +355 -0
  8. package/src/skills/captcha/references/captcha-types.md +254 -0
  9. package/src/skills/captcha/references/services.md +172 -0
  10. package/src/skills/captcha/references/stealth.md +238 -0
  11. package/src/skills/captcha/scripts/solve_captcha.py +323 -0
  12. package/src/skills/captcha/scripts/solve_image_grid.py +350 -0
  13. package/src/skills/google-merchant-api/SKILL.md +581 -0
  14. package/src/skills/google-merchant-api/references/accounts.md +247 -0
  15. package/src/skills/google-merchant-api/references/content-api-legacy.md +216 -0
  16. package/src/skills/google-merchant-api/references/datasources.md +233 -0
  17. package/src/skills/google-merchant-api/references/inventories.md +201 -0
  18. package/src/skills/google-merchant-api/references/migration.md +267 -0
  19. package/src/skills/google-merchant-api/references/products.md +316 -0
  20. package/src/skills/google-merchant-api/references/promotions.md +201 -0
  21. package/src/skills/google-merchant-api/references/reports.md +240 -0
  22. package/src/skills/lv-aggregators-api/SKILL.md +113 -0
  23. package/src/skills/lv-aggregators-api/references/integration-guide.md +368 -0
  24. package/src/skills/lv-aggregators-api/references/kurpirkt.md +103 -0
  25. package/src/skills/lv-aggregators-api/references/salidzini.md +122 -0
  26. package/src/skills/tailwindcss-best-practices/SKILL.md +180 -0
  27. package/src/skills/tailwindcss-best-practices/references/best-practices-utility-patterns.md +87 -0
  28. package/src/skills/tailwindcss-best-practices/references/core-installation.md +109 -0
  29. package/src/skills/tailwindcss-best-practices/references/core-preflight.md +200 -0
  30. package/src/skills/tailwindcss-best-practices/references/core-responsive.md +163 -0
  31. package/src/skills/tailwindcss-best-practices/references/core-source-detection.md +114 -0
  32. package/src/skills/tailwindcss-best-practices/references/core-theme.md +108 -0
  33. package/src/skills/tailwindcss-best-practices/references/core-utility-classes.md +59 -0
  34. package/src/skills/tailwindcss-best-practices/references/core-variants.md +204 -0
  35. package/src/skills/tailwindcss-best-practices/references/effects-form-controls.md +76 -0
  36. package/src/skills/tailwindcss-best-practices/references/effects-mask.md +91 -0
  37. package/src/skills/tailwindcss-best-practices/references/effects-scroll-snap.md +59 -0
  38. package/src/skills/tailwindcss-best-practices/references/effects-text-shadow.md +78 -0
  39. package/src/skills/tailwindcss-best-practices/references/effects-transition-animation.md +80 -0
  40. package/src/skills/tailwindcss-best-practices/references/effects-visibility-interactivity.md +82 -0
  41. package/src/skills/tailwindcss-best-practices/references/features-content-detection.md +175 -0
  42. package/src/skills/tailwindcss-best-practices/references/features-custom-styles.md +203 -0
  43. package/src/skills/tailwindcss-best-practices/references/features-dark-mode.md +137 -0
  44. package/src/skills/tailwindcss-best-practices/references/features-functions-directives.md +241 -0
  45. package/src/skills/tailwindcss-best-practices/references/features-upgrade.md +160 -0
  46. package/src/skills/tailwindcss-best-practices/references/layout-aspect-ratio.md +39 -0
  47. package/src/skills/tailwindcss-best-practices/references/layout-columns.md +80 -0
  48. package/src/skills/tailwindcss-best-practices/references/layout-display.md +110 -0
  49. package/src/skills/tailwindcss-best-practices/references/layout-flexbox.md +112 -0
  50. package/src/skills/tailwindcss-best-practices/references/layout-grid.md +87 -0
  51. package/src/skills/tailwindcss-best-practices/references/layout-height.md +97 -0
  52. package/src/skills/tailwindcss-best-practices/references/layout-inset.md +103 -0
  53. package/src/skills/tailwindcss-best-practices/references/layout-logical-properties.md +92 -0
  54. package/src/skills/tailwindcss-best-practices/references/layout-margin.md +126 -0
  55. package/src/skills/tailwindcss-best-practices/references/layout-min-max-sizing.md +63 -0
  56. package/src/skills/tailwindcss-best-practices/references/layout-object-fit-position.md +64 -0
  57. package/src/skills/tailwindcss-best-practices/references/layout-overflow.md +57 -0
  58. package/src/skills/tailwindcss-best-practices/references/layout-padding.md +77 -0
  59. package/src/skills/tailwindcss-best-practices/references/layout-position.md +85 -0
  60. package/src/skills/tailwindcss-best-practices/references/layout-tables.md +67 -0
  61. package/src/skills/tailwindcss-best-practices/references/layout-width.md +102 -0
  62. package/src/skills/tailwindcss-best-practices/references/transform-base.md +68 -0
  63. package/src/skills/tailwindcss-best-practices/references/transform-rotate.md +70 -0
  64. package/src/skills/tailwindcss-best-practices/references/transform-scale.md +83 -0
  65. package/src/skills/tailwindcss-best-practices/references/transform-skew.md +62 -0
  66. package/src/skills/tailwindcss-best-practices/references/transform-translate.md +77 -0
  67. package/src/skills/tailwindcss-best-practices/references/typography-font-text.md +142 -0
  68. package/src/skills/tailwindcss-best-practices/references/typography-list-style.md +65 -0
  69. package/src/skills/tailwindcss-best-practices/references/typography-text-align.md +60 -0
  70. package/src/skills/tailwindcss-best-practices/references/visual-background.md +76 -0
  71. package/src/skills/tailwindcss-best-practices/references/visual-border.md +108 -0
  72. package/src/skills/tailwindcss-best-practices/references/visual-effects.md +111 -0
  73. package/src/skills/tailwindcss-best-practices/references/visual-svg.md +82 -0
  74. package/src/skills/test-mobile-app/SKILL.md +11 -6
  75. package/src/skills/test-mobile-app/scripts/analyze_apk.py +15 -4
  76. package/src/skills/test-mobile-app/scripts/check_environment.py +5 -5
  77. package/src/skills/test-mobile-app/scripts/run_tests.py +1 -1
  78. package/src/skills/test-web-ui/SKILL.md +264 -84
  79. package/src/skills/test-web-ui/scripts/discover.py +25 -12
  80. package/src/skills/test-web-ui/scripts/run_tests.py +3 -2
  81. package/src/skills/vite-best-practices/SKILL.md +115 -0
  82. package/src/skills/vite-best-practices/references/build-and-ssr.md +255 -0
  83. package/src/skills/vite-best-practices/references/core-config.md +231 -0
  84. package/src/skills/vite-best-practices/references/core-features.md +222 -0
  85. package/src/skills/vite-best-practices/references/core-plugin-api.md +294 -0
  86. package/src/skills/vite-best-practices/references/environment-api.md +108 -0
  87. package/src/skills/vite-best-practices/references/rolldown-migration.md +242 -0
  88. package/codex-cli-workspace/iteration-1/benchmark.json +0 -122
  89. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/eval_metadata.json +0 -13
  90. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/grading.json +0 -52
  91. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/outputs/response.md +0 -163
  92. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/with_skill/timing.json +0 -5
  93. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/grading.json +0 -58
  94. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/outputs/response.md +0 -151
  95. package/codex-cli-workspace/iteration-1/eval-1-ci-integration/without_skill/timing.json +0 -5
  96. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/eval_metadata.json +0 -13
  97. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/grading.json +0 -52
  98. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -86
  99. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  100. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/grading.json +0 -58
  101. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -164
  102. package/codex-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  103. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/eval_metadata.json +0 -13
  104. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/grading.json +0 -52
  105. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/outputs/response.md +0 -130
  106. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/with_skill/timing.json +0 -5
  107. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/grading.json +0 -64
  108. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/outputs/response.md +0 -209
  109. package/codex-cli-workspace/iteration-1/eval-3-profiles-troubleshooting/without_skill/timing.json +0 -5
  110. package/codex-cli-workspace/iteration-1/review.html +0 -1325
  111. package/gemini-cli-workspace/iteration-1/benchmark.json +0 -86
  112. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/eval_metadata.json +0 -37
  113. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/grading.json +0 -37
  114. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/outputs/response.md +0 -401
  115. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/with_skill/timing.json +0 -5
  116. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/grading.json +0 -37
  117. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/outputs/response.md +0 -405
  118. package/gemini-cli-workspace/iteration-1/eval-1-cicd-setup/without_skill/timing.json +0 -5
  119. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/eval_metadata.json +0 -37
  120. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/grading.json +0 -37
  121. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -212
  122. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  123. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/grading.json +0 -37
  124. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -427
  125. package/gemini-cli-workspace/iteration-1/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  126. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/eval_metadata.json +0 -32
  127. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/grading.json +0 -32
  128. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/outputs/response.md +0 -171
  129. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/with_skill/timing.json +0 -5
  130. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/grading.json +0 -32
  131. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/outputs/response.md +0 -199
  132. package/gemini-cli-workspace/iteration-1/eval-3-custom-slash-command/without_skill/timing.json +0 -5
  133. package/gemini-cli-workspace/iteration-1/review.html +0 -1325
  134. package/gemini-cli-workspace/iteration-2/benchmark.json +0 -173
  135. package/gemini-cli-workspace/iteration-2/benchmark.md +0 -28
  136. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/eval_metadata.json +0 -37
  137. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/grading.json +0 -37
  138. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/outputs/response.md +0 -195
  139. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/with_skill/timing.json +0 -5
  140. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/grading.json +0 -37
  141. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/outputs/response.md +0 -377
  142. package/gemini-cli-workspace/iteration-2/eval-1-cicd-setup/without_skill/timing.json +0 -5
  143. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/eval_metadata.json +0 -37
  144. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/grading.json +0 -37
  145. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/outputs/response.md +0 -127
  146. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/with_skill/timing.json +0 -5
  147. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/grading.json +0 -37
  148. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/outputs/response.md +0 -164
  149. package/gemini-cli-workspace/iteration-2/eval-2-mcp-server-config/without_skill/timing.json +0 -5
  150. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/eval_metadata.json +0 -32
  151. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/grading.json +0 -32
  152. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/outputs/response.md +0 -91
  153. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/with_skill/timing.json +0 -5
  154. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/grading.json +0 -32
  155. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/outputs/response.md +0 -112
  156. package/gemini-cli-workspace/iteration-2/eval-3-custom-slash-command/without_skill/timing.json +0 -5
  157. package/gemini-cli-workspace/iteration-2/eval-viewer.html +0 -1325
  158. package/screen-recording-workspace/evals.json +0 -41
  159. package/screen-recording-workspace/iteration-1/benchmark.json +0 -102
  160. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/eval_metadata.json +0 -31
  161. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/grading.json +0 -11
  162. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/outputs/demo.mp4 +0 -0
  163. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/with_skill/timing.json +0 -5
  164. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/grading.json +0 -11
  165. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/outputs/demo.mp4 +0 -0
  166. package/screen-recording-workspace/iteration-1/eval-0-fullscreen/without_skill/timing.json +0 -5
  167. package/screen-recording-workspace/iteration-1/eval-1-region-audio/eval_metadata.json +0 -31
  168. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/grading.json +0 -11
  169. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/outputs/region_capture.mp4 +0 -0
  170. package/screen-recording-workspace/iteration-1/eval-1-region-audio/with_skill/timing.json +0 -5
  171. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/grading.json +0 -11
  172. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/outputs/region_capture.mp4 +0 -0
  173. package/screen-recording-workspace/iteration-1/eval-1-region-audio/without_skill/timing.json +0 -5
  174. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/eval_metadata.json +0 -31
  175. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/grading.json +0 -11
  176. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/outputs/fallback_recording.mp4 +0 -0
  177. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/with_skill/timing.json +0 -5
  178. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/grading.json +0 -11
  179. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/outputs/fallback_recording.mp4 +0 -0
  180. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/outputs/record_screen.py +0 -67
  181. package/screen-recording-workspace/iteration-1/eval-2-python-fallback/without_skill/timing.json +0 -5
  182. package/screen-recording-workspace/iteration-1/review.html +0 -1325
  183. package/src/skills/codex-cli/evals/evals.json +0 -47
  184. package/src/skills/gemini-cli/evals/evals.json +0 -46
  185. package/src/skills/tm-search/evals/evals.json +0 -23
@@ -0,0 +1,247 @@
1
+ # Accounts Sub-API Reference
2
+
3
+ Base: `https://merchantapi.googleapis.com/accounts/v1`
4
+
5
+ ## Account Management
6
+
7
+ ### Core Account Operations
8
+
9
+ | Method | Endpoint | Description |
10
+ |--------|----------|-------------|
11
+ | `GET` | `/accounts/{account}` | Get account details |
12
+ | `PATCH` | `/accounts/{account}` | Update account |
13
+ | `DELETE` | `/accounts/{account}` | Delete account |
14
+ | `GET` | `/accounts` | List all accounts |
15
+ | `GET` | `/accounts/{parent}/subaccounts` | List sub-accounts |
16
+ | `POST` | `/accounts:createAndConfigure` | Create and configure new account |
17
+ | `POST` | `/accounts/{parent}/accounts:createTestAccount` | Create test account |
18
+
19
+ ### Account Object
20
+
21
+ ```json
22
+ {
23
+ "name": "accounts/123456789",
24
+ "accountId": "123456789",
25
+ "accountName": "My Store",
26
+ "languageCode": "en",
27
+ "adultContent": false,
28
+ "timeZone": {
29
+ "id": "America/New_York"
30
+ },
31
+ "accountType": "STANDALONE"
32
+ }
33
+ ```
34
+
35
+ ## Business Info
36
+
37
+ Manage store business information (address, phone, customer service).
38
+
39
+ | Method | Endpoint |
40
+ |--------|----------|
41
+ | `GET` | `/accounts/{account}/businessInfo` |
42
+ | `PATCH` | `/accounts/{account}/businessInfo` |
43
+
44
+ ```json
45
+ {
46
+ "name": "accounts/123456789/businessInfo",
47
+ "address": {
48
+ "regionCode": "US",
49
+ "postalCode": "10001",
50
+ "locality": "New York",
51
+ "administrativeArea": "NY",
52
+ "streetAddress": "123 Commerce St"
53
+ },
54
+ "phone": {
55
+ "number": "+12125551234"
56
+ },
57
+ "customerService": {
58
+ "uri": "https://example.com/support",
59
+ "email": "support@example.com",
60
+ "phone": {
61
+ "number": "+12125551234"
62
+ }
63
+ }
64
+ }
65
+ ```
66
+
67
+ ## Business Identity
68
+
69
+ Manage identity attributes (minority-owned, veteran-owned, etc.).
70
+
71
+ | Method | Endpoint |
72
+ |--------|----------|
73
+ | `GET` | `/accounts/{account}/businessIdentity` |
74
+ | `PATCH` | `/accounts/{account}/businessIdentity` |
75
+
76
+ ## Shipping Settings
77
+
78
+ Configure account-level shipping rules.
79
+
80
+ | Method | Endpoint |
81
+ |--------|----------|
82
+ | `GET` | `/accounts/{account}/shippingSettings` |
83
+ | `POST` | `/accounts/{account}/shippingSettings` |
84
+
85
+ ```json
86
+ {
87
+ "name": "accounts/123456789/shippingSettings",
88
+ "services": [
89
+ {
90
+ "serviceName": "Standard Shipping",
91
+ "active": true,
92
+ "deliveryCountries": ["US"],
93
+ "currencyCode": "USD",
94
+ "deliveryTime": {
95
+ "minTransitDays": 3,
96
+ "maxTransitDays": 7,
97
+ "minHandlingDays": 0,
98
+ "maxHandlingDays": 1
99
+ },
100
+ "rateGroups": [
101
+ {
102
+ "applicableShippingLabels": [],
103
+ "singleValue": {
104
+ "flatRate": {
105
+ "amountMicros": "5990000",
106
+ "currencyCode": "USD"
107
+ }
108
+ }
109
+ }
110
+ ]
111
+ }
112
+ ]
113
+ }
114
+ ```
115
+
116
+ ## Users
117
+
118
+ Manage who can access the Merchant Center account.
119
+
120
+ | Method | Endpoint |
121
+ |--------|----------|
122
+ | `GET` | `/accounts/{account}/users/{user}` |
123
+ | `GET` | `/accounts/{account}/users` |
124
+ | `POST` | `/accounts/{account}/users` |
125
+ | `PATCH` | `/accounts/{account}/users/{user}` |
126
+ | `DELETE` | `/accounts/{account}/users/{user}` |
127
+
128
+ ```json
129
+ {
130
+ "name": "accounts/123456789/users/user@example.com",
131
+ "emailAddress": "user@example.com",
132
+ "accessRights": ["STANDARD", "ADMIN"],
133
+ "state": "ACTIVE"
134
+ }
135
+ ```
136
+
137
+ **Access Rights:**
138
+ - `STANDARD` - View and manage products
139
+ - `ADMIN` - Full account control
140
+ - `PERFORMANCE_REPORTING` - View reports only
141
+
142
+ ## Programs
143
+
144
+ Manage enrollment in Google programs (Shopping Ads, Free Listings, etc.).
145
+
146
+ | Method | Endpoint |
147
+ |--------|----------|
148
+ | `GET` | `/accounts/{account}/programs/{program}` |
149
+ | `GET` | `/accounts/{account}/programs` |
150
+ | `POST` | `/accounts/{account}/programs/{program}:enable` |
151
+ | `POST` | `/accounts/{account}/programs/{program}:disable` |
152
+
153
+ Common programs: `FREE_LISTINGS`, `SHOPPING_ADS`, `FREE_LOCAL_LISTINGS`, `LOCAL_INVENTORY_ADS`
154
+
155
+ ## Regions
156
+
157
+ Define geographic regions for regional pricing and availability.
158
+
159
+ | Method | Endpoint |
160
+ |--------|----------|
161
+ | `GET` | `/accounts/{account}/regions/{region}` |
162
+ | `GET` | `/accounts/{account}/regions` |
163
+ | `POST` | `/accounts/{account}/regions` |
164
+ | `PATCH` | `/accounts/{account}/regions/{region}` |
165
+ | `DELETE` | `/accounts/{account}/regions/{region}` |
166
+ | `POST` | `/accounts/{account}/regions:batchCreate` |
167
+ | `POST` | `/accounts/{account}/regions:batchUpdate` |
168
+ | `POST` | `/accounts/{account}/regions:batchDelete` |
169
+
170
+ ```json
171
+ {
172
+ "name": "accounts/123456789/regions/northeast",
173
+ "displayName": "US Northeast",
174
+ "postalCodeArea": {
175
+ "regionCode": "US",
176
+ "postalCodes": [
177
+ { "begin": "10000", "end": "14999" },
178
+ { "begin": "06000", "end": "06999" }
179
+ ]
180
+ }
181
+ }
182
+ ```
183
+
184
+ ## Online Return Policies
185
+
186
+ | Method | Endpoint |
187
+ |--------|----------|
188
+ | `GET` | `/accounts/{account}/onlineReturnPolicies/{policy}` |
189
+ | `GET` | `/accounts/{account}/onlineReturnPolicies` |
190
+ | `POST` | `/accounts/{account}/onlineReturnPolicies` |
191
+ | `DELETE` | `/accounts/{account}/onlineReturnPolicies/{policy}` |
192
+
193
+ ## Homepage
194
+
195
+ Claim and manage your store homepage URL.
196
+
197
+ | Method | Endpoint |
198
+ |--------|----------|
199
+ | `GET` | `/accounts/{account}/homepage` |
200
+ | `PATCH` | `/accounts/{account}/homepage` |
201
+ | `POST` | `/accounts/{account}/homepage:claim` |
202
+ | `POST` | `/accounts/{account}/homepage:unclaim` |
203
+
204
+ ## Terms of Service
205
+
206
+ | Method | Endpoint |
207
+ |--------|----------|
208
+ | `GET` | `/termsOfService/{tos}` |
209
+ | `GET` | `/termsOfService:retrieveLatest` |
210
+ | `POST` | `/termsOfService/{tos}:accept` |
211
+ | `GET` | `/accounts/{account}/termsOfServiceAgreementStates/{state}` |
212
+
213
+ ## Autofeed Settings
214
+
215
+ Enable Google to auto-crawl your site for product data.
216
+
217
+ | Method | Endpoint |
218
+ |--------|----------|
219
+ | `GET` | `/accounts/{account}/autofeedSettings` |
220
+ | `PATCH` | `/accounts/{account}/autofeedSettings` |
221
+
222
+ ```json
223
+ {
224
+ "name": "accounts/123456789/autofeedSettings",
225
+ "enableProducts": true
226
+ }
227
+ ```
228
+
229
+ ## Developer Registration
230
+
231
+ Link your GCP project to Merchant Center.
232
+
233
+ | Method | Endpoint |
234
+ |--------|----------|
235
+ | `GET` | `/accounts/{account}/developerRegistration` |
236
+ | `POST` | `/accounts/{account}/developerRegistration:registerGcp` |
237
+ | `POST` | `/accounts/{account}/developerRegistration:unregisterGcp` |
238
+
239
+ ## Account Issues
240
+
241
+ List problems affecting your account.
242
+
243
+ | Method | Endpoint |
244
+ |--------|----------|
245
+ | `GET` | `/accounts/{account}/issues` |
246
+
247
+ Returns validation issues, policy violations, and suggested fixes.
@@ -0,0 +1,216 @@
1
+ # Content API for Shopping v2.1 (Legacy Reference)
2
+
3
+ **Sunset date: August 18, 2026.** Use the Merchant API for new integrations.
4
+
5
+ Base: `https://shoppingcontent.googleapis.com/content/v2.1`
6
+
7
+ ## Products
8
+
9
+ | Method | Endpoint | Description |
10
+ |--------|----------|-------------|
11
+ | `POST` | `/{merchantId}/products` | Insert product |
12
+ | `PATCH` | `/{merchantId}/products/{productId}` | Update product |
13
+ | `DELETE` | `/{merchantId}/products/{productId}` | Delete product |
14
+ | `GET` | `/{merchantId}/products/{productId}` | Get product |
15
+ | `GET` | `/{merchantId}/products` | List products |
16
+ | `POST` | `/products/batch` | Batch operations |
17
+
18
+ **Product ID format:** `channel:contentLanguage:targetCountry:offerId`
19
+ Example: `online:en:US:SKU-001`
20
+
21
+ ### Insert Product
22
+
23
+ ```javascript
24
+ const product = {
25
+ offerId: 'SKU-001',
26
+ title: 'Premium Wireless Headphones',
27
+ description: 'Noise-cancelling Bluetooth headphones',
28
+ link: 'https://example.com/headphones',
29
+ imageLink: 'https://example.com/images/headphones.jpg',
30
+ contentLanguage: 'en',
31
+ targetCountry: 'US',
32
+ channel: 'online',
33
+ availability: 'in stock',
34
+ condition: 'new',
35
+ price: { value: '79.99', currency: 'USD' },
36
+ brand: 'AudioBrand',
37
+ gtin: '0123456789012',
38
+ googleProductCategory: 'Electronics > Audio > Headphones',
39
+ };
40
+
41
+ const response = await fetch(
42
+ `https://shoppingcontent.googleapis.com/content/v2.1/${MERCHANT_ID}/products`,
43
+ {
44
+ method: 'POST',
45
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
46
+ body: JSON.stringify(product),
47
+ }
48
+ );
49
+ ```
50
+
51
+ ### Custom Batch
52
+
53
+ ```javascript
54
+ const batchRequest = {
55
+ entries: [
56
+ {
57
+ batchId: 1,
58
+ merchantId: MERCHANT_ID,
59
+ method: 'insert',
60
+ product: {
61
+ offerId: 'SKU-001',
62
+ title: 'Product 1',
63
+ // ...
64
+ },
65
+ },
66
+ {
67
+ batchId: 2,
68
+ merchantId: MERCHANT_ID,
69
+ method: 'insert',
70
+ product: {
71
+ offerId: 'SKU-002',
72
+ title: 'Product 2',
73
+ // ...
74
+ },
75
+ },
76
+ ],
77
+ };
78
+
79
+ const response = await fetch(
80
+ `https://shoppingcontent.googleapis.com/content/v2.1/products/batch`,
81
+ {
82
+ method: 'POST',
83
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
84
+ body: JSON.stringify(batchRequest),
85
+ }
86
+ );
87
+ ```
88
+
89
+ ## Product Statuses
90
+
91
+ | Method | Endpoint |
92
+ |--------|----------|
93
+ | `GET` | `/{merchantId}/productstatuses/{productId}` |
94
+ | `GET` | `/{merchantId}/productstatuses` |
95
+ | `POST` | `/productstatuses/batch` |
96
+
97
+ ```json
98
+ {
99
+ "productId": "online:en:US:SKU-001",
100
+ "title": "Premium Headphones",
101
+ "destinationStatuses": [
102
+ {
103
+ "destination": "SurfacesAcrossGoogle",
104
+ "status": "approved",
105
+ "approvedCountries": ["US"],
106
+ "pendingCountries": [],
107
+ "disapprovedCountries": []
108
+ }
109
+ ],
110
+ "itemLevelIssues": [
111
+ {
112
+ "code": "missing_recommended_attribute",
113
+ "servability": "unaffected",
114
+ "description": "Missing product highlight",
115
+ "detail": "Add product highlights for better visibility",
116
+ "attributeName": "product_highlight"
117
+ }
118
+ ]
119
+ }
120
+ ```
121
+
122
+ ## Accounts
123
+
124
+ | Method | Endpoint |
125
+ |--------|----------|
126
+ | `GET` | `/{merchantId}/accounts/{accountId}` |
127
+ | `GET` | `/{merchantId}/accounts` |
128
+ | `POST` | `/{merchantId}/accounts` |
129
+ | `PATCH` | `/{merchantId}/accounts/{accountId}` |
130
+ | `DELETE` | `/{merchantId}/accounts/{accountId}` |
131
+
132
+ ## Datafeeds
133
+
134
+ | Method | Endpoint |
135
+ |--------|----------|
136
+ | `GET` | `/{merchantId}/datafeeds/{datafeedId}` |
137
+ | `GET` | `/{merchantId}/datafeeds` |
138
+ | `POST` | `/{merchantId}/datafeeds` |
139
+ | `PATCH` | `/{merchantId}/datafeeds/{datafeedId}` |
140
+ | `DELETE` | `/{merchantId}/datafeeds/{datafeedId}` |
141
+ | `POST` | `/{merchantId}/datafeeds/{datafeedId}/fetchNow` |
142
+
143
+ ```json
144
+ {
145
+ "id": "123456789",
146
+ "name": "Daily Product Feed",
147
+ "contentType": "products",
148
+ "fileName": "products.xml",
149
+ "fetchSchedule": {
150
+ "fetchUrl": "https://example.com/feeds/products.xml",
151
+ "hour": 6,
152
+ "timeZone": "America/New_York",
153
+ "dayOfMonth": 0,
154
+ "weekday": "monday",
155
+ "paused": false
156
+ },
157
+ "format": {
158
+ "fileEncoding": "utf-8",
159
+ "quotingMode": "none"
160
+ },
161
+ "targets": [
162
+ {
163
+ "language": "en",
164
+ "country": "US",
165
+ "includedDestinations": ["SurfacesAcrossGoogle", "ShoppingAds"]
166
+ }
167
+ ]
168
+ }
169
+ ```
170
+
171
+ ## Price Object (Content API)
172
+
173
+ ```json
174
+ {
175
+ "value": "79.99",
176
+ "currency": "USD"
177
+ }
178
+ ```
179
+
180
+ `value` is a decimal string. `currency` is ISO 4217.
181
+
182
+ ## Key Enums
183
+
184
+ **availability:** `in stock`, `out of stock`, `preorder`, `backorder`
185
+ (Note: spaces, not underscores — unlike Merchant API)
186
+
187
+ **condition:** `new`, `refurbished`, `used`
188
+
189
+ **channel:** `online`, `local`
190
+ (Note: lowercase strings — unlike Merchant API enums)
191
+
192
+ ## Pagination
193
+
194
+ List endpoints support `maxResults` and `pageToken`:
195
+
196
+ ```
197
+ GET /{merchantId}/products?maxResults=250&pageToken=abc123
198
+ ```
199
+
200
+ ## Error Format
201
+
202
+ ```json
203
+ {
204
+ "error": {
205
+ "errors": [
206
+ {
207
+ "domain": "content.ContentErrorDomain",
208
+ "reason": "not_found",
209
+ "message": "product not found"
210
+ }
211
+ ],
212
+ "code": 404,
213
+ "message": "product not found"
214
+ }
215
+ }
216
+ ```
@@ -0,0 +1,233 @@
1
+ # Data Sources Sub-API Reference
2
+
3
+ Base: `https://merchantapi.googleapis.com/datasources/v1`
4
+
5
+ Manage how product data flows into Merchant Center — via API, file uploads, or automatic crawling.
6
+
7
+ ## Endpoints
8
+
9
+ | Method | Endpoint | Description |
10
+ |--------|----------|-------------|
11
+ | `POST` | `/accounts/{account}/dataSources` | Create data source |
12
+ | `GET` | `/accounts/{account}/dataSources/{dataSource}` | Get data source |
13
+ | `GET` | `/accounts/{account}/dataSources` | List data sources |
14
+ | `PATCH` | `/accounts/{account}/dataSources/{dataSource}` | Update data source |
15
+ | `DELETE` | `/accounts/{account}/dataSources/{dataSource}` | Delete data source |
16
+ | `POST` | `/accounts/{account}/dataSources/{dataSource}:fetch` | Trigger file fetch |
17
+ | `GET` | `/accounts/{account}/dataSources/{dataSource}/fileUploads/{fileUpload}` | Get file upload status |
18
+
19
+ ## Data Source Types
20
+
21
+ ### Primary API Data Source
22
+
23
+ Products inserted directly via `productInputs:insert`.
24
+
25
+ ```json
26
+ {
27
+ "displayName": "My API Feed",
28
+ "primaryProductDataSource": {
29
+ "channel": "ONLINE_PRODUCTS",
30
+ "contentLanguage": "en",
31
+ "feedLabel": "US"
32
+ }
33
+ }
34
+ ```
35
+
36
+ ### Primary File Data Source
37
+
38
+ Products loaded from a file (URL fetch or direct upload).
39
+
40
+ ```json
41
+ {
42
+ "displayName": "Daily Product Feed",
43
+ "primaryProductDataSource": {
44
+ "channel": "ONLINE_PRODUCTS",
45
+ "contentLanguage": "en",
46
+ "feedLabel": "US"
47
+ },
48
+ "fileInput": {
49
+ "fetchSettings": {
50
+ "enabled": true,
51
+ "fetchUri": "https://example.com/feeds/products.xml",
52
+ "timeOfDay": { "hours": 6, "minutes": 0 },
53
+ "dayOfMonth": 0,
54
+ "timeZone": "America/New_York",
55
+ "frequency": "DAILY"
56
+ },
57
+ "fileName": "products.xml",
58
+ "fileInputType": "FETCH"
59
+ }
60
+ }
61
+ ```
62
+
63
+ ### Supplemental API Data Source
64
+
65
+ Adds/overrides attributes on products from a primary source.
66
+
67
+ ```json
68
+ {
69
+ "displayName": "Price Overrides",
70
+ "supplementalProductDataSource": {
71
+ "referencingPrimaryDataSources": [
72
+ "accounts/123456/dataSources/primary-feed-id"
73
+ ]
74
+ }
75
+ }
76
+ ```
77
+
78
+ ### Supplemental File Data Source
79
+
80
+ ```json
81
+ {
82
+ "displayName": "Weekly Sale Prices",
83
+ "supplementalProductDataSource": {
84
+ "referencingPrimaryDataSources": [
85
+ "accounts/123456/dataSources/primary-feed-id"
86
+ ]
87
+ },
88
+ "fileInput": {
89
+ "fetchSettings": {
90
+ "enabled": true,
91
+ "fetchUri": "https://example.com/feeds/sale-prices.tsv",
92
+ "frequency": "WEEKLY",
93
+ "dayOfWeek": "MONDAY",
94
+ "timeOfDay": { "hours": 3, "minutes": 0 },
95
+ "timeZone": "America/New_York"
96
+ },
97
+ "fileName": "sale-prices.tsv",
98
+ "fileInputType": "FETCH"
99
+ }
100
+ }
101
+ ```
102
+
103
+ ## Channel Types
104
+
105
+ | Channel | Description |
106
+ |---------|-------------|
107
+ | `ONLINE_PRODUCTS` | Online product listings |
108
+ | `LOCAL_PRODUCTS` | Local/in-store product listings |
109
+ | `PRODUCTS` | Both online and local |
110
+
111
+ ## Fetch Frequency
112
+
113
+ | Value | Description |
114
+ |-------|-------------|
115
+ | `DAILY` | Every day at specified time |
116
+ | `WEEKLY` | Specified day + time each week |
117
+ | `MONTHLY` | Specified day of month + time |
118
+
119
+ ## File Input Types
120
+
121
+ | Type | Description |
122
+ |------|-------------|
123
+ | `FETCH` | Google fetches from your URL on schedule |
124
+ | `GOOGLE_SHEETS` | Data from a Google Sheet |
125
+ | `UPLOAD` | Direct file upload via SFTP or Merchant Center UI |
126
+
127
+ ## Key Fields
128
+
129
+ | Field | Type | Description |
130
+ |-------|------|-------------|
131
+ | `name` | string | Resource name (output only) |
132
+ | `dataSourceId` | string | Numeric ID (output only) |
133
+ | `displayName` | string | Human-readable name |
134
+ | `primaryProductDataSource` | object | Config for primary data source |
135
+ | `supplementalProductDataSource` | object | Config for supplemental source |
136
+ | `fileInput` | object | File-based fetch/upload settings |
137
+ | `input` | enum | `API`, `FILE`, `UI`, `AUTOFEED` (output only) |
138
+
139
+ ## Common Workflows
140
+
141
+ ### Create Primary API Feed and Insert Products
142
+
143
+ ```javascript
144
+ // Step 1: Create the data source
145
+ const dsResponse = await fetch(
146
+ `https://merchantapi.googleapis.com/datasources/v1/accounts/${MERCHANT_ID}/dataSources`,
147
+ {
148
+ method: 'POST',
149
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
150
+ body: JSON.stringify({
151
+ displayName: 'Product API Feed',
152
+ primaryProductDataSource: {
153
+ channel: 'ONLINE_PRODUCTS',
154
+ contentLanguage: 'en',
155
+ feedLabel: 'US',
156
+ },
157
+ }),
158
+ }
159
+ );
160
+ const dataSource = await dsResponse.json();
161
+ const dataSourceName = dataSource.name; // accounts/123456/dataSources/789
162
+
163
+ // Step 2: Insert products referencing this data source
164
+ await fetch(
165
+ `https://merchantapi.googleapis.com/products/v1/accounts/${MERCHANT_ID}/productInputs:insert?dataSource=${dataSourceName}`,
166
+ {
167
+ method: 'POST',
168
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
169
+ body: JSON.stringify({
170
+ offerId: 'SKU-001',
171
+ contentLanguage: 'en',
172
+ feedLabel: 'US',
173
+ productAttributes: {
174
+ title: 'My Product',
175
+ // ... other attributes
176
+ },
177
+ }),
178
+ }
179
+ );
180
+ ```
181
+
182
+ ### Create Supplemental Feed for Sale Prices
183
+
184
+ ```javascript
185
+ // Supplemental feed overrides specific attributes
186
+ const dsResponse = await fetch(
187
+ `https://merchantapi.googleapis.com/datasources/v1/accounts/${MERCHANT_ID}/dataSources`,
188
+ {
189
+ method: 'POST',
190
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
191
+ body: JSON.stringify({
192
+ displayName: 'Sale Price Overrides',
193
+ supplementalProductDataSource: {
194
+ referencingPrimaryDataSources: [primaryDataSourceName],
195
+ },
196
+ }),
197
+ }
198
+ );
199
+ const supplementalDS = await dsResponse.json();
200
+
201
+ // Insert supplemental data (only the fields you want to override)
202
+ await fetch(
203
+ `https://merchantapi.googleapis.com/products/v1/accounts/${MERCHANT_ID}/productInputs:insert?dataSource=${supplementalDS.name}`,
204
+ {
205
+ method: 'POST',
206
+ headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
207
+ body: JSON.stringify({
208
+ offerId: 'SKU-001',
209
+ contentLanguage: 'en',
210
+ feedLabel: 'US',
211
+ productAttributes: {
212
+ salePrice: { amountMicros: '59990000', currencyCode: 'USD' },
213
+ salePriceEffectiveDate: {
214
+ startTime: '2024-12-01T00:00:00Z',
215
+ endTime: '2024-12-31T23:59:59Z',
216
+ },
217
+ },
218
+ }),
219
+ }
220
+ );
221
+ ```
222
+
223
+ ### Trigger Manual File Fetch
224
+
225
+ ```javascript
226
+ await fetch(
227
+ `https://merchantapi.googleapis.com/datasources/v1/accounts/${MERCHANT_ID}/dataSources/${DATA_SOURCE_ID}:fetch`,
228
+ {
229
+ method: 'POST',
230
+ headers: { 'Authorization': `Bearer ${token}` },
231
+ }
232
+ );
233
+ ```