elastic-enterprise-search 7.12.1 → 7.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (236) hide show
  1. checksums.yaml +4 -4
  2. data/.ci/functions/imports.sh +1 -0
  3. data/.ci/jobs/defaults.yml +4 -0
  4. data/.ci/jobs/elastic+enterprise-search-ruby+7.10.0.beta.1.yml +12 -0
  5. data/.ci/jobs/{elastic+enterprise-search-ruby+7.11.yml → elastic+enterprise-search-ruby+main.yml} +4 -4
  6. data/.ci/make.sh +162 -0
  7. data/.ci/run-repository.sh +2 -1
  8. data/.ci/test-matrix.yml +5 -3
  9. data/{spec/app-search/api_logs_spec.rb → .github/check_license_headers.rb} +13 -16
  10. data/.github/license-header.txt +16 -0
  11. data/.github/workflows/license.yml +13 -0
  12. data/.github/workflows/testing.yml +1 -1
  13. data/CONTRIBUTING.md +1 -1
  14. data/README.md +1 -1
  15. data/Rakefile +20 -0
  16. data/docs/guide/app-search-api.asciidoc +157 -1
  17. data/docs/guide/connecting.asciidoc +47 -1
  18. data/docs/guide/overview.asciidoc +3 -3
  19. data/docs/guide/release_notes/712.asciidoc +0 -10
  20. data/docs/guide/release_notes/713.asciidoc +21 -0
  21. data/docs/guide/release_notes/714.asciidoc +21 -0
  22. data/docs/guide/release_notes/715.asciidoc +36 -0
  23. data/docs/guide/release_notes/index.asciidoc +6 -0
  24. data/docs/guide/workplace-search-api.asciidoc +115 -2
  25. data/elastic-enterprise-search.gemspec +1 -1
  26. data/lib/elastic/app-search/api/add_meta_engine_source.rb +3 -2
  27. data/lib/elastic/app-search/api/api_key.rb +52 -0
  28. data/lib/elastic/app-search/api/api_logs.rb +14 -13
  29. data/lib/elastic/app-search/api/count_analytics.rb +7 -6
  30. data/lib/elastic/app-search/api/crawler_active_crawl_request.rb +51 -0
  31. data/lib/elastic/app-search/api/crawler_crawl_request.rb +54 -0
  32. data/lib/elastic/app-search/api/crawler_crawl_schedule.rb +51 -0
  33. data/lib/elastic/app-search/api/crawler_domain.rb +54 -0
  34. data/lib/elastic/app-search/api/crawler_domain_validation_result.rb +48 -0
  35. data/lib/elastic/app-search/api/crawler_metrics.rb +48 -0
  36. data/lib/elastic/app-search/api/crawler_overview.rb +51 -0
  37. data/lib/elastic/app-search/api/crawler_process_crawl.rb +54 -0
  38. data/lib/elastic/app-search/api/crawler_process_crawl_denied_urls.rb +54 -0
  39. data/lib/elastic/app-search/api/crawler_url_extraction_result.rb +52 -0
  40. data/lib/elastic/app-search/api/crawler_url_tracing_result.rb +52 -0
  41. data/lib/elastic/app-search/api/crawler_url_validation_result.rb +52 -0
  42. data/lib/elastic/app-search/api/crawler_user_agent.rb +48 -0
  43. data/lib/elastic/app-search/api/create_api_key.rb +57 -0
  44. data/lib/elastic/app-search/api/create_crawler_crawl_request.rb +51 -0
  45. data/lib/elastic/app-search/api/create_crawler_crawl_rule.rb +59 -0
  46. data/lib/elastic/app-search/api/create_crawler_domain.rb +55 -0
  47. data/lib/elastic/app-search/api/create_crawler_entry_point.rb +56 -0
  48. data/lib/elastic/app-search/api/create_crawler_process_crawl.rb +53 -0
  49. data/lib/elastic/app-search/api/create_crawler_sitemap.rb +56 -0
  50. data/lib/elastic/app-search/api/create_curation.rb +7 -6
  51. data/lib/elastic/app-search/api/create_engine.rb +9 -7
  52. data/lib/elastic/app-search/api/create_synonym_set.rb +7 -4
  53. data/lib/elastic/app-search/api/curation.rb +4 -3
  54. data/lib/elastic/app-search/api/delete_active_crawl_request.rb +51 -0
  55. data/lib/elastic/app-search/api/delete_api_key.rb +52 -0
  56. data/lib/elastic/app-search/api/delete_crawler_active_crawl_request.rb +51 -0
  57. data/lib/elastic/app-search/api/delete_crawler_crawl_rule.rb +57 -0
  58. data/lib/elastic/app-search/api/delete_crawler_crawl_schedule.rb +51 -0
  59. data/lib/elastic/app-search/api/delete_crawler_domain.rb +54 -0
  60. data/lib/elastic/app-search/api/delete_crawler_entry_point.rb +57 -0
  61. data/lib/elastic/app-search/api/delete_crawler_sitemap.rb +57 -0
  62. data/lib/elastic/app-search/api/delete_curation.rb +4 -3
  63. data/lib/elastic/app-search/api/delete_documents.rb +2 -1
  64. data/lib/elastic/app-search/api/delete_engine.rb +3 -2
  65. data/lib/elastic/app-search/api/delete_meta_engine_source.rb +3 -3
  66. data/lib/elastic/app-search/api/delete_synonym_set.rb +4 -3
  67. data/lib/elastic/app-search/api/denied_urls.rb +54 -0
  68. data/lib/elastic/app-search/api/documents.rb +3 -2
  69. data/lib/elastic/app-search/api/engine.rb +3 -2
  70. data/lib/elastic/app-search/api/index_documents.rb +3 -2
  71. data/lib/elastic/app-search/api/list_api_keys.rb +50 -0
  72. data/lib/elastic/app-search/api/list_crawler_crawl_requests.rb +52 -0
  73. data/lib/elastic/app-search/api/list_crawler_process_crawls.rb +51 -0
  74. data/lib/elastic/app-search/api/list_curations.rb +3 -2
  75. data/lib/elastic/app-search/api/list_documents.rb +3 -2
  76. data/lib/elastic/app-search/api/list_engines.rb +2 -1
  77. data/lib/elastic/app-search/api/list_synonym_sets.rb +3 -2
  78. data/lib/elastic/app-search/api/log_clickthrough.rb +8 -10
  79. data/lib/elastic/app-search/api/put_api_key.rb +59 -0
  80. data/lib/elastic/app-search/api/put_crawler_crawl_rule.rb +62 -0
  81. data/lib/elastic/app-search/api/put_crawler_crawl_schedule.rb +53 -0
  82. data/lib/elastic/app-search/api/put_crawler_domain.rb +58 -0
  83. data/lib/elastic/app-search/api/put_crawler_entry_point.rb +59 -0
  84. data/lib/elastic/app-search/api/put_crawler_sitemap.rb +59 -0
  85. data/lib/elastic/app-search/api/put_curation.rb +9 -8
  86. data/lib/elastic/app-search/api/put_documents.rb +3 -3
  87. data/lib/elastic/app-search/api/put_schema.rb +4 -4
  88. data/lib/elastic/app-search/api/put_search_settings.rb +6 -2
  89. data/lib/elastic/app-search/api/put_synonym_set.rb +8 -5
  90. data/lib/elastic/app-search/api/query_suggestion.rb +7 -7
  91. data/lib/elastic/app-search/api/reset_search_settings.rb +3 -2
  92. data/lib/elastic/app-search/api/schema.rb +3 -2
  93. data/lib/elastic/app-search/api/search.rb +14 -3
  94. data/lib/elastic/app-search/api/search_settings.rb +3 -2
  95. data/lib/elastic/app-search/api/synonym_set.rb +4 -3
  96. data/lib/elastic/app-search/api/top_clicks_analytics.rb +8 -8
  97. data/lib/elastic/app-search/api/top_queries_analytics.rb +7 -7
  98. data/lib/elastic/app-search/app_search.rb +0 -10
  99. data/lib/elastic/enterprise-search/api/health.rb +1 -0
  100. data/lib/elastic/enterprise-search/api/put_read_only.rb +3 -0
  101. data/lib/elastic/enterprise-search/api/read_only.rb +1 -0
  102. data/lib/elastic/enterprise-search/api/version.rb +1 -0
  103. data/lib/elastic/enterprise-search/client.rb +0 -16
  104. data/lib/elastic/enterprise-search/request.rb +14 -3
  105. data/lib/elastic/enterprise-search/version.rb +1 -1
  106. data/lib/elastic/enterprise_search.rb +11 -0
  107. data/lib/elastic/workplace-search/api/auto_query_refinement_details.rb +49 -0
  108. data/lib/elastic/workplace-search/api/command_sync_jobs.rb +53 -0
  109. data/lib/elastic/workplace-search/api/content_source.rb +49 -0
  110. data/lib/elastic/workplace-search/api/create_analytics_event.rb +8 -8
  111. data/lib/elastic/workplace-search/api/create_batch_synonym_sets.rb +50 -0
  112. data/lib/elastic/workplace-search/api/create_content_source.rb +55 -0
  113. data/lib/elastic/workplace-search/api/create_external_identity.rb +3 -1
  114. data/lib/elastic/workplace-search/api/current_user.rb +47 -0
  115. data/lib/elastic/workplace-search/api/delete_all_documents.rb +49 -0
  116. data/lib/elastic/workplace-search/api/delete_content_source.rb +49 -0
  117. data/lib/elastic/workplace-search/api/delete_documents.rb +1 -1
  118. data/lib/elastic/workplace-search/api/delete_documents_by_query.rb +50 -0
  119. data/lib/elastic/workplace-search/api/delete_synonym_set.rb +51 -0
  120. data/lib/elastic/workplace-search/api/document.rb +53 -0
  121. data/lib/elastic/workplace-search/api/list_content_sources.rb +48 -0
  122. data/lib/elastic/workplace-search/api/list_synonym_sets.rb +51 -0
  123. data/lib/elastic/workplace-search/api/put_content_source.rb +58 -0
  124. data/lib/elastic/workplace-search/api/put_content_source_icons.rb +53 -0
  125. data/lib/elastic/workplace-search/api/put_external_identity.rb +3 -1
  126. data/lib/elastic/workplace-search/api/put_synonym_set.rb +53 -0
  127. data/lib/elastic/workplace-search/api/put_triggers_blocklist.rb +47 -0
  128. data/lib/elastic/workplace-search/api/search.rb +4 -1
  129. data/lib/elastic/workplace-search/api/synonym_set.rb +51 -0
  130. data/lib/elastic/workplace-search/api/triggers_blocklist.rb +45 -0
  131. data/lib/elastic/workplace-search/workplace_search.rb +0 -10
  132. data/rake_tasks/unified_release_tasks.rake +46 -0
  133. data/spec/enterprise-search/client_spec.rb +0 -1
  134. data/spec/enterprise-search/request_spec.rb +26 -0
  135. data/spec/integration/app-search/api_key_spec.rb +110 -0
  136. data/spec/integration/app-search/api_logs_spec.rb +59 -0
  137. data/spec/integration/app-search/app_search_helper.rb +39 -0
  138. data/spec/integration/app-search/count_analytics_spec.rb +47 -0
  139. data/spec/integration/app-search/crawl_requests_spec.rb +86 -0
  140. data/spec/integration/app-search/crawler_crawl_rule_spec.rb +73 -0
  141. data/spec/integration/app-search/crawler_domain_spec.rb +82 -0
  142. data/spec/integration/app-search/crawler_entry_point_spec.rb +89 -0
  143. data/spec/integration/app-search/crawler_metrics_spec.rb +46 -0
  144. data/spec/integration/app-search/crawler_overview_spec.rb +45 -0
  145. data/spec/integration/app-search/crawler_process_crawl_denied_urls_spec.rb +50 -0
  146. data/spec/integration/app-search/crawler_process_crawl_spec.rb +66 -0
  147. data/spec/integration/app-search/crawler_scheduling_spec.rb +81 -0
  148. data/spec/integration/app-search/crawler_sitemap_spec.rb +72 -0
  149. data/spec/integration/app-search/crawler_urls_spec.rb +60 -0
  150. data/spec/{app-search/api_count_analytics_spec.rb → integration/app-search/crawler_user_agent_spec.rb} +6 -9
  151. data/spec/integration/app-search/curations_spec.rb +118 -0
  152. data/spec/integration/app-search/documents_spec.rb +123 -0
  153. data/spec/integration/app-search/engines_spec.rb +77 -0
  154. data/spec/{app-search/api_log_clickthrough_spec.rb → integration/app-search/log_clickthrough_spec.rb} +14 -7
  155. data/spec/integration/app-search/meta_engines_spec.rb +75 -0
  156. data/spec/integration/app-search/query_suggestion_spec.rb +50 -0
  157. data/spec/{app-search/api_schema_spec.rb → integration/app-search/schema_spec.rb} +21 -16
  158. data/spec/integration/app-search/search_and_multiple_search_spec.rb +67 -0
  159. data/spec/integration/app-search/search_settings_spec.rb +87 -0
  160. data/spec/integration/app-search/synonyms_spec.rb +79 -0
  161. data/spec/{app-search/api_top_clicks_analytics_spec.rb → integration/app-search/top_clicks_analytics_spec.rb} +20 -14
  162. data/spec/{app-search/api_top_queries_analytics_spec.rb → integration/app-search/top_queries_analytics_spec.rb} +16 -8
  163. data/spec/integration/enterprise_search_api_spec.rb +4 -0
  164. data/spec/integration/workplace-search/content_sources_spec.rb +106 -0
  165. data/spec/integration/workplace-search/documents_spec.rb +95 -0
  166. data/spec/{workplace-search → integration/workplace-search}/external_identities_spec.rb +37 -24
  167. data/spec/integration/workplace-search/icon.png +0 -0
  168. data/spec/integration/workplace-search/permissions_spec.rb +77 -0
  169. data/spec/integration/workplace-search/synonym_sets_spec.rb +92 -0
  170. data/spec/integration/workplace-search/triggers_spec.rb +43 -0
  171. data/spec/{app-search/api_query_suggestion_spec.rb → integration/workplace-search/users_spec.rb} +12 -15
  172. data/spec/integration/workplace-search/workplace_search_helper.rb +39 -0
  173. data/spec/webmock_requires.rb +16 -0
  174. data/spec/workplace-search/client_spec.rb +24 -2
  175. metadata +112 -83
  176. data/.ci/jobs/elastic+enterprise-search-ruby+master.yml +0 -12
  177. data/spec/app-search/api_curations_spec.rb +0 -97
  178. data/spec/app-search/api_documents_spec.rb +0 -102
  179. data/spec/app-search/api_engines_spec.rb +0 -67
  180. data/spec/app-search/api_meta_engines_spec.rb +0 -72
  181. data/spec/app-search/api_search_and_multi_search_spec.rb +0 -48
  182. data/spec/app-search/api_search_settings_spec.rb +0 -76
  183. data/spec/app-search/api_spec_helper.rb +0 -14
  184. data/spec/app-search/api_synonyms_spec.rb +0 -79
  185. data/spec/fixtures/vcr/app_search/add_meta_engine_source.yml +0 -109
  186. data/spec/fixtures/vcr/app_search/api_documents.yml +0 -56
  187. data/spec/fixtures/vcr/app_search/api_index_documents.yml +0 -57
  188. data/spec/fixtures/vcr/app_search/api_log_clickthrough.yml +0 -54
  189. data/spec/fixtures/vcr/app_search/api_logs.yml +0 -70
  190. data/spec/fixtures/vcr/app_search/api_put_schema.yml +0 -109
  191. data/spec/fixtures/vcr/app_search/api_put_search_settings.yml +0 -56
  192. data/spec/fixtures/vcr/app_search/api_query_suggestion.yml +0 -59
  193. data/spec/fixtures/vcr/app_search/api_reset_search_settings.yml +0 -56
  194. data/spec/fixtures/vcr/app_search/api_schema.yml +0 -56
  195. data/spec/fixtures/vcr/app_search/api_search_settings.yml +0 -56
  196. data/spec/fixtures/vcr/app_search/api_top_clicks_analytics.yml +0 -55
  197. data/spec/fixtures/vcr/app_search/api_top_clicks_analytics_query.yml +0 -55
  198. data/spec/fixtures/vcr/app_search/api_top_queries_analytics.yml +0 -55
  199. data/spec/fixtures/vcr/app_search/count_analytics.yml +0 -55
  200. data/spec/fixtures/vcr/app_search/create_and_update_document.yml +0 -107
  201. data/spec/fixtures/vcr/app_search/create_curation.yml +0 -113
  202. data/spec/fixtures/vcr/app_search/create_engine.yml +0 -55
  203. data/spec/fixtures/vcr/app_search/create_meta_engine.yml +0 -56
  204. data/spec/fixtures/vcr/app_search/create_synonym_set.yml +0 -56
  205. data/spec/fixtures/vcr/app_search/delete_curation.yml +0 -56
  206. data/spec/fixtures/vcr/app_search/delete_engine.yml +0 -55
  207. data/spec/fixtures/vcr/app_search/delete_meta_engine_source.yml +0 -56
  208. data/spec/fixtures/vcr/app_search/delete_synonym_set.yml +0 -56
  209. data/spec/fixtures/vcr/app_search/get_curation.yml +0 -56
  210. data/spec/fixtures/vcr/app_search/get_engine.yml +0 -55
  211. data/spec/fixtures/vcr/app_search/index_and_delete_document.yml +0 -107
  212. data/spec/fixtures/vcr/app_search/list_curations.yml +0 -56
  213. data/spec/fixtures/vcr/app_search/list_documents.yml +0 -57
  214. data/spec/fixtures/vcr/app_search/list_engines.yml +0 -55
  215. data/spec/fixtures/vcr/app_search/list_synonym_sets.yml +0 -56
  216. data/spec/fixtures/vcr/app_search/multi_query_search.yml +0 -63
  217. data/spec/fixtures/vcr/app_search/put_curation.yml +0 -113
  218. data/spec/fixtures/vcr/app_search/put_synonym_set.yml +0 -56
  219. data/spec/fixtures/vcr/app_search/search.yml +0 -57
  220. data/spec/fixtures/vcr/app_search/single_query_search.yml +0 -60
  221. data/spec/fixtures/vcr/app_search/synonym_set.yml +0 -56
  222. data/spec/fixtures/vcr/workplace_search/add_user_permissions.yml +0 -53
  223. data/spec/fixtures/vcr/workplace_search/clear_user_permissions.yml +0 -53
  224. data/spec/fixtures/vcr/workplace_search/create_external_identity.yml +0 -53
  225. data/spec/fixtures/vcr/workplace_search/delete_documents.yml +0 -53
  226. data/spec/fixtures/vcr/workplace_search/delete_external_identity.yml +0 -53
  227. data/spec/fixtures/vcr/workplace_search/index_documents.yml +0 -55
  228. data/spec/fixtures/vcr/workplace_search/list_external_identities.yml +0 -53
  229. data/spec/fixtures/vcr/workplace_search/list_permissions.yml +0 -53
  230. data/spec/fixtures/vcr/workplace_search/put_external_identity.yml +0 -53
  231. data/spec/fixtures/vcr/workplace_search/put_user_permissions.yml +0 -103
  232. data/spec/fixtures/vcr/workplace_search/remove_user_permissions.yml +0 -53
  233. data/spec/fixtures/vcr/workplace_search/retrieve_external_identity.yml +0 -53
  234. data/spec/fixtures/vcr/workplace_search/user_permissions_empty.yml +0 -53
  235. data/spec/workplace-search/documents_spec.rb +0 -80
  236. data/spec/workplace-search/permissions_spec.rb +0 -136
