airbyte-source-google-search-console 1.6.0rc1__py3-none-any.whl → 1.8.0__py3-none-any.whl
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.
- {airbyte_source_google_search_console-1.6.0rc1.dist-info → airbyte_source_google_search_console-1.8.0.dist-info}/METADATA +1 -1
- airbyte_source_google_search_console-1.8.0.dist-info/RECORD +14 -0
- source_google_search_console/manifest.yaml +1269 -43
- source_google_search_console/source.py +2 -31
- source_google_search_console/spec.json +16 -0
- source_google_search_console/streams.py +0 -112
- airbyte_source_google_search_console-1.6.0rc1.dist-info/RECORD +0 -25
- source_google_search_console/schemas/search_analytics_all_fields.json +0 -53
- source_google_search_console/schemas/search_analytics_by_date.json +0 -37
- source_google_search_console/schemas/search_analytics_by_device.json +0 -41
- source_google_search_console/schemas/search_analytics_by_page.json +0 -41
- source_google_search_console/schemas/search_analytics_by_query.json +0 -41
- source_google_search_console/schemas/search_analytics_keyword_page_report.json +0 -54
- source_google_search_console/schemas/search_analytics_keyword_site_report_by_page.json +0 -50
- source_google_search_console/schemas/search_analytics_keyword_site_report_by_site.json +0 -50
- source_google_search_console/schemas/search_analytics_page_report.json +0 -50
- source_google_search_console/schemas/search_analytics_site_report_by_page.json +0 -46
- source_google_search_console/schemas/search_analytics_site_report_by_site.json +0 -46
- {airbyte_source_google_search_console-1.6.0rc1.dist-info → airbyte_source_google_search_console-1.8.0.dist-info}/WHEEL +0 -0
- {airbyte_source_google_search_console-1.6.0rc1.dist-info → airbyte_source_google_search_console-1.8.0.dist-info}/entry_points.txt +0 -0
@@ -3,15 +3,14 @@
|
|
3
3
|
#
|
4
4
|
|
5
5
|
import json
|
6
|
-
import
|
7
|
-
from typing import Any, List, Mapping, Optional, Tuple, Union
|
6
|
+
from typing import Any, List, Mapping, Optional, Union
|
8
7
|
from urllib.parse import urlparse
|
9
8
|
|
10
9
|
import jsonschema
|
11
10
|
import pendulum
|
12
11
|
import requests
|
13
12
|
|
14
|
-
from airbyte_cdk.models import ConfiguredAirbyteCatalog, FailureType
|
13
|
+
from airbyte_cdk.models import ConfiguredAirbyteCatalog, FailureType
|
15
14
|
from airbyte_cdk.sources.declarative.yaml_declarative_source import YamlDeclarativeSource
|
16
15
|
from airbyte_cdk.sources.source import TState
|
17
16
|
from airbyte_cdk.sources.streams import Stream
|
@@ -20,23 +19,11 @@ from airbyte_cdk.utils import AirbyteTracedException
|
|
20
19
|
from source_google_search_console.exceptions import (
|
21
20
|
InvalidSiteURLValidationError,
|
22
21
|
UnauthorizedOauthError,
|
23
|
-
UnauthorizedServiceAccountError,
|
24
22
|
UnidentifiedError,
|
25
23
|
)
|
26
24
|
from source_google_search_console.service_account_authenticator import ServiceAccountAuthenticator
|
27
25
|
from source_google_search_console.streams import (
|
28
|
-
SearchAnalyticsAllFields,
|
29
26
|
SearchAnalyticsByCustomDimensions,
|
30
|
-
SearchAnalyticsByDate,
|
31
|
-
SearchAnalyticsByDevice,
|
32
|
-
SearchAnalyticsByPage,
|
33
|
-
SearchAnalyticsByQuery,
|
34
|
-
SearchAnalyticsKeywordPageReport,
|
35
|
-
SearchAnalyticsKeywordSiteReportByPage,
|
36
|
-
SearchAnalyticsKeywordSiteReportBySite,
|
37
|
-
SearchAnalyticsPageReport,
|
38
|
-
SearchAnalyticsSiteReportByPage,
|
39
|
-
SearchAnalyticsSiteReportBySite,
|
40
27
|
)
|
41
28
|
|
42
29
|
|
@@ -152,22 +139,6 @@ class SourceGoogleSearchConsole(YamlDeclarativeSource):
|
|
152
139
|
|
153
140
|
streams = super().streams(config=config)
|
154
141
|
|
155
|
-
streams.extend(
|
156
|
-
[
|
157
|
-
SearchAnalyticsByDevice(**stream_config),
|
158
|
-
SearchAnalyticsByDate(**stream_config),
|
159
|
-
SearchAnalyticsByQuery(**stream_config),
|
160
|
-
SearchAnalyticsByPage(**stream_config),
|
161
|
-
SearchAnalyticsAllFields(**stream_config),
|
162
|
-
SearchAnalyticsKeywordPageReport(**stream_config),
|
163
|
-
SearchAnalyticsPageReport(**stream_config),
|
164
|
-
SearchAnalyticsSiteReportBySite(**stream_config),
|
165
|
-
SearchAnalyticsSiteReportByPage(**stream_config),
|
166
|
-
SearchAnalyticsKeywordSiteReportByPage(**stream_config),
|
167
|
-
SearchAnalyticsKeywordSiteReportBySite(**stream_config),
|
168
|
-
]
|
169
|
-
)
|
170
|
-
|
171
142
|
streams = streams + self.get_custom_reports(config=config, stream_config=stream_config)
|
172
143
|
|
173
144
|
return streams
|
@@ -157,6 +157,22 @@
|
|
157
157
|
"examples": ["final", "all"],
|
158
158
|
"default": "final",
|
159
159
|
"order": 6
|
160
|
+
},
|
161
|
+
"num_workers": {
|
162
|
+
"type": "integer",
|
163
|
+
"title": "Number of concurrent workers",
|
164
|
+
"minimum": 2,
|
165
|
+
"maximum": 100,
|
166
|
+
"default": 40,
|
167
|
+
"examples": [30, 40, 50],
|
168
|
+
"description": "The number of worker threads to use for the sync. For more details on Google Search Console rate limits, refer to the <a href=\"https://developers.google.com/webmaster-tools/limits\">docs</a>."
|
169
|
+
},
|
170
|
+
"always_use_aggregation_type_auto": {
|
171
|
+
"type": "boolean",
|
172
|
+
"title": "Always Use Aggregation Type Auto",
|
173
|
+
"description": "Some search analytics streams fail with a 400 error if the specified `aggregationType` is not supported. This is customer implementation dependent and if this error is encountered, enable this setting which will override the existing `aggregationType` to use `auto` which should resolve the stream errors.",
|
174
|
+
"default": false,
|
175
|
+
"order": 7
|
160
176
|
}
|
161
177
|
}
|
162
178
|
},
|
@@ -294,118 +294,6 @@ class SearchAnalytics(GoogleSearchConsole, CheckpointMixin, ABC):
|
|
294
294
|
yield record
|
295
295
|
|
296
296
|
|
297
|
-
class SearchAnalyticsByDate(SearchAnalytics):
|
298
|
-
primary_key = ["site_url", "date", "search_type"]
|
299
|
-
search_types = ["web", "news", "image", "video", "discover", "googleNews"]
|
300
|
-
dimensions = ["date"]
|
301
|
-
|
302
|
-
|
303
|
-
class SearchAnalyticsByDevice(SearchAnalytics):
|
304
|
-
primary_key = ["site_url", "date", "device", "search_type"]
|
305
|
-
search_types = ["web", "news", "image", "video", "googleNews"]
|
306
|
-
dimensions = ["date", "device"]
|
307
|
-
|
308
|
-
|
309
|
-
class SearchAnalyticsByPage(SearchAnalytics):
|
310
|
-
primary_key = ["site_url", "date", "page", "search_type"]
|
311
|
-
search_types = ["web", "news", "image", "video", "discover", "googleNews"]
|
312
|
-
dimensions = ["date", "page"]
|
313
|
-
|
314
|
-
|
315
|
-
class SearchAnalyticsByQuery(SearchAnalytics):
|
316
|
-
primary_key = ["site_url", "date", "query", "search_type"]
|
317
|
-
dimensions = ["date", "query"]
|
318
|
-
|
319
|
-
|
320
|
-
class SearchAnalyticsAllFields(SearchAnalytics):
|
321
|
-
primary_key = ["site_url", "date", "country", "device", "query", "page", "search_type"]
|
322
|
-
dimensions = ["date", "country", "device", "page", "query"]
|
323
|
-
|
324
|
-
|
325
|
-
class SearchAppearance(SearchAnalytics):
|
326
|
-
"""
|
327
|
-
Dimension searchAppearance can't be used with other dimension.
|
328
|
-
search appearance data (AMP, blue link, rich result, and so on) must be queried using a two-step process.
|
329
|
-
https://developers.google.com/webmaster-tools/v1/how-tos/all-your-data#search-appearance-data
|
330
|
-
"""
|
331
|
-
|
332
|
-
primary_key = None
|
333
|
-
dimensions = ["searchAppearance"]
|
334
|
-
|
335
|
-
|
336
|
-
class SearchByKeyword(SearchAnalytics):
|
337
|
-
"""
|
338
|
-
Adds searchAppearance value to dimensionFilterGroups in json body
|
339
|
-
https://developers.google.com/webmaster-tools/v1/how-tos/all-your-data#search-appearance-data
|
340
|
-
|
341
|
-
groupType: "and" - Whether all filters in this group must return true ("and"), or one or more must return true (not yet supported).
|
342
|
-
filters: {"dimension": "searchAppearance", "operator": "equals", "expression": keyword}
|
343
|
-
"""
|
344
|
-
|
345
|
-
def stream_slices(
|
346
|
-
self, sync_mode: SyncMode, cursor_field: List[str] = None, stream_state: Mapping[str, Any] = None
|
347
|
-
) -> Iterable[Optional[Mapping[str, Any]]]:
|
348
|
-
search_appearance_stream = SearchAppearance(self._http_client._session.auth, self._site_urls, self._start_date, self._end_date)
|
349
|
-
|
350
|
-
for stream_slice in super().stream_slices(sync_mode, cursor_field, stream_state):
|
351
|
-
keywords_records = search_appearance_stream.read_records(
|
352
|
-
sync_mode=SyncMode.full_refresh, stream_state=stream_state, stream_slice=stream_slice
|
353
|
-
)
|
354
|
-
keywords = {record["searchAppearance"] for record in keywords_records}
|
355
|
-
|
356
|
-
for keyword in keywords:
|
357
|
-
filters = {"dimension": "searchAppearance", "operator": "equals", "expression": keyword}
|
358
|
-
stream_slice["dimensionFilterGroups"] = [{"groupType": "and", "filters": filters}]
|
359
|
-
|
360
|
-
yield stream_slice
|
361
|
-
|
362
|
-
def request_body_json(
|
363
|
-
self,
|
364
|
-
stream_state: Mapping[str, Any] = None,
|
365
|
-
stream_slice: Mapping[str, Any] = None,
|
366
|
-
next_page_token: Mapping[str, Any] = None,
|
367
|
-
) -> Optional[Union[Dict[str, Any], str]]:
|
368
|
-
data = super().request_body_json(stream_state, stream_slice, next_page_token)
|
369
|
-
data["dimensionFilterGroups"] = stream_slice["dimensionFilterGroups"]
|
370
|
-
return data
|
371
|
-
|
372
|
-
|
373
|
-
class SearchAnalyticsKeywordPageReport(SearchByKeyword):
|
374
|
-
primary_key = ["site_url", "date", "country", "device", "query", "page", "search_type"]
|
375
|
-
dimensions = ["date", "country", "device", "query", "page"]
|
376
|
-
|
377
|
-
|
378
|
-
class SearchAnalyticsKeywordSiteReportByPage(SearchByKeyword):
|
379
|
-
primary_key = ["site_url", "date", "country", "device", "query", "search_type"]
|
380
|
-
dimensions = ["date", "country", "device", "query"]
|
381
|
-
aggregation_type = QueryAggregationType.by_page
|
382
|
-
|
383
|
-
|
384
|
-
class SearchAnalyticsKeywordSiteReportBySite(SearchByKeyword):
|
385
|
-
primary_key = ["site_url", "date", "country", "device", "query", "search_type"]
|
386
|
-
dimensions = ["date", "country", "device", "query"]
|
387
|
-
aggregation_type = QueryAggregationType.by_property
|
388
|
-
|
389
|
-
|
390
|
-
class SearchAnalyticsSiteReportBySite(SearchAnalytics):
|
391
|
-
primary_key = ["site_url", "date", "country", "device", "search_type"]
|
392
|
-
dimensions = ["date", "country", "device"]
|
393
|
-
aggregation_type = QueryAggregationType.by_property
|
394
|
-
|
395
|
-
|
396
|
-
class SearchAnalyticsSiteReportByPage(SearchAnalytics):
|
397
|
-
primary_key = ["site_url", "date", "country", "device", "search_type"]
|
398
|
-
search_types = ["web", "news", "image", "video", "googleNews"]
|
399
|
-
dimensions = ["date", "country", "device"]
|
400
|
-
aggregation_type = QueryAggregationType.by_page
|
401
|
-
|
402
|
-
|
403
|
-
class SearchAnalyticsPageReport(SearchAnalytics):
|
404
|
-
primary_key = ["site_url", "date", "country", "device", "search_type", "page"]
|
405
|
-
search_types = ["web", "news", "image", "video", "googleNews"]
|
406
|
-
dimensions = ["date", "country", "device", "page"]
|
407
|
-
|
408
|
-
|
409
297
|
class SearchAnalyticsByCustomDimensions(SearchAnalytics):
|
410
298
|
# `date` is a cursor field therefore should be mandatory
|
411
299
|
DEFAULT_DIMENSIONS = ["date"]
|
@@ -1,25 +0,0 @@
|
|
1
|
-
source_google_search_console/__init__.py,sha256=HQCPu-CK7XmVDtP9rmTdB2XyraVCc6pv9pw38-O8y48,1191
|
2
|
-
source_google_search_console/components.py,sha256=5o8kH2xwYUvk3yjnSd6okJVF2KBUqUIF4V97xRpPAyI,2803
|
3
|
-
source_google_search_console/config_migrations.py,sha256=Cl4SUdJpAf6wMM_vVhqjjU89NfUq9LIGJ9zNrWiBk-A,4235
|
4
|
-
source_google_search_console/exceptions.py,sha256=iD3jYC4WxVCEKGsqQ7Vaj1tbjhJZ4S5mnSDnwFJdsIQ,1097
|
5
|
-
source_google_search_console/manifest.yaml,sha256=zoPWyJ7gwOOK6yKAk4H92cD-N7Xg3iHtp5hTT_e80QA,10974
|
6
|
-
source_google_search_console/run.py,sha256=TBkPlseTERarkj6wL8AMEKgm5Xsb2drnltPVH6257-M,2195
|
7
|
-
source_google_search_console/schemas/search_analytics_all_fields.json,sha256=iQxRh_c_yz3uGofqpo1KX571TMmzYjKScb0PtI6SN_Q,1729
|
8
|
-
source_google_search_console/schemas/search_analytics_by_date.json,sha256=meCbWDayc1y0q-Lu-CAdjQVnsM8xZBX3BdF129UC1P8,1388
|
9
|
-
source_google_search_console/schemas/search_analytics_by_device.json,sha256=VtoFjmmv9rx-uhSFaRn0wm4LeSxRIaexrxg2Spvbneo,1525
|
10
|
-
source_google_search_console/schemas/search_analytics_by_page.json,sha256=KyUojZc4Lv3hPswxIJzUL5QDNsbvSugGjl_uHGF7Am4,1473
|
11
|
-
source_google_search_console/schemas/search_analytics_by_query.json,sha256=mYc1Fu1A5TWLZCApZSjjfs_urW5BRUCPQI3rw3yQjt4,1439
|
12
|
-
source_google_search_console/schemas/search_analytics_keyword_page_report.json,sha256=hCQZbpW9UNiCOrnUMkj4oQdzY0k8Hqoh1XkuKHvyvZw,1681
|
13
|
-
source_google_search_console/schemas/search_analytics_keyword_site_report_by_page.json,sha256=lFpbShmTQhFyySc_JCdIOqMP9RfOIA15fpQN9xNXtTI,1626
|
14
|
-
source_google_search_console/schemas/search_analytics_keyword_site_report_by_site.json,sha256=AVUl5x9jLL0FcStbTR-FMy-_A7uM-VlrJ-kdCBXWz_g,1755
|
15
|
-
source_google_search_console/schemas/search_analytics_page_report.json,sha256=-b0Y0LenTchS0q9A2aQ4hIjUjXkYF8erOtyrTMhf6MM,1776
|
16
|
-
source_google_search_console/schemas/search_analytics_site_report_by_page.json,sha256=hWKHkm1reqGGu1dNcWBe6_XkZ5tK-UaiymrYRVgxRxI,1515
|
17
|
-
source_google_search_console/schemas/search_analytics_site_report_by_site.json,sha256=rAh6LuNy7nCrrNM9MTd0qxAVc886ecQaqWRgV63OfyA,1408
|
18
|
-
source_google_search_console/service_account_authenticator.py,sha256=pAWKAXfwfTY3xkXvQJH0EyFphFULdCIcC47YXYTO9X8,1307
|
19
|
-
source_google_search_console/source.py,sha256=7FD4ciRrsptU7ZIxAU2xLC37bgjKWzNkflE9ybmgpXM,9113
|
20
|
-
source_google_search_console/spec.json,sha256=WYtFvaSqWYGm1Dt2yV9G92U78Q94rh9oarbxJe3H7xo,8470
|
21
|
-
source_google_search_console/streams.py,sha256=T0eqhmxGPDAfFNMXFfG_vM4aYHFaHAHHAoj6s5XnjnI,18760
|
22
|
-
airbyte_source_google_search_console-1.6.0rc1.dist-info/METADATA,sha256=smSxRuSxL5aXxK-OcjVGdpR_jLJN_-dMEtsKyMu5Oww,5624
|
23
|
-
airbyte_source_google_search_console-1.6.0rc1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
24
|
-
airbyte_source_google_search_console-1.6.0rc1.dist-info/entry_points.txt,sha256=DMcgc9bCX-Vt6hm_68pa77qS3eGdeMhg-UdlFc-XKUM,85
|
25
|
-
airbyte_source_google_search_console-1.6.0rc1.dist-info/RECORD,,
|
@@ -1,53 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
3
|
-
"type": "object",
|
4
|
-
"properties": {
|
5
|
-
"site_url": {
|
6
|
-
"description": "The URL of the site from which the data originates.",
|
7
|
-
"type": ["null", "string"]
|
8
|
-
},
|
9
|
-
"search_type": {
|
10
|
-
"description": "The type of search (e.g., web, image, video) that triggered the search result.",
|
11
|
-
"type": ["null", "string"]
|
12
|
-
},
|
13
|
-
"date": {
|
14
|
-
"description": "The date when the search query occurred.",
|
15
|
-
"type": ["null", "string"],
|
16
|
-
"format": "date"
|
17
|
-
},
|
18
|
-
"country": {
|
19
|
-
"description": "The country from which the search query originated.",
|
20
|
-
"type": ["null", "string"]
|
21
|
-
},
|
22
|
-
"device": {
|
23
|
-
"description": "The type of device used by the user (e.g., desktop, mobile).",
|
24
|
-
"type": ["null", "string"]
|
25
|
-
},
|
26
|
-
"page": {
|
27
|
-
"description": "The page URL that appeared in the search results.",
|
28
|
-
"type": ["null", "string"]
|
29
|
-
},
|
30
|
-
"query": {
|
31
|
-
"description": "The search query entered by the user.",
|
32
|
-
"type": ["null", "string"]
|
33
|
-
},
|
34
|
-
"clicks": {
|
35
|
-
"description": "The number of times users clicked on the search result for a specific query.",
|
36
|
-
"type": ["null", "integer"]
|
37
|
-
},
|
38
|
-
"impressions": {
|
39
|
-
"description": "The number of times a search result appeared in response to a query.",
|
40
|
-
"type": ["null", "integer"]
|
41
|
-
},
|
42
|
-
"ctr": {
|
43
|
-
"description": "Click-through rate, calculated as clicks divided by impressions.",
|
44
|
-
"type": ["null", "number"],
|
45
|
-
"multipleOf": 1e-25
|
46
|
-
},
|
47
|
-
"position": {
|
48
|
-
"description": "The average position of the search result on the search engine results page.",
|
49
|
-
"type": ["null", "number"],
|
50
|
-
"multipleOf": 1e-25
|
51
|
-
}
|
52
|
-
}
|
53
|
-
}
|
@@ -1,37 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
3
|
-
"type": "object",
|
4
|
-
"properties": {
|
5
|
-
"site_url": {
|
6
|
-
"description": "The URL of the site for which the search analytics data is being reported.",
|
7
|
-
"type": ["null", "string"]
|
8
|
-
},
|
9
|
-
"search_type": {
|
10
|
-
"description": "The type of search query (e.g., web, image, video) that generated the search analytics data.",
|
11
|
-
"type": ["null", "string"]
|
12
|
-
},
|
13
|
-
"date": {
|
14
|
-
"description": "The date for which the search analytics data is being reported.",
|
15
|
-
"type": ["null", "string"],
|
16
|
-
"format": "date"
|
17
|
-
},
|
18
|
-
"clicks": {
|
19
|
-
"description": "The total number of times users clicked on the search result for the site URL on the specific date.",
|
20
|
-
"type": ["null", "integer"]
|
21
|
-
},
|
22
|
-
"impressions": {
|
23
|
-
"description": "The number of times the site URL was displayed in the search results to users on the specific date.",
|
24
|
-
"type": ["null", "integer"]
|
25
|
-
},
|
26
|
-
"ctr": {
|
27
|
-
"description": "The click-through rate (CTR) represents the percentage of total impressions that resulted in a click to the site URL.",
|
28
|
-
"type": ["null", "number"],
|
29
|
-
"multipleOf": 1e-25
|
30
|
-
},
|
31
|
-
"position": {
|
32
|
-
"description": "The average position of the site URL in the search results pages for the specific date.",
|
33
|
-
"type": ["null", "number"],
|
34
|
-
"multipleOf": 1e-25
|
35
|
-
}
|
36
|
-
}
|
37
|
-
}
|
@@ -1,41 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
3
|
-
"type": "object",
|
4
|
-
"properties": {
|
5
|
-
"site_url": {
|
6
|
-
"description": "The URL of the site for which search analytics data is being provided.",
|
7
|
-
"type": ["null", "string"]
|
8
|
-
},
|
9
|
-
"search_type": {
|
10
|
-
"description": "The type of search performed (e.g., web search, image search, video search).",
|
11
|
-
"type": ["null", "string"]
|
12
|
-
},
|
13
|
-
"date": {
|
14
|
-
"description": "The date for which the search analytics data is provided.",
|
15
|
-
"type": ["null", "string"],
|
16
|
-
"format": "date"
|
17
|
-
},
|
18
|
-
"device": {
|
19
|
-
"description": "The type of device used by the user for the search query (e.g., desktop, mobile).",
|
20
|
-
"type": ["null", "string"]
|
21
|
-
},
|
22
|
-
"clicks": {
|
23
|
-
"description": "The total number of times a user clicked on a search result linking to the target site.",
|
24
|
-
"type": ["null", "integer"]
|
25
|
-
},
|
26
|
-
"impressions": {
|
27
|
-
"description": "The total number of times a user saw a link to the target site in search results.",
|
28
|
-
"type": ["null", "integer"]
|
29
|
-
},
|
30
|
-
"ctr": {
|
31
|
-
"description": "Click-through rate represents the ratio of clicks to impressions, showing the effectiveness of your site in attracting clicks from search results.",
|
32
|
-
"type": ["null", "number"],
|
33
|
-
"multipleOf": 1e-25
|
34
|
-
},
|
35
|
-
"position": {
|
36
|
-
"description": "The average position of the site's URLs in search results for the given query or queries.",
|
37
|
-
"type": ["null", "number"],
|
38
|
-
"multipleOf": 1e-25
|
39
|
-
}
|
40
|
-
}
|
41
|
-
}
|
@@ -1,41 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
3
|
-
"type": "object",
|
4
|
-
"properties": {
|
5
|
-
"site_url": {
|
6
|
-
"description": "The URL of the site for which the search analytics data is being reported.",
|
7
|
-
"type": ["null", "string"]
|
8
|
-
},
|
9
|
-
"search_type": {
|
10
|
-
"description": "The type of search query that led to the page being displayed in search results.",
|
11
|
-
"type": ["null", "string"]
|
12
|
-
},
|
13
|
-
"date": {
|
14
|
-
"description": "The date for which the search analytics data is reported.",
|
15
|
-
"type": ["null", "string"],
|
16
|
-
"format": "date"
|
17
|
-
},
|
18
|
-
"page": {
|
19
|
-
"description": "The URL of the specific page being analyzed for search analytics data.",
|
20
|
-
"type": ["null", "string"]
|
21
|
-
},
|
22
|
-
"clicks": {
|
23
|
-
"description": "The number of times a user clicked on the search result linking to the page.",
|
24
|
-
"type": ["null", "integer"]
|
25
|
-
},
|
26
|
-
"impressions": {
|
27
|
-
"description": "The number of times a page from the site appeared in the search results viewed by users.",
|
28
|
-
"type": ["null", "integer"]
|
29
|
-
},
|
30
|
-
"ctr": {
|
31
|
-
"description": "Click-through rate (CTR) is the ratio of clicks to impressions, indicating the effectiveness of the page in generating clicks.",
|
32
|
-
"type": ["null", "number"],
|
33
|
-
"multipleOf": 1e-25
|
34
|
-
},
|
35
|
-
"position": {
|
36
|
-
"description": "The average position at which the page appeared in search results.",
|
37
|
-
"type": ["null", "number"],
|
38
|
-
"multipleOf": 1e-25
|
39
|
-
}
|
40
|
-
}
|
41
|
-
}
|
@@ -1,41 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
3
|
-
"type": "object",
|
4
|
-
"properties": {
|
5
|
-
"site_url": {
|
6
|
-
"description": "The URL of the site for which the search analytics data is captured.",
|
7
|
-
"type": ["null", "string"]
|
8
|
-
},
|
9
|
-
"search_type": {
|
10
|
-
"description": "The type of search result (e.g., web, image, video) for the specific query.",
|
11
|
-
"type": ["null", "string"]
|
12
|
-
},
|
13
|
-
"date": {
|
14
|
-
"description": "The date for which the search analytics data is recorded.",
|
15
|
-
"type": ["null", "string"],
|
16
|
-
"format": "date"
|
17
|
-
},
|
18
|
-
"query": {
|
19
|
-
"description": "The search query for which the search analytics data is recorded.",
|
20
|
-
"type": ["null", "string"]
|
21
|
-
},
|
22
|
-
"clicks": {
|
23
|
-
"description": "The number of times users clicked on the search result for the specific query.",
|
24
|
-
"type": ["null", "integer"]
|
25
|
-
},
|
26
|
-
"impressions": {
|
27
|
-
"description": "The number of times the search result was displayed for the specific query.",
|
28
|
-
"type": ["null", "integer"]
|
29
|
-
},
|
30
|
-
"ctr": {
|
31
|
-
"description": "The click-through rate (percentage) for the specific query, calculated as clicks divided by impressions.",
|
32
|
-
"type": ["null", "number"],
|
33
|
-
"multipleOf": 1e-25
|
34
|
-
},
|
35
|
-
"position": {
|
36
|
-
"description": "The average position at which the search result appeared for the specific query.",
|
37
|
-
"type": ["null", "number"],
|
38
|
-
"multipleOf": 1e-25
|
39
|
-
}
|
40
|
-
}
|
41
|
-
}
|
@@ -1,54 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "https://json-schema.org/draft-07/schema#",
|
3
|
-
"type": "object",
|
4
|
-
"additionalProperties": true,
|
5
|
-
"properties": {
|
6
|
-
"site_url": {
|
7
|
-
"description": "The URL of the website being monitored.",
|
8
|
-
"type": ["null", "string"]
|
9
|
-
},
|
10
|
-
"search_type": {
|
11
|
-
"description": "The type of search (e.g., web, image, video).",
|
12
|
-
"type": ["null", "string"]
|
13
|
-
},
|
14
|
-
"date": {
|
15
|
-
"description": "The date of the search data collected.",
|
16
|
-
"type": ["null", "string"],
|
17
|
-
"format": "date"
|
18
|
-
},
|
19
|
-
"country": {
|
20
|
-
"description": "The country where the search is made.",
|
21
|
-
"type": ["null", "string"]
|
22
|
-
},
|
23
|
-
"device": {
|
24
|
-
"description": "The device type used for the search (e.g., desktop, mobile).",
|
25
|
-
"type": ["null", "string"]
|
26
|
-
},
|
27
|
-
"page": {
|
28
|
-
"description": "The page URL on which the keyword appears in search results.",
|
29
|
-
"type": ["null", "string"]
|
30
|
-
},
|
31
|
-
"query": {
|
32
|
-
"description": "The search query used to find the site.",
|
33
|
-
"type": ["null", "string"]
|
34
|
-
},
|
35
|
-
"clicks": {
|
36
|
-
"description": "The number of clicks for the keyword on a specific page.",
|
37
|
-
"type": ["null", "integer"]
|
38
|
-
},
|
39
|
-
"impressions": {
|
40
|
-
"description": "The number of times the keyword appeared in search results.",
|
41
|
-
"type": ["null", "integer"]
|
42
|
-
},
|
43
|
-
"ctr": {
|
44
|
-
"description": "Click-through rate which is the percentage of clicks divided by impressions.",
|
45
|
-
"type": ["null", "number"],
|
46
|
-
"multipleOf": 1e-25
|
47
|
-
},
|
48
|
-
"position": {
|
49
|
-
"description": "The average position of the keyword on search results pages.",
|
50
|
-
"type": ["null", "number"],
|
51
|
-
"multipleOf": 1e-25
|
52
|
-
}
|
53
|
-
}
|
54
|
-
}
|
@@ -1,50 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "https://json-schema.org/draft-07/schema#",
|
3
|
-
"type": "object",
|
4
|
-
"additionalProperties": true,
|
5
|
-
"properties": {
|
6
|
-
"site_url": {
|
7
|
-
"description": "The URL of the website for which the search analytics data is retrieved.",
|
8
|
-
"type": ["null", "string"]
|
9
|
-
},
|
10
|
-
"search_type": {
|
11
|
-
"description": "The type of search conducted (e.g., web, image, video).",
|
12
|
-
"type": ["null", "string"]
|
13
|
-
},
|
14
|
-
"date": {
|
15
|
-
"description": "The date when the search data was recorded.",
|
16
|
-
"type": ["null", "string"],
|
17
|
-
"format": "date"
|
18
|
-
},
|
19
|
-
"country": {
|
20
|
-
"description": "The country from which the search query originated.",
|
21
|
-
"type": ["null", "string"]
|
22
|
-
},
|
23
|
-
"device": {
|
24
|
-
"description": "The device type used for the search query (e.g., desktop, mobile).",
|
25
|
-
"type": ["null", "string"]
|
26
|
-
},
|
27
|
-
"query": {
|
28
|
-
"description": "The search query used by the user.",
|
29
|
-
"type": ["null", "string"]
|
30
|
-
},
|
31
|
-
"clicks": {
|
32
|
-
"description": "The number of times users clicked on your website link in search results.",
|
33
|
-
"type": ["null", "integer"]
|
34
|
-
},
|
35
|
-
"impressions": {
|
36
|
-
"description": "The number of times your website link appeared in search results.",
|
37
|
-
"type": ["null", "integer"]
|
38
|
-
},
|
39
|
-
"ctr": {
|
40
|
-
"description": "Click-through rate: Number of clicks divided by the number of impressions.",
|
41
|
-
"type": ["null", "number"],
|
42
|
-
"multipleOf": 1e-25
|
43
|
-
},
|
44
|
-
"position": {
|
45
|
-
"description": "The average position of your website link in search results.",
|
46
|
-
"type": ["null", "number"],
|
47
|
-
"multipleOf": 1e-25
|
48
|
-
}
|
49
|
-
}
|
50
|
-
}
|
@@ -1,50 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "https://json-schema.org/draft-07/schema#",
|
3
|
-
"type": "object",
|
4
|
-
"additionalProperties": true,
|
5
|
-
"properties": {
|
6
|
-
"site_url": {
|
7
|
-
"description": "The URL of the site for which the search analytics data is recorded.",
|
8
|
-
"type": ["null", "string"]
|
9
|
-
},
|
10
|
-
"search_type": {
|
11
|
-
"description": "The type of search (e.g., web search, image search) that generated the analytics data.",
|
12
|
-
"type": ["null", "string"]
|
13
|
-
},
|
14
|
-
"date": {
|
15
|
-
"description": "The date for which the search analytics data is recorded.",
|
16
|
-
"type": ["null", "string"],
|
17
|
-
"format": "date"
|
18
|
-
},
|
19
|
-
"country": {
|
20
|
-
"description": "The country from which the search originated.",
|
21
|
-
"type": ["null", "string"]
|
22
|
-
},
|
23
|
-
"device": {
|
24
|
-
"description": "The type of device used by the user during the search (e.g., desktop, mobile).",
|
25
|
-
"type": ["null", "string"]
|
26
|
-
},
|
27
|
-
"query": {
|
28
|
-
"description": "The search query used by the user to find the site in search results.",
|
29
|
-
"type": ["null", "string"]
|
30
|
-
},
|
31
|
-
"clicks": {
|
32
|
-
"description": "The number of times users clicked on the search result linking to the site.",
|
33
|
-
"type": ["null", "integer"]
|
34
|
-
},
|
35
|
-
"impressions": {
|
36
|
-
"description": "The number of times the site was shown in search results to users.",
|
37
|
-
"type": ["null", "integer"]
|
38
|
-
},
|
39
|
-
"ctr": {
|
40
|
-
"description": "Click-through rate represents the percentage of users who clicked on the site's link after seeing it in search results.",
|
41
|
-
"type": ["null", "number"],
|
42
|
-
"multipleOf": 1e-25
|
43
|
-
},
|
44
|
-
"position": {
|
45
|
-
"description": "The average ranking position of the site in search results.",
|
46
|
-
"type": ["null", "number"],
|
47
|
-
"multipleOf": 1e-25
|
48
|
-
}
|
49
|
-
}
|
50
|
-
}
|
@@ -1,50 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "https://json-schema.org/draft-07/schema#",
|
3
|
-
"type": "object",
|
4
|
-
"additionalProperties": true,
|
5
|
-
"properties": {
|
6
|
-
"site_url": {
|
7
|
-
"description": "The URL of the website for which the search analytics data is being reported.",
|
8
|
-
"type": ["null", "string"]
|
9
|
-
},
|
10
|
-
"search_type": {
|
11
|
-
"description": "The type of search (e.g., web, image, video) that led users to the website.",
|
12
|
-
"type": ["null", "string"]
|
13
|
-
},
|
14
|
-
"date": {
|
15
|
-
"description": "The date when the search data was recorded.",
|
16
|
-
"type": ["null", "string"],
|
17
|
-
"format": "date"
|
18
|
-
},
|
19
|
-
"country": {
|
20
|
-
"description": "The country from which the search originated.",
|
21
|
-
"type": ["null", "string"]
|
22
|
-
},
|
23
|
-
"page": {
|
24
|
-
"description": "The specific page URL within the website that appeared in search results.",
|
25
|
-
"type": ["null", "string"]
|
26
|
-
},
|
27
|
-
"device": {
|
28
|
-
"description": "The type of device used by the user for the search query (e.g., desktop, mobile).",
|
29
|
-
"type": ["null", "string"]
|
30
|
-
},
|
31
|
-
"clicks": {
|
32
|
-
"description": "The total number of times users clicked on search results that led to the linked website.",
|
33
|
-
"type": ["null", "integer"]
|
34
|
-
},
|
35
|
-
"impressions": {
|
36
|
-
"description": "The total number of times a search result from the linked website was shown to users.",
|
37
|
-
"type": ["null", "integer"]
|
38
|
-
},
|
39
|
-
"ctr": {
|
40
|
-
"description": "Click-through rate: The percentage of clicks out of the total impressions for a given search query.",
|
41
|
-
"type": ["null", "number"],
|
42
|
-
"multipleOf": 1e-25
|
43
|
-
},
|
44
|
-
"position": {
|
45
|
-
"description": "The average position at which the website's search results appeared to users.",
|
46
|
-
"type": ["null", "number"],
|
47
|
-
"multipleOf": 1e-25
|
48
|
-
}
|
49
|
-
}
|
50
|
-
}
|