@@ -0,0 +1,21 @@
1
+ [[release_notes_713]]
2
+ === 7.13.0 Release notes
3
+
4
+ [discrete]
5
+ ==== General
6
+
7
+ - Tested with Elastic Enterprise Search API version 7.13.0.
8
+ - Improved meta header implementation for Elastic Cloud.
9
+
10
+ [discrete]
11
+ ==== Workplace Search
12
+
13
+ * The client now supports Basic Authentication and Elasticsearch tokens. All Workplace Search APIs support Basic Authentication, Elasticsearch tokens and Workplace Search admin user access tokens as an authentication method. You still need to set up user access tokens generated by the Workplace Search OAuth Service for the Search API and the Analytics Events API.
14
+ * New APIs:
15
+ ** `document`: Retrieve a document by ID from a specified content source.
16
+ ** `delete_all_documents`: Delete all documents for a given content source
17
+ ** `content_source`: Retrieves a content source by ID
18
+ ** `create_content_source`: Creates a custom content source
19
+ ** `delete_content_source`: Deletes a content source by ID
20
+ ** `list_content_sources`: Retrieves all content sources
21
+ ** `put_content_source`: Updates a custom content source
@@ -0,0 +1,21 @@
1
+ [[release_notes_714]]
2
+ === 7.14.0 Release notes
3
+
4
+ [discrete]
5
+ ==== General
6
+
7
+ - Tested with Elastic Enterprise Search API version 7.14.0.
8
+
9
+ [discrete]
10
+ ==== App Search
11
+
12
+ - Adds API Key endpoints: `api_key`, `create_api_key`, `delete_api_key`, `list_api_keys`, `put_api_key`
13
+
14
+ [discrete]
15
+ ==== Workplace Search
16
+
17
+ - Adds synonym set endpoints: `create_batch_synonym_sets`, `delete_synonym_set`, `list_synonym_sets`, `put_synonym_set`, `synonym_set`
18
+ - Adds `current_user` endpoint
19
+ - Adds `command_sync_jobs` endpoint
20
+ - Adds `delete_documents_by_query` endpoint
21
+ - Adds `put_content_source_icons` endpoint
@@ -0,0 +1,36 @@
1
+ [[release_notes_715]]
2
+ === 7.15.0 Release notes
3
+
4
+ [discrete]
5
+ ==== General
6
+
7
+ - Tested with Elastic Enterprise Search API version 7.15.0.
8
+ - Better source code documentation in general for API endpoints.
9
+
10
+ [discrete]
11
+ ==== App Search
12
+
13
+ - The test suite was migrated to full integration testing https://clients-ci.elastic.co/view/Ruby/[in Jenkins]. We were using VCR for testing the API, but now we're running the API tests against an instance of Elastic Enterprise Search.
14
+
15
+ - Some APIs that used to work with `GET` query parameters in App Search are now `POST` and the parameters being sent with the body. We'll use the body from `7.15`, but we'll keep supporting arguments parameters in 7.x for backwards compatibility. Some parameters previously required through the generated code don't throw an exception anymore and the error is delegated to server. As mentioned, these should go through the body instead of part of the query parameters, but we still support sending them as query parameters in `7.x` to keep backwards compatibility.
16
+
17
+ [discrete]
18
+ ===== Web Crawler API
19
+
20
+ [CAUTION]
21
+ ====
22
+ The Elastic Enterprise Search web crawler API is a *beta* feature.
23
+ Beta features are subject to change and are not covered by the support SLA of general release (GA) features.
24
+ Elastic plans to promote this feature to GA in a future release.
25
+ ====
26
+
27
+ New Web Crawler API endpoints:
28
+
29
+ `crawler_active_crawl_request`, `crawler_crawl_request`, `crawler_crawl_schedule`, `crawler_domain`, `crawler_domain_validation_result`, `crawler_metrics`, `crawler_overview`, `crawler_process_crawl_denied_urls`, `crawler_process_crawl`, `crawler_url_extraction_result`, `crawler_url_tracing_result`, `crawler_url_validation_result`, `crawler_user_agent`, `create_crawler_crawl_request`, `create_crawler_crawl_rule`, `create_crawler_domain`, `create_crawler_entry_point`, `create_crawler_process_crawl`, `create_crawler_sitemap`, `delete_active_crawl_request`, `delete_crawler_active_crawl_request`, `delete_crawler_crawl_rule`, `delete_crawler_crawl_schedule`, `delete_crawler_domain`, `delete_crawler_entry_point`, `delete_crawler_sitemap`, `list_crawler_crawl_requests`, `list_crawler_process_crawls`, `put_crawler_crawl_rule`, `put_crawler_crawl_schedule`, `put_crawler_domain`, `put_crawler_entry_point`, `put_crawler_sitemap`.
30
+
31
+ Refer to https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current/app-search-api.html[App Search API] for more information and examples.
32
+
33
+ [discrete]
34
+ ==== Workplace Search
35
+
36
+ - New APIs: `auto_query_refinement_details`, `triggers_blocklist` and `put_triggers_blocklist`. See https://www.elastic.co/guide/en/enterprise-search-clients/ruby/current/workplace-search-api.html[Workplace Search API] for more information and examples.
@@ -5,10 +5,16 @@
5
5
  [discrete]
6
6
  === 7.x
7
7
 
8
+ * <<release_notes_715, 7.15.0 Release Notes>>
9
+ * <<release_notes_714, 7.14.0 Release Notes>>
10
+ * <<release_notes_713, 7.13.0 Release Notes>>
8
11
  * <<release_notes_712, 7.12.0 Release Notes>>
9
12
  * <<release_notes_711, 7.11.0 Release Notes>>
10
13
  * <<release_notes_710, 7.10.0.beta.1 Release Notes>>
11
14
 
15
+ include::715.asciidoc[]
16
+ include::714.asciidoc[]
17
+ include::713.asciidoc[]
12
18
  include::712.asciidoc[]
13
19
  include::711.asciidoc[]
14
20
  include::710.asciidoc[]
@@ -1,6 +1,47 @@
1
1
  [[workplace-search-api]]
2
2
  == Workplace Search API
3
3
 
4
+ === Content Sources
5
+
6
+ [source,rb]
7
+ ----------------------------
8
+ # Create a custom content source
9
+ client.create_content_source(name: 'test')
10
+
11
+ # Retrieve a content source by ID
12
+ content_source_id = client.create_content_source(name: 'books').body['id']
13
+ client.content_source(content_source_id)
14
+
15
+ # Delete a content source by ID
16
+ client.delete_content_source(content_source_id)
17
+
18
+ # Retrieve all content sources
19
+ client.list_content_sources
20
+
21
+ # Update a custom content source
22
+ body = {
23
+ name: new_name,
24
+ schema: { title: 'text', body: 'text', url: 'text' },
25
+ display: { title_field: 'title', url_field: 'url', color: '#f00f00' },
26
+ is_searchable: true
27
+ }
28
+ client.put_content_source(id, body: body)
29
+
30
+ # Issue commands to a Content Source's sync jobs
31
+ client.command_sync_jobs(content_source_id, body: { command: 'interrupt' })
32
+
33
+ # Update a content source icon
34
+ # You need to encode the file with Base64:
35
+ require 'base64'
36
+
37
+ path = File.expand_path("#{File.dirname(__FILE__)}/icon.png")
38
+ icon = Base64.strict_encode64(File.read(path))
39
+ response = client.put_content_source_icons(content_source_id, main_icon: icon, alt_icon: icon)
40
+
41
+ # Retrieves a content source's automatic query refinement details
42
+ client.auto_query_refinement_details(content_source_id)
43
+ ----------------------------
44
+
4
45
  === Documents
5
46
 
6
47
  [source,rb]
@@ -15,10 +56,21 @@ documents = [
15
56
 
16
57
  response = client.index_documents(content_source_id, body: documents)
17
58
 
59
+ # Retrieve a document by ID from a specified content source
60
+ client.document(content_source_id, document_id: '75015d85370d')
61
+
18
62
  # Delete Documents
19
- response = client.delete_documents(content_source_id, document_ids: ['e68fbc2688f1', 'c535e226aee3'])
63
+ client.delete_documents(content_source_id, document_ids: ['e68fbc2688f1', 'c535e226aee3'])
64
+
65
+ # Delete all documents for a given content source
66
+ client.delete_all_documents(content_source_id)
67
+
68
+ # Delete documents by query
69
+ client.delete_documents_by_query(content_source_id, query: query)
20
70
  ----------------------------
21
71
 
72
+ [discrete]
73
+ [[ws-oauth-authentication]]
22
74
  === OAuth Authentication
23
75
 
24
76
  You need to configure the OAuth Application for Search in order to use the Workplace Search client's `search` and `create_analytics` endpoints. You need to follow the steps in https://www.elastic.co/guide/en/workplace-search/current/building-custom-search-workplace-search.html#configuring-search-oauth[Configuring the OAuth Application for Search] to retrieve the credentials: Client ID and Client Secret to request access tokens from the authentication server.
@@ -101,9 +153,18 @@ client.put_external_identity(content_source_id, user: 'elastic_user', body: body
101
153
  client.delete_external_identity(content_source_id, user: 'elastic_user')
102
154
  ----------------------------
103
155
 
156
+ === Search
157
+
158
+ You need to set up <<ws-oauth-authentication>> and use the access token for Search. See https://www.elastic.co/guide/en/workplace-search/current/workplace-search-search-api.html[Search API Reference] for available parameters and more details about search.
159
+
160
+ [source,rb]
161
+ ----------------------------
162
+ client.search(body: {query: 'search query'}, access_token: access_token)
163
+ ----------------------------
164
+
104
165
  === Create Analytics Event
105
166
 
106
- You need to set up OAuth Authentication for analytics events.
167
+ You need to set up <<ws-oauth-authentication>> to use analytics events.
107
168
 
108
169
  [source,rb]
109
170
  ----------------------------
@@ -119,3 +180,55 @@ body = {
119
180
 
120
181
  client.create_analytics_event(access_token: oauth_access_token, body: body)
121
182
  ----------------------------
183
+
184
+ === Synonym Sets
185
+
186
+ [source,rb]
187
+ ----------------------------
188
+ body = {
189
+ synonym_sets: [
190
+ { 'synonyms' => ['house', 'home', 'abode'] },
191
+ { 'synonyms' => ['cat', 'feline', 'kitty'] },
192
+ { 'synonyms' => ['mouses', 'mice'] }
193
+ ]
194
+ }
195
+
196
+ # Create batch synonym set
197
+ client.create_batch_synonym_sets(body: body)
198
+
199
+ # Delete synonym set
200
+ client.delete_synonym_set(synonym_set_id: id)
201
+
202
+ # List synonym sets
203
+ client.list_synonym_sets
204
+
205
+ # Get a synonym set
206
+ client.synonym_set(synonym_set_id: id)
207
+
208
+ # Update a synonym set
209
+ body = { synonyms: ['mouses', 'mice', 'luch'] }
210
+ client.put_synonym_set(synonym_set_id: id, body: body)
211
+ ----------------------------
212
+
213
+
214
+ === Current User
215
+
216
+ [source,rb]
217
+ ----------------------------
218
+ # Get the current user
219
+ client.current_user
220
+
221
+ # Get the current user and return the access token
222
+ client.current_user(get_token: true)
223
+ ----------------------------
224
+
225
+ === Triggers Blocklist
226
+
227
+ [source,rb]
228
+ ----------------------------
229
+ # Get current triggers blocklist
230
+ client.triggers_blocklist
231
+
232
+ # Update current triggers blocklist
233
+ client.put_triggers_blocklist(body: { blocklist: ['in', 'it', 'page'] })
234
+ ----------------------------
@@ -47,7 +47,7 @@ Gem::Specification.new do |s|
47
47
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
48
48
  s.require_paths = ['lib']
49
49
 
50
- s.add_dependency 'elasticsearch-transport', '>= 7.11', '< 7.14'
50
+ s.add_dependency 'elasticsearch-transport', '~> 7.13.0'
51
51
  s.add_runtime_dependency 'jwt', '>= 1.5', '< 3.0'
52
52
  s.add_development_dependency 'awesome_print'
53
53
  s.add_development_dependency 'byebug' unless defined?(JRUBY_VERSION)
@@ -21,9 +21,10 @@ module Elastic
21
21
  module EnterpriseSearch
22
22
  module AppSearch
23
23
  module Actions
24
- # Engine - Add a source engine to an existing meta engine
24
+ # Engines - Add a source engine
25
+ # Adds a source engine to a given meta engine
25
26
  #
26
- # @param engine_name [String] (*Required*)
27
+ # @param engine_name [String] Name of the engine (*Required*)
27
28
  # @param arguments [Hash] endpoint arguments
28
29
  # @option arguments [Array] :source_engines List of engine names (*Required*)
29
30
  # @option arguments [Hash] :headers optional HTTP headers to send with the request
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Licensed to Elasticsearch B.V. under one or more contributor
4
+ # license agreements. See the NOTICE file distributed with
5
+ # this work for additional information regarding copyright
6
+ # ownership. Elasticsearch B.V. licenses this file to you under
7
+ # the Apache License, Version 2.0 (the "License"); you may
8
+ # not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing,
14
+ # software distributed under the License is distributed on an
15
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ # KIND, either express or implied. See the License for the
17
+ # specific language governing permissions and limitations
18
+ # under the License.
19
+
20
+ module Elastic
21
+ module EnterpriseSearch
22
+ module AppSearch
23
+ module Actions
24
+ # Credentials - Retrieve an API key
25
+ # Retrieves details of an API key
26
+ #
27
+ # @param arguments [Hash] endpoint arguments
28
+ # @option arguments [String] :api_key_name Name of an API key (*Required*)
29
+ # @option arguments [Hash] :body The request body
30
+ # @option arguments [Hash] :headers optional HTTP headers to send with the request
31
+ #
32
+ # @see https://www.elastic.co/guide/en/app-search/current/credentials.html#credentials-single
33
+ #
34
+ def api_key(arguments = {})
35
+ raise ArgumentError, "Required parameter 'api_key_name' missing" unless arguments[:api_key_name]
36
+
37
+ api_key_name = arguments[:api_key_name]
38
+ body = arguments.delete(:body) || {}
39
+ headers = arguments.delete(:headers) || {}
40
+
41
+ request(
42
+ :get,
43
+ "api/as/v1/credentials/#{api_key_name}/",
44
+ arguments,
45
+ body,
46
+ headers
47
+ )
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -21,27 +21,28 @@ module Elastic
21
21
  module EnterpriseSearch
22
22
  module AppSearch
23
23
  module Actions
24
- # Logs - The API Log displays API request and response data at the Engine level
24
+ # APILogs - Retrieve API logs
25
+ # The API Log displays API request and response data at the Engine level
25
26
  #
26
- # @param engine_name [String] (*Required*)
27
+ # @param engine_name [String] Name of the engine (*Required*)
27
28
  # @param arguments [Hash] endpoint arguments
28
- # @option arguments [String] :from_date Filter date from (*Required*)
29
- # @option arguments [String] :to_date Filter date to (*Required*)
30
- # @option arguments [Integer] :current_page The page to fetch. Defaults to 1
31
- # @option arguments [Integer] :page_size The number of results per page
32
- # @option arguments [String] :query Use this to specify a particular endpoint, like analytics, search, curations and so on
33
- # @option arguments [String] :http_status_filter Filter based on a particular status code: 400, 401, 403, 429, 200
34
- # @option arguments [String] :http_method_filter Filter based on a particular HTTP method: GET, POST, PUT, PATCH, DELETE
35
- # @option arguments [String] :sort_direction Would you like to have your results ascending, oldest to newest, or descending, newest to oldest?
36
- # @option arguments [Hash] :body The request body
29
+ # @option arguments [Date] :from_date Filter date from (*Required*)
30
+ # @option arguments [Date] :to_date Filter date to (*Required*)
31
+ # @option arguments [Hash] :body
32
+ # @option body [String] :query You can search over the full_request_path of an API Log event. Use this to specify a particular endpoint, like analytics, search, curations and so on.
33
+ # @option body [String] :sort_direction Would you like to have your results ascending, oldest to newest, or descending, newest to oldest? Accepts asc or desc. Defaults to ascending.
34
+ # @option body [Integer] :page current for current page, total_pages for the net number of pages, total_results for the overall number of results, size for the amount of results per page.
35
+ # @option body :filters
36
+ # @option filters [String] :status Filter based on a particular status code: 400, 401, 403, 429, 200
37
+ # @option filters [String] :method Filter based on a particular HTTP method: GET, POST, PUT, PATCH, DELETE
37
38
  # @option arguments [Hash] :headers optional HTTP headers to send with the request
38
39
  #
39
40
  # @see https://www.elastic.co/guide/en/app-search/current/api-logs.html
40
41
  #
41
42
  def api_logs(engine_name, arguments = {})
43
+ raise ArgumentError, "Required parameter 'engine_name' missing" unless engine_name
42
44
  raise ArgumentError, "Required parameter 'from_date' missing" unless arguments[:from_date]
43
45
  raise ArgumentError, "Required parameter 'to_date' missing" unless arguments[:to_date]
44
- raise ArgumentError, "Required parameter 'engine_name' missing" unless engine_name
45
46
 
46
47
  body = arguments.delete(:body) || {}
47
48
  headers = arguments.delete(:headers) || {}
@@ -49,7 +50,7 @@ module Elastic
49
50
  arguments['filters[date][to]'] = date_to_rfc3339(arguments.delete(:to_date))
50
51
 
51
52
  request(
52
- :get,
53
+ :post,
53
54
  "api/as/v1/engines/#{engine_name}/logs/api/",
54
55
  arguments,
55
56
  body,
@@ -21,13 +21,14 @@ module Elastic
21
21
  module EnterpriseSearch
22
22
  module AppSearch
23
23
  module Actions
24
- # Analytics - Returns the number of clicks and total number of queries over a period
24
+ # Analytics - Query for analytics counts data
25
+ # Returns the number of clicks and total number of queries over a period
25
26
  #
26
- # @param engine_name [String] (*Required*)
27
+ # @param engine_name [String] Name of the engine (*Required*)
27
28
  # @param arguments [Hash] endpoint arguments
28
- # @option arguments [Array] :filters Analytics filters
29
- # @option arguments [String] :interval You can define an interval along with your date range. Can be either hour or day
30
- # @option arguments [Hash] :body The request body
29
+ # @option arguments [Hash] :body
30
+ # @option body :filters Analytics filters
31
+ # @option body [String] :interval You can define an interval along with your date range. Can be either hour or day
31
32
  # @option arguments [Hash] :headers optional HTTP headers to send with the request
32
33
  #
33
34
  # @see https://www.elastic.co/guide/en/app-search/current/counts.html
@@ -39,7 +40,7 @@ module Elastic
39
40
  headers = arguments.delete(:headers) || {}
40
41
 
41
42
  request(
42
- :get,
43
+ :post,
43
44
  "api/as/v1/engines/#{engine_name}/analytics/counts/",
44
45
  arguments,
45
46
  body,
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Licensed to Elasticsearch B.V. under one or more contributor
4
+ # license agreements. See the NOTICE file distributed with
5
+ # this work for additional information regarding copyright
6
+ # ownership. Elasticsearch B.V. licenses this file to you under
7
+ # the Apache License, Version 2.0 (the "License"); you may
8
+ # not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing,
14
+ # software distributed under the License is distributed on an
15
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ # KIND, either express or implied. See the License for the
17
+ # specific language governing permissions and limitations
18
+ # under the License.
19
+
20
+ module Elastic
21
+ module EnterpriseSearch
22
+ module AppSearch
23
+ module Actions
24
+ # Crawler - Get active crawl request details
25
+ # Returns active crawl request details.
26
+ #
27
+ # @param engine_name [String] Name of the engine (*Required*)
28
+ # @param arguments [Hash] endpoint arguments
29
+ # @option arguments [Hash] :body The request body
30
+ # @option arguments [Hash] :headers optional HTTP headers to send with the request
31
+ #
32
+ # @see https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-crawl-requests-active
33
+ #
34
+ def crawler_active_crawl_request(engine_name, arguments = {})
35
+ raise ArgumentError, "Required parameter 'engine_name' missing" unless engine_name
36
+
37
+ body = arguments.delete(:body) || {}
38
+ headers = arguments.delete(:headers) || {}
39
+
40
+ request(
41
+ :get,
42
+ "api/as/v0/engines/#{engine_name}/crawler/crawl_requests/active/",
43
+ arguments,
44
+ body,
45
+ headers
46
+ )
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Licensed to Elasticsearch B.V. under one or more contributor
4
+ # license agreements. See the NOTICE file distributed with
5
+ # this work for additional information regarding copyright
6
+ # ownership. Elasticsearch B.V. licenses this file to you under
7
+ # the Apache License, Version 2.0 (the "License"); you may
8
+ # not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing,
14
+ # software distributed under the License is distributed on an
15
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ # KIND, either express or implied. See the License for the
17
+ # specific language governing permissions and limitations
18
+ # under the License.
19
+
20
+ module Elastic
21
+ module EnterpriseSearch
22
+ module AppSearch
23
+ module Actions
24
+ # Crawler - Get crawl request details
25
+ # Returns crawl request details.
26
+ #
27
+ # @param engine_name [String] Name of the engine (*Required*)
28
+ # @param arguments [Hash] endpoint arguments
29
+ # @option arguments [String] :crawl_request_id Crawl Request ID (*Required*)
30
+ # @option arguments [Hash] :body The request body
31
+ # @option arguments [Hash] :headers optional HTTP headers to send with the request
32
+ #
33
+ # @see https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-crawl-requests-id
34
+ #
35
+ def crawler_crawl_request(engine_name, arguments = {})
36
+ raise ArgumentError, "Required parameter 'engine_name' missing" unless engine_name
37
+ raise ArgumentError, "Required parameter 'crawl_request_id' missing" unless arguments[:crawl_request_id]
38
+
39
+ crawl_request_id = arguments[:crawl_request_id]
40
+ body = arguments.delete(:body) || {}
41
+ headers = arguments.delete(:headers) || {}
42
+
43
+ request(
44
+ :get,
45
+ "api/as/v0/engines/#{engine_name}/crawler/crawl_requests/#{crawl_request_id}/",
46
+ arguments,
47
+ body,
48
+ headers
49
+ )
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Licensed to Elasticsearch B.V. under one or more contributor
4
+ # license agreements. See the NOTICE file distributed with
5
+ # this work for additional information regarding copyright
6
+ # ownership. Elasticsearch B.V. licenses this file to you under
7
+ # the Apache License, Version 2.0 (the "License"); you may
8
+ # not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing,
14
+ # software distributed under the License is distributed on an
15
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ # KIND, either express or implied. See the License for the
17
+ # specific language governing permissions and limitations
18
+ # under the License.
19
+
20
+ module Elastic
21
+ module EnterpriseSearch
22
+ module AppSearch
23
+ module Actions
24
+ # Crawler - Get crawl schedule
25
+ # Returns the current crawl schedule for a given engine
26
+ #
27
+ # @param engine_name [String] Name of the engine (*Required*)
28
+ # @param arguments [Hash] endpoint arguments
29
+ # @option arguments [Hash] :body The request body
30
+ # @option arguments [Hash] :headers optional HTTP headers to send with the request
31
+ #
32
+ # @see https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-crawl-schedule
33
+ #
34
+ def crawler_crawl_schedule(engine_name, arguments = {})
35
+ raise ArgumentError, "Required parameter 'engine_name' missing" unless engine_name
36
+
37
+ body = arguments.delete(:body) || {}
38
+ headers = arguments.delete(:headers) || {}
39
+
40
+ request(
41
+ :get,
42
+ "api/as/v0/engines/#{engine_name}/crawler/crawl_schedule/",
43
+ arguments,
44
+ body,
45
+ headers
46
+ )
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Licensed to Elasticsearch B.V. under one or more contributor
4
+ # license agreements. See the NOTICE file distributed with
5
+ # this work for additional information regarding copyright
6
+ # ownership. Elasticsearch B.V. licenses this file to you under
7
+ # the Apache License, Version 2.0 (the "License"); you may
8
+ # not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing,
14
+ # software distributed under the License is distributed on an
15
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ # KIND, either express or implied. See the License for the
17
+ # specific language governing permissions and limitations
18
+ # under the License.
19
+
20
+ module Elastic
21
+ module EnterpriseSearch
22
+ module AppSearch
23
+ module Actions
24
+ # Crawler - Get domain configuration
25
+ # Returns crawler domain configuration details
26
+ #
27
+ # @param engine_name [String] Name of the engine (*Required*)
28
+ # @param arguments [Hash] endpoint arguments
29
+ # @option arguments [String] :domain_id Crawler Domain ID (*Required*)
30
+ # @option arguments [Hash] :body The request body
31
+ # @option arguments [Hash] :headers optional HTTP headers to send with the request
32
+ #
33
+ # @see https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html#web-crawler-apis-get-crawler-domain
34
+ #
35
+ def crawler_domain(engine_name, arguments = {})
36
+ raise ArgumentError, "Required parameter 'engine_name' missing" unless engine_name
37
+ raise ArgumentError, "Required parameter 'domain_id' missing" unless arguments[:domain_id]
38
+
39
+ domain_id = arguments[:domain_id]
40
+ body = arguments.delete(:body) || {}
41
+ headers = arguments.delete(:headers) || {}
42
+
43
+ request(
44
+ :get,
45
+ "api/as/v0/engines/#{engine_name}/crawler/domains/#{domain_id}/",
46
+ arguments,
47
+ body,
48
+ headers
49
+ )
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Licensed to Elasticsearch B.V. under one or more contributor
4
+ # license agreements. See the NOTICE file distributed with
5
+ # this work for additional information regarding copyright
6
+ # ownership. Elasticsearch B.V. licenses this file to you under
7
+ # the Apache License, Version 2.0 (the "License"); you may
8
+ # not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing,
14
+ # software distributed under the License is distributed on an
15
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ # KIND, either express or implied. See the License for the
17
+ # specific language governing permissions and limitations
18
+ # under the License.
19
+
20
+ module Elastic
21
+ module EnterpriseSearch
22
+ module AppSearch
23
+ module Actions
24
+ # Crawler - Validate Domain with Crawler
25
+ # Performs a number of checks on a given domain name to make sure it is ready to be crawled and ingested into App Search.
26
+ #
27
+ # @param arguments [Hash] endpoint arguments
28
+ # @option arguments [String] :body
29
+ # @option arguments [Hash] :headers optional HTTP headers to send with the request
30
+ #
31
+ # @see https://www.elastic.co/guide/en/app-search/current/web-crawler-api-reference.html
32
+ #
33
+ def crawler_domain_validation_result(arguments = {})
34
+ body = arguments.delete(:body) || {}
35
+ headers = arguments.delete(:headers) || {}
36
+
37
+ request(
38
+ :post,
39
+ 'api/as/v0/crawler/validate_url/',
40
+ arguments,
41
+ body,
42
+ headers
43
+ )
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end