ghostcrawl 2.3.4

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 (333) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +218 -0
  4. data/_generated/ghostcrawl.rb +0 -0
  5. data/_generated/ghostcrawl_client.rb +27 -0
  6. data/_generated/models/agent_request.rb +203 -0
  7. data/_generated/models/agent_request_mode.rb +8 -0
  8. data/_generated/models/agent_request_task.rb +164 -0
  9. data/_generated/models/agent_request_task_steps.rb +122 -0
  10. data/_generated/models/agent_request_task_steps_schema.rb +64 -0
  11. data/_generated/models/agent_request_task_steps_type.rb +9 -0
  12. data/_generated/models/auth_context.rb +204 -0
  13. data/_generated/models/batch_scrape_request.rb +644 -0
  14. data/_generated/models/batch_scrape_request_behavior_actions_member1.rb +62 -0
  15. data/_generated/models/batch_scrape_request_behavior_actions_member2.rb +62 -0
  16. data/_generated/models/batch_scrape_request_engine.rb +10 -0
  17. data/_generated/models/batch_scrape_request_extraction_strategy_member1.rb +62 -0
  18. data/_generated/models/batch_scrape_request_identity_country_member1.rb +62 -0
  19. data/_generated/models/batch_scrape_request_language_member1.rb +62 -0
  20. data/_generated/models/batch_scrape_request_output_format.rb +9 -0
  21. data/_generated/models/batch_scrape_request_profile_member1.rb +62 -0
  22. data/_generated/models/cdp_frame_request.rb +103 -0
  23. data/_generated/models/cdp_url_request.rb +82 -0
  24. data/_generated/models/content_request.rb +581 -0
  25. data/_generated/models/content_request_engine.rb +12 -0
  26. data/_generated/models/content_request_format.rb +10 -0
  27. data/_generated/models/content_request_identity_country_member1.rb +62 -0
  28. data/_generated/models/content_request_identity_member1.rb +62 -0
  29. data/_generated/models/content_request_language_member1.rb +62 -0
  30. data/_generated/models/content_request_profile_member1.rb +62 -0
  31. data/_generated/models/content_request_proxy_member1.rb +62 -0
  32. data/_generated/models/cookie_dict.rb +739 -0
  33. data/_generated/models/cookie_dict_domain_member1.rb +62 -0
  34. data/_generated/models/cookie_dict_expires_member1.rb +62 -0
  35. data/_generated/models/cookie_dict_http_only_member1.rb +62 -0
  36. data/_generated/models/cookie_dict_path_member1.rb +62 -0
  37. data/_generated/models/cookie_dict_same_site_member1.rb +62 -0
  38. data/_generated/models/cookie_dict_secure_member1.rb +62 -0
  39. data/_generated/models/cookie_dict_url_member1.rb +62 -0
  40. data/_generated/models/cookies_delete_body.rb +355 -0
  41. data/_generated/models/cookies_delete_body_domain_member1.rb +62 -0
  42. data/_generated/models/cookies_delete_body_name_member1.rb +62 -0
  43. data/_generated/models/cookies_delete_body_path_member1.rb +62 -0
  44. data/_generated/models/cookies_set_body.rb +102 -0
  45. data/_generated/models/deep_crawl_body.rb +542 -0
  46. data/_generated/models/deep_crawl_body_routing_mode.rb +11 -0
  47. data/_generated/models/deep_crawl_body_timeout_s_member1.rb +62 -0
  48. data/_generated/models/deep_crawl_body_wait_until_member1.rb +62 -0
  49. data/_generated/models/deep_crawl_body_webhook_url_member1.rb +62 -0
  50. data/_generated/models/dom_snapshot_body.rb +82 -0
  51. data/_generated/models/download_body.rb +102 -0
  52. data/_generated/models/error_code.rb +31 -0
  53. data/_generated/models/error_envelope.rb +264 -0
  54. data/_generated/models/error_envelope_limits.rb +162 -0
  55. data/_generated/models/eval_body.rb +102 -0
  56. data/_generated/models/extend_body.rb +155 -0
  57. data/_generated/models/extend_body_ttl_seconds_member1.rb +62 -0
  58. data/_generated/models/extract_request.rb +631 -0
  59. data/_generated/models/extract_request_behavior_actions_member1.rb +62 -0
  60. data/_generated/models/extract_request_behavior_actions_member2.rb +62 -0
  61. data/_generated/models/extract_request_engine.rb +12 -0
  62. data/_generated/models/extract_request_identity_country_member1.rb +62 -0
  63. data/_generated/models/extract_request_language_member1.rb +62 -0
  64. data/_generated/models/extract_request_prompt_member1.rb +62 -0
  65. data/_generated/models/extract_request_url_member1.rb +62 -0
  66. data/_generated/models/extract_request_urls_member1.rb +62 -0
  67. data/_generated/models/filter_spec.rb +62 -0
  68. data/_generated/models/har_body.rb +82 -0
  69. data/_generated/models/map_body.rb +238 -0
  70. data/_generated/models/map_body_search_member1.rb +62 -0
  71. data/_generated/models/map_response.rb +195 -0
  72. data/_generated/models/map_response_truncated_to_server_max_member1.rb +62 -0
  73. data/_generated/models/models.rb +152 -0
  74. data/_generated/models/pdf_request.rb +560 -0
  75. data/_generated/models/pdf_request_engine.rb +12 -0
  76. data/_generated/models/pdf_request_identity_country_member1.rb +62 -0
  77. data/_generated/models/pdf_request_identity_member1.rb +62 -0
  78. data/_generated/models/pdf_request_language_member1.rb +62 -0
  79. data/_generated/models/pdf_request_profile_member1.rb +62 -0
  80. data/_generated/models/pdf_request_proxy_member1.rb +62 -0
  81. data/_generated/models/problem_details.rb +226 -0
  82. data/_generated/models/profile_create_request.rb +175 -0
  83. data/_generated/models/profile_create_request_storage_state_id_member1.rb +62 -0
  84. data/_generated/models/profile_update_request.rb +246 -0
  85. data/_generated/models/profile_update_request_name_member1.rb +62 -0
  86. data/_generated/models/profile_update_request_storage_state_id_member1.rb +62 -0
  87. data/_generated/models/proxy_config.rb +116 -0
  88. data/_generated/models/retry_delivery_response.rb +145 -0
  89. data/_generated/models/rotate_secret_response.rb +145 -0
  90. data/_generated/models/schedule_create_request.rb +256 -0
  91. data/_generated/models/schedule_create_request_job_params.rb +64 -0
  92. data/_generated/models/schedule_create_request_notify_webhook_member1.rb +62 -0
  93. data/_generated/models/scorer_spec.rb +102 -0
  94. data/_generated/models/scrape_page_result.rb +62 -0
  95. data/_generated/models/scrape_request.rb +1254 -0
  96. data/_generated/models/scrape_request_batch_identity_mode.rb +10 -0
  97. data/_generated/models/scrape_request_behavior_actions_member1.rb +62 -0
  98. data/_generated/models/scrape_request_behavior_actions_member2.rb +62 -0
  99. data/_generated/models/scrape_request_engine.rb +12 -0
  100. data/_generated/models/scrape_request_format.rb +11 -0
  101. data/_generated/models/scrape_request_identity_country_member1.rb +62 -0
  102. data/_generated/models/scrape_request_identity_member1.rb +62 -0
  103. data/_generated/models/scrape_request_language_member1.rb +62 -0
  104. data/_generated/models/scrape_request_profile_member1.rb +62 -0
  105. data/_generated/models/scrape_request_proxy_member1.rb +62 -0
  106. data/_generated/models/scrape_request_routing_mode.rb +11 -0
  107. data/_generated/models/scrape_request_screenshot_selector_member1.rb +62 -0
  108. data/_generated/models/scrape_request_session_member1.rb +62 -0
  109. data/_generated/models/scrape_request_timeout_ms_member1.rb +62 -0
  110. data/_generated/models/scrape_request_url_member1.rb +62 -0
  111. data/_generated/models/scrape_request_urls_member1.rb +62 -0
  112. data/_generated/models/scrape_result.rb +630 -0
  113. data/_generated/models/scrape_result_format_member1.rb +62 -0
  114. data/_generated/models/scrape_result_identity_id_member1.rb +62 -0
  115. data/_generated/models/scrape_result_markdown_member1.rb +62 -0
  116. data/_generated/models/scrape_result_status_member1.rb +62 -0
  117. data/_generated/models/scrape_result_token_estimate_member1.rb +62 -0
  118. data/_generated/models/scrape_result_warnings_member1.rb +62 -0
  119. data/_generated/models/screenshot_request.rb +672 -0
  120. data/_generated/models/screenshot_request_engine.rb +12 -0
  121. data/_generated/models/screenshot_request_identity_country_member1.rb +62 -0
  122. data/_generated/models/screenshot_request_identity_member1.rb +62 -0
  123. data/_generated/models/screenshot_request_language_member1.rb +62 -0
  124. data/_generated/models/screenshot_request_profile_member1.rb +62 -0
  125. data/_generated/models/screenshot_request_proxy_member1.rb +62 -0
  126. data/_generated/models/screenshot_request_screenshot_selector_member1.rb +62 -0
  127. data/_generated/models/scroll_body.rb +284 -0
  128. data/_generated/models/scroll_body_direction.rb +11 -0
  129. data/_generated/models/scroll_body_distance_px_member1.rb +62 -0
  130. data/_generated/models/scroll_body_selector_member1.rb +62 -0
  131. data/_generated/models/search_request.rb +469 -0
  132. data/_generated/models/search_request_country_member1.rb +62 -0
  133. data/_generated/models/search_request_engine_member1.rb +62 -0
  134. data/_generated/models/search_request_freshness_member1.rb +62 -0
  135. data/_generated/models/search_request_vertical_member1.rb +62 -0
  136. data/_generated/models/session_create_request.rb +174 -0
  137. data/_generated/models/session_create_request_engine.rb +10 -0
  138. data/_generated/models/session_create_request_profile_member1.rb +62 -0
  139. data/_generated/models/storage_state_attach_request.rb +58 -0
  140. data/_generated/models/storage_state_detach_request.rb +58 -0
  141. data/_generated/models/takeover_action_body.rb +82 -0
  142. data/_generated/models/upload_body.rb +162 -0
  143. data/_generated/models/wait_body.rb +194 -0
  144. data/_generated/models/wait_body_selector_member1.rb +62 -0
  145. data/_generated/models/webhook_create_request.rb +125 -0
  146. data/_generated/models/webhook_create_response.rb +104 -0
  147. data/_generated/models/webhook_delivery_list_response.rb +195 -0
  148. data/_generated/models/webhook_delivery_list_response_next_cursor_member1.rb +62 -0
  149. data/_generated/models/webhook_delivery_public.rb +680 -0
  150. data/_generated/models/webhook_delivery_public_delivered_at_member1.rb +62 -0
  151. data/_generated/models/webhook_delivery_public_error_class_member1.rb +62 -0
  152. data/_generated/models/webhook_delivery_public_replay_of_member1.rb +62 -0
  153. data/_generated/models/webhook_delivery_public_response_body_preview_member1.rb +62 -0
  154. data/_generated/models/webhook_delivery_public_response_status_member1.rb +62 -0
  155. data/_generated/models/webhook_list_response.rb +195 -0
  156. data/_generated/models/webhook_list_response_next_cursor_member1.rb +62 -0
  157. data/_generated/models/webhook_public.rb +316 -0
  158. data/_generated/models/webhook_public_secret_rotated_at_member1.rb +62 -0
  159. data/_generated/v1/agent/agent.rb +1 -0
  160. data/_generated/v1/agent/agent404_error.rb +87 -0
  161. data/_generated/v1/agent/agent_request_builder.rb +73 -0
  162. data/_generated/v1/binary/binary.rb +9 -0
  163. data/_generated/v1/cdp/cdp.rb +0 -0
  164. data/_generated/v1/cdp/cdp_request_builder.rb +37 -0
  165. data/_generated/v1/cdp/frame/frame.rb +0 -0
  166. data/_generated/v1/cdp/frame/frame_request_builder.rb +74 -0
  167. data/_generated/v1/cdp/url/url.rb +0 -0
  168. data/_generated/v1/cdp/url/url_request_builder.rb +74 -0
  169. data/_generated/v1/content/content.rb +0 -0
  170. data/_generated/v1/content/content_request_builder.rb +71 -0
  171. data/_generated/v1/crawl/crawl.rb +0 -0
  172. data/_generated/v1/crawl/crawl_request_builder.rb +31 -0
  173. data/_generated/v1/crawl/deep/deep.rb +0 -0
  174. data/_generated/v1/crawl/deep/deep_request_builder.rb +86 -0
  175. data/_generated/v1/crawl/deep/item/item.rb +0 -0
  176. data/_generated/v1/crawl/deep/item/with_run_item_request_builder.rb +71 -0
  177. data/_generated/v1/crawl_runs/crawl_runs.rb +1 -0
  178. data/_generated/v1/crawl_runs/crawl_runs_post_request_body.rb +65 -0
  179. data/_generated/v1/crawl_runs/crawl_runs_request_builder.rb +131 -0
  180. data/_generated/v1/crawl_runs/item/cancel/cancel.rb +0 -0
  181. data/_generated/v1/crawl_runs/item/cancel/cancel_request_builder.rb +71 -0
  182. data/_generated/v1/crawl_runs/item/item.rb +0 -0
  183. data/_generated/v1/crawl_runs/item/resume/resume.rb +0 -0
  184. data/_generated/v1/crawl_runs/item/resume/resume_request_builder.rb +71 -0
  185. data/_generated/v1/crawl_runs/item/with_run_item_request_builder.rb +96 -0
  186. data/_generated/v1/datasets/datasets.rb +1 -0
  187. data/_generated/v1/datasets/datasets_post_request_body.rb +65 -0
  188. data/_generated/v1/datasets/datasets_request_builder.rb +124 -0
  189. data/_generated/v1/datasets/item/item.rb +0 -0
  190. data/_generated/v1/datasets/item/rows/append/append.rb +1 -0
  191. data/_generated/v1/datasets/item/rows/append/append_post_request_body.rb +74 -0
  192. data/_generated/v1/datasets/item/rows/append/append_request_builder.rb +79 -0
  193. data/_generated/v1/datasets/item/rows/rows.rb +0 -0
  194. data/_generated/v1/datasets/item/rows/rows_request_builder.rb +86 -0
  195. data/_generated/v1/datasets/item/with_name_item_request_builder.rb +104 -0
  196. data/_generated/v1/downloads/downloads.rb +0 -0
  197. data/_generated/v1/downloads/downloads_request_builder.rb +76 -0
  198. data/_generated/v1/downloads/item/item.rb +0 -0
  199. data/_generated/v1/downloads/item/with_download_item_request_builder.rb +97 -0
  200. data/_generated/v1/extract/extract.rb +1 -0
  201. data/_generated/v1/extract/extract_post_response.rb +65 -0
  202. data/_generated/v1/extract/extract_request_builder.rb +78 -0
  203. data/_generated/v1/kv/item/item.rb +1 -0
  204. data/_generated/v1/kv/item/with_key_item_request_builder.rb +133 -0
  205. data/_generated/v1/kv/item/with_key_put_request_body.rb +68 -0
  206. data/_generated/v1/kv/kv.rb +0 -0
  207. data/_generated/v1/kv/kv_request_builder.rb +37 -0
  208. data/_generated/v1/map/map.rb +0 -0
  209. data/_generated/v1/map/map_request_builder.rb +72 -0
  210. data/_generated/v1/page/cookies/cookies.rb +0 -0
  211. data/_generated/v1/page/cookies/cookies_request_builder.rb +150 -0
  212. data/_generated/v1/page/dom_snapshot/dom_snapshot.rb +0 -0
  213. data/_generated/v1/page/dom_snapshot/dom_snapshot_request_builder.rb +74 -0
  214. data/_generated/v1/page/download/download.rb +0 -0
  215. data/_generated/v1/page/download/download_request_builder.rb +74 -0
  216. data/_generated/v1/page/eval/eval.rb +0 -0
  217. data/_generated/v1/page/eval/eval_request_builder.rb +74 -0
  218. data/_generated/v1/page/har/har.rb +0 -0
  219. data/_generated/v1/page/har/har_request_builder.rb +74 -0
  220. data/_generated/v1/page/page.rb +0 -0
  221. data/_generated/v1/page/page_request_builder.rb +73 -0
  222. data/_generated/v1/page/scroll/scroll.rb +0 -0
  223. data/_generated/v1/page/scroll/scroll_request_builder.rb +74 -0
  224. data/_generated/v1/page/upload/upload.rb +0 -0
  225. data/_generated/v1/page/upload/upload_request_builder.rb +74 -0
  226. data/_generated/v1/page/wait/wait.rb +0 -0
  227. data/_generated/v1/page/wait/wait_request_builder.rb +74 -0
  228. data/_generated/v1/pdf/pdf.rb +0 -0
  229. data/_generated/v1/pdf/pdf_request_builder.rb +71 -0
  230. data/_generated/v1/profiles/item/item.rb +0 -0
  231. data/_generated/v1/profiles/item/with_name_item_request_builder.rb +134 -0
  232. data/_generated/v1/profiles/profiles.rb +0 -0
  233. data/_generated/v1/profiles/profiles_request_builder.rb +125 -0
  234. data/_generated/v1/recordings/item/item.rb +0 -0
  235. data/_generated/v1/recordings/item/recording_item_request_builder.rb +102 -0
  236. data/_generated/v1/recordings/item/visual/frames/frames.rb +0 -0
  237. data/_generated/v1/recordings/item/visual/frames/frames_request_builder.rb +93 -0
  238. data/_generated/v1/recordings/item/visual/start/start.rb +0 -0
  239. data/_generated/v1/recordings/item/visual/start/start_request_builder.rb +80 -0
  240. data/_generated/v1/recordings/item/visual/stop/stop.rb +0 -0
  241. data/_generated/v1/recordings/item/visual/stop/stop_request_builder.rb +80 -0
  242. data/_generated/v1/recordings/item/visual/visual.rb +0 -0
  243. data/_generated/v1/recordings/item/visual/visual_request_builder.rb +95 -0
  244. data/_generated/v1/recordings/recordings.rb +0 -0
  245. data/_generated/v1/recordings/recordings_request_builder.rb +89 -0
  246. data/_generated/v1/schedules/item/item.rb +0 -0
  247. data/_generated/v1/schedules/item/runs/runs.rb +0 -0
  248. data/_generated/v1/schedules/item/runs/runs_request_builder.rb +71 -0
  249. data/_generated/v1/schedules/item/with_schedule_item_request_builder.rb +103 -0
  250. data/_generated/v1/schedules/schedules.rb +0 -0
  251. data/_generated/v1/schedules/schedules_request_builder.rb +113 -0
  252. data/_generated/v1/scrape/batch/batch.rb +0 -0
  253. data/_generated/v1/scrape/batch/batch_request_builder.rb +81 -0
  254. data/_generated/v1/scrape/scrape.rb +0 -0
  255. data/_generated/v1/scrape/scrape_request_builder.rb +86 -0
  256. data/_generated/v1/screenshot/screenshot.rb +0 -0
  257. data/_generated/v1/screenshot/screenshot_request_builder.rb +71 -0
  258. data/_generated/v1/screenshot_blobs/item/item.rb +0 -0
  259. data/_generated/v1/screenshot_blobs/item/with_ref_item_request_builder.rb +68 -0
  260. data/_generated/v1/screenshot_blobs/screenshot_blobs.rb +0 -0
  261. data/_generated/v1/screenshot_blobs/screenshot_blobs_request_builder.rb +37 -0
  262. data/_generated/v1/search/jobs/item/item.rb +0 -0
  263. data/_generated/v1/search/jobs/item/with_job_item_request_builder.rb +71 -0
  264. data/_generated/v1/search/jobs/jobs.rb +0 -0
  265. data/_generated/v1/search/jobs/jobs_request_builder.rb +40 -0
  266. data/_generated/v1/search/search.rb +0 -0
  267. data/_generated/v1/search/search_request_builder.rb +84 -0
  268. data/_generated/v1/selfhost/byo/behavior/behavior.rb +1 -0
  269. data/_generated/v1/selfhost/byo/behavior/behavior_put_request_body.rb +71 -0
  270. data/_generated/v1/selfhost/byo/behavior/behavior_request_builder.rb +76 -0
  271. data/_generated/v1/selfhost/byo/byo.rb +0 -0
  272. data/_generated/v1/selfhost/byo/byo_request_builder.rb +46 -0
  273. data/_generated/v1/selfhost/byo/identity/identity.rb +1 -0
  274. data/_generated/v1/selfhost/byo/identity/identity_put_request_body.rb +71 -0
  275. data/_generated/v1/selfhost/byo/identity/identity_request_builder.rb +76 -0
  276. data/_generated/v1/selfhost/byo/proxy/proxy.rb +1 -0
  277. data/_generated/v1/selfhost/byo/proxy/proxy_put_request_body.rb +71 -0
  278. data/_generated/v1/selfhost/byo/proxy/proxy_request_builder.rb +76 -0
  279. data/_generated/v1/selfhost/selfhost.rb +0 -0
  280. data/_generated/v1/selfhost/selfhost_request_builder.rb +31 -0
  281. data/_generated/v1/sessions/create/create.rb +0 -0
  282. data/_generated/v1/sessions/create/create_request_builder.rb +74 -0
  283. data/_generated/v1/sessions/item/extend/extend.rb +0 -0
  284. data/_generated/v1/sessions/item/extend/extend_request_builder.rb +77 -0
  285. data/_generated/v1/sessions/item/item.rb +0 -0
  286. data/_generated/v1/sessions/item/pin/pin.rb +0 -0
  287. data/_generated/v1/sessions/item/pin/pin_request_builder.rb +71 -0
  288. data/_generated/v1/sessions/item/profile_item_request_builder.rb +70 -0
  289. data/_generated/v1/sessions/item/recording/recording.rb +0 -0
  290. data/_generated/v1/sessions/item/recording/recording_request_builder.rb +43 -0
  291. data/_generated/v1/sessions/item/recording/start/start.rb +0 -0
  292. data/_generated/v1/sessions/item/recording/start/start_request_builder.rb +74 -0
  293. data/_generated/v1/sessions/item/recording/stop/stop.rb +0 -0
  294. data/_generated/v1/sessions/item/recording/stop/stop_request_builder.rb +74 -0
  295. data/_generated/v1/sessions/item/release/release.rb +0 -0
  296. data/_generated/v1/sessions/item/release/release_request_builder.rb +71 -0
  297. data/_generated/v1/sessions/item/takeover/takeover.rb +0 -0
  298. data/_generated/v1/sessions/item/takeover/takeover_request_builder.rb +77 -0
  299. data/_generated/v1/sessions/item/takeover_release/takeover_release.rb +0 -0
  300. data/_generated/v1/sessions/item/takeover_release/takeover_release_request_builder.rb +71 -0
  301. data/_generated/v1/sessions/item/takeover_token/takeover_token.rb +0 -0
  302. data/_generated/v1/sessions/item/takeover_token/takeover_token_request_builder.rb +71 -0
  303. data/_generated/v1/sessions/sessions.rb +0 -0
  304. data/_generated/v1/sessions/sessions_request_builder.rb +95 -0
  305. data/_generated/v1/storage_states/detach/detach.rb +0 -0
  306. data/_generated/v1/storage_states/detach/detach_request_builder.rb +74 -0
  307. data/_generated/v1/storage_states/item/attach/attach.rb +0 -0
  308. data/_generated/v1/storage_states/item/attach/attach_request_builder.rb +77 -0
  309. data/_generated/v1/storage_states/item/item.rb +0 -0
  310. data/_generated/v1/storage_states/item/with_id_or_name_item_request_builder.rb +104 -0
  311. data/_generated/v1/storage_states/storage_states.rb +1 -0
  312. data/_generated/v1/storage_states/storage_states_post_request_body.rb +65 -0
  313. data/_generated/v1/storage_states/storage_states_request_builder.rb +127 -0
  314. data/_generated/v1/v1.rb +0 -0
  315. data/_generated/v1/v1_request_builder.rb +161 -0
  316. data/_generated/v1/webhooks/item/deliveries/deliveries.rb +0 -0
  317. data/_generated/v1/webhooks/item/deliveries/deliveries_request_builder.rb +96 -0
  318. data/_generated/v1/webhooks/item/deliveries/item/item.rb +0 -0
  319. data/_generated/v1/webhooks/item/deliveries/item/retry_escaped/retry_escaped.rb +0 -0
  320. data/_generated/v1/webhooks/item/deliveries/item/retry_escaped/retry_request_builder.rb +78 -0
  321. data/_generated/v1/webhooks/item/deliveries/item/with_delivery_item_request_builder.rb +40 -0
  322. data/_generated/v1/webhooks/item/item.rb +0 -0
  323. data/_generated/v1/webhooks/item/rotate_secret/rotate_secret.rb +0 -0
  324. data/_generated/v1/webhooks/item/rotate_secret/rotate_secret_request_builder.rb +72 -0
  325. data/_generated/v1/webhooks/item/with_webhook_item_request_builder.rb +111 -0
  326. data/_generated/v1/webhooks/webhooks.rb +0 -0
  327. data/_generated/v1/webhooks/webhooks_request_builder.rb +127 -0
  328. data/lib/ghostcrawl/client.rb +1351 -0
  329. data/lib/ghostcrawl/error_codes.rb +111 -0
  330. data/lib/ghostcrawl/errors.rb +137 -0
  331. data/lib/ghostcrawl/version.rb +5 -0
  332. data/lib/ghostcrawl.rb +17 -0
  333. metadata +422 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: e50d69d157331b61abadd2c88956ed9944a981c4cf33d2dcc5cbec5f771b00f9
4
+ data.tar.gz: de3c4e08089c1a7b4dcc623ef196163cb4cede19be5690d0ac3daaa243a96a8d
5
+ SHA512:
6
+ metadata.gz: 7354be27df2e4eb86457c477a09059e2f8d2445355f1646437517a697df7de9f7de9439b85fe77601135724f88e3dd0189214f3f507250f153860d3cd0c86dfd
7
+ data.tar.gz: 32daf0d816b38242ce52f211c48295d3ea2af66665fafa79ed1e51352cb4ea5f9cbdf8a354716bad59fb3baa889b31781c700ca50ef2c767e2b5c8534dfbfb80
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 GhostCrawl, LLC
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,218 @@
1
+ # ghostcrawl — Ruby SDK
2
+
3
+ The official Ruby client for the [GhostCrawl](https://ghostcrawl.io) API.
4
+ Collect web data at scale — scrape, crawl, search, and extract structured data.
5
+
6
+ ## Install
7
+
8
+ ```bash
9
+ gem install ghostcrawl
10
+ ```
11
+
12
+ Or in your `Gemfile`:
13
+
14
+ ```ruby
15
+ gem "ghostcrawl", "~> 2.1"
16
+ ```
17
+
18
+ Requires Ruby 3.0+. No runtime dependencies — uses stdlib `net/http` only.
19
+
20
+ ## Quickstart
21
+
22
+ ```ruby
23
+ require "ghostcrawl"
24
+
25
+ # Token from constructor or GHOSTCRAWL_API_KEY env var
26
+ client = GhostCrawl::Client.new(token: "gck_live_YOUR_KEY")
27
+
28
+ # Scrape a URL
29
+ result = client.scrape(url: "https://example.com", format: "markdown")
30
+ puts result["content"]
31
+
32
+ # Start a crawl run and wait for it to finish — the server blocks until the run
33
+ # is terminal (no client-side poll-with-sleep loop).
34
+ run = client.crawl_runs.start(url: "https://example.com", max_depth: 2, max_pages: 50,
35
+ wait: true, timeout: 300)
36
+ puts "#{run["run_id"]} → #{run["status"]}"
37
+
38
+ # Web search
39
+ results = client.search(query: "latest AI research", engine: "google", limit: 10)
40
+ puts results["results"].length
41
+ ```
42
+
43
+ ## Authentication
44
+
45
+ ```ruby
46
+ # Option 1: pass token directly
47
+ client = GhostCrawl::Client.new(token: "gck_live_YOUR_KEY")
48
+
49
+ # Option 2: set environment variable (recommended for production)
50
+ # export GHOSTCRAWL_API_KEY=gck_live_YOUR_KEY
51
+ client = GhostCrawl::Client.new
52
+ ```
53
+
54
+ Every request sends `Authorization: Bearer <token>`. This is the only auth scheme the API accepts.
55
+
56
+ ## Extract structured data
57
+
58
+ ```ruby
59
+ require "ghostcrawl"
60
+
61
+ client = GhostCrawl::Client.new(token: "gck_live_YOUR_KEY")
62
+
63
+ data = client.extract(
64
+ url: "https://example.com/product",
65
+ schema: {
66
+ type: "object",
67
+ properties: {
68
+ name: { type: "string" },
69
+ price: { type: "number" },
70
+ description: { type: "string" }
71
+ }
72
+ }
73
+ )
74
+ puts "#{data["name"]} — $#{data["price"]}"
75
+ ```
76
+
77
+ ## Browser utilities — content, screenshot, PDF
78
+
79
+ ```ruby
80
+ require "ghostcrawl"
81
+
82
+ client = GhostCrawl::Client.new(token: "gck_live_YOUR_KEY")
83
+
84
+ # Rendered content as a JSON envelope: {url, status, format, status_code, content, bytes}
85
+ page = client.content(url: "https://example.com")
86
+ puts "#{page["status_code"]} — #{page["bytes"]} bytes"
87
+
88
+ # Screenshot — returns raw PNG bytes
89
+ png = client.screenshot(url: "https://example.com", full_page: true)
90
+ File.binwrite("page.png", png)
91
+
92
+ # PDF — returns raw application/pdf bytes (Chrome-only; a Firefox/WebKit identity
93
+ # is rejected with a 400 pdf_engine_unsupported)
94
+ pdf = client.pdf(url: "https://example.com", paper_format: "a4")
95
+ File.binwrite("page.pdf", pdf)
96
+ ```
97
+
98
+ ## Agent (BYO model, account-gated)
99
+
100
+ The agent lane runs a natural-language browser task. It is **bring-your-own-model** (supply your
101
+ own `provider_config` in the request body) and **account-gated**: the API returns `404 not_found`
102
+ unless the capability is enabled for your account. `agent` does **not** raise on that 404 — it
103
+ returns the `problem+json` body as a Hash, so branch on `result.key?("detail")`.
104
+
105
+ ```ruby
106
+ require "ghostcrawl"
107
+
108
+ client = GhostCrawl::Client.new(token: "gck_live_YOUR_KEY")
109
+
110
+ # provider_config is BYO — reference your provider key by env-var name, never a literal.
111
+ result = client.agent(
112
+ task: {
113
+ "instruction" => "click the 'Books to Scrape' link",
114
+ "start_url" => "https://books.toscrape.com"
115
+ },
116
+ provider_config: {
117
+ "provider" => "openai",
118
+ "api_key" => "OPENAI_API_KEY",
119
+ "model" => "gpt-4o"
120
+ }
121
+ )
122
+ if result.key?("detail")
123
+ puts "agent lane not enabled for this account (BYO/gated)"
124
+ else
125
+ puts result
126
+ end
127
+ ```
128
+
129
+ ## Crawl runs — wait for completion
130
+
131
+ Crawl runs are asynchronous. Instead of hand-writing a poll-with-sleep loop, use
132
+ the event-driven wait API: the **server** blocks until the run reaches a terminal
133
+ state (`completed` / `failed` / `cancelled`) and returns the finished run.
134
+
135
+ ```ruby
136
+ # Start and wait in one call — sends wait_until: "completed"
137
+ run = client.crawl_runs.start(
138
+ url: "https://example.com",
139
+ max_depth: 2,
140
+ max_pages: 50,
141
+ wait: true, # block until terminal (no client sleep loop)
142
+ timeout: 300 # give up after 300s, returning the still-running run
143
+ )
144
+ puts run["status"] # "completed" | "failed" | "cancelled"
145
+
146
+ # Or wait on a run you already started (e.g. from a webhook or another process):
147
+ run = client.crawl_runs.wait_for_completion(run_id, timeout: 300)
148
+
149
+ # Deep crawl supports the same wait: keyword:
150
+ run = client.crawl(url: "https://example.com", wait: true, timeout: 300)
151
+ ```
152
+
153
+ Under the hood `wait_for_completion` chains server-blocking
154
+ `GET /v1/crawl-runs/{run_id}?wait=true&timeout_s=N` requests until the run is
155
+ terminal or your `timeout` deadline — there is no `sleep` between checks. On
156
+ timeout the current non-terminal run is returned, so you can simply call
157
+ `wait_for_completion` again to keep waiting.
158
+
159
+ **Prefer webhooks for fire-and-forget crawls.** Register an endpoint with
160
+ `client.webhooks.create(url:, event_types: ["crawl.completed"])` and let GhostCrawl
161
+ POST the result to you instead of holding a connection open.
162
+
163
+ ## Error handling
164
+
165
+ ```ruby
166
+ require "ghostcrawl"
167
+
168
+ client = GhostCrawl::Client.new(token: "gck_live_YOUR_KEY")
169
+
170
+ begin
171
+ result = client.scrape(url: "https://example.com")
172
+ rescue GhostCrawl::AuthenticationError
173
+ puts "Invalid API key — check your token"
174
+ rescue GhostCrawl::PaymentRequiredError
175
+ puts "Usage limit reached — upgrade your plan"
176
+ rescue GhostCrawl::RateLimitError
177
+ puts "Rate limit reached — retry after a short delay"
178
+ rescue GhostCrawl::APIError => e
179
+ puts "Server error: #{e.status_code}"
180
+ rescue GhostCrawl::GhostCrawlError => e
181
+ puts "API error: #{e.message} (#{e.status_code})"
182
+ end
183
+ ```
184
+
185
+ ## Self-hosted
186
+
187
+ ```ruby
188
+ client = GhostCrawl::Client.new(
189
+ token: "gck_live_YOUR_KEY",
190
+ base_url: "http://localhost:8080"
191
+ )
192
+ ```
193
+
194
+ ## All resources
195
+
196
+ | Resource | Method / accessor | Key operations |
197
+ |----------|------------------|----------------|
198
+ | Scraping | `client.scrape(url:)` | Render and return page content |
199
+ | Web search | `client.search(query:)` | Search Google, Bing, DuckDuckGo |
200
+ | Data extraction | `client.extract(url:, schema:)` | Structured JSON from any page |
201
+ | Deep crawl | `client.crawl(url:)` | Crawl a site depth-first |
202
+ | URL map | `client.map(url:)` | Discover all reachable URLs |
203
+ | Content | `client.content(url:)` | Rendered content JSON envelope |
204
+ | Screenshot | `client.screenshot(url:)` | Capture a URL to PNG bytes |
205
+ | PDF | `client.pdf(url:)` | Render a URL to PDF bytes (Chrome-only) |
206
+ | Agent (BYO) | `client.agent(task:)` | NL browser task — account-gated, BYO model |
207
+ | Crawl runs | `client.crawl_runs` | start (with `wait:`), wait\_for\_completion, list, get, cancel |
208
+ | Sessions | `client.sessions` | create, list, extend, release |
209
+ | Profiles | `client.profiles` | list, get\_profile, create, update, delete |
210
+ | Webhooks | `client.webhooks` | list, get\_webhook, create, delete, rotate\_secret |
211
+ | Schedules | `client.schedules` | list, get\_schedule, create, delete |
212
+ | Datasets | `client.datasets` | list, get\_dataset, create, delete, rows, append |
213
+ | Recordings | `client.recordings` | list, get\_recording, delete |
214
+ | Key-Value Store | `client.kv` | get, set, delete |
215
+
216
+ ## License
217
+
218
+ Proprietary — GhostCrawl Software License. See [LICENSE](LICENSE).
File without changes
@@ -0,0 +1,27 @@
1
+ require 'microsoft_kiota_abstractions'
2
+ require 'microsoft_kiota_serialization_json'
3
+ require_relative './ghostcrawl'
4
+ require_relative './v1/v1_request_builder'
5
+
6
+ module GhostCrawl
7
+ ##
8
+ # The main entry point of the SDK, exposes the configuration and the fluent API.
9
+ class GhostCrawlClient < MicrosoftKiotaAbstractions::BaseRequestBuilder
10
+
11
+ ##
12
+ # The v1 property
13
+ def v1()
14
+ return GhostCrawl::V1::V1RequestBuilder.new(@path_parameters, @request_adapter)
15
+ end
16
+ ##
17
+ ## Instantiates a new GhostCrawlClient and sets the default values.
18
+ ## @param request_adapter The request adapter to use to execute the requests.
19
+ ## @return a void
20
+ ##
21
+ def initialize(request_adapter)
22
+ super(Hash.new, request_adapter, "{+baseurl}")
23
+ MicrosoftKiotaAbstractions::ApiClientBuilder.register_default_serializer(MicrosoftKiotaSerializationJson::JsonSerializationWriterFactory)
24
+ MicrosoftKiotaAbstractions::ApiClientBuilder.register_default_deserializer(MicrosoftKiotaSerializationJson::JsonParseNodeFactory)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,203 @@
1
+ require 'microsoft_kiota_abstractions'
2
+ require_relative '../ghostcrawl'
3
+ require_relative './models'
4
+
5
+ module GhostCrawl
6
+ module Models
7
+ class AgentRequest
8
+ include MicrosoftKiotaAbstractions::Parsable
9
+ ##
10
+ # The api_key property
11
+ @api_key
12
+ ##
13
+ # The callback_url property
14
+ @callback_url
15
+ ##
16
+ # The mode property
17
+ @mode
18
+ ##
19
+ # Optional stable profile identifier. When supplied on a successful sync `/v1/agent` call, the executed step trace is recorded into the in-process action cache (keyed by `(profile_id, task)`) and can be replayed via `POST /v1/agent/action-cache/replay`. Response payload includes `action_cache_recorded: true|false` so callers can confirm cache durability.
20
+ @profile_id
21
+ ##
22
+ # The proxy property
23
+ @proxy
24
+ ##
25
+ # Agent task payload; URL fields are policy-validated when present.
26
+ @task
27
+ ##
28
+ # The tenant_id property
29
+ @tenant_id
30
+ ##
31
+ # The workspace_id property
32
+ @workspace_id
33
+ ##
34
+ ## Gets the api_key property value. The api_key property
35
+ ## @return a string
36
+ ##
37
+ def api_key
38
+ return @api_key
39
+ end
40
+ ##
41
+ ## Sets the api_key property value. The api_key property
42
+ ## @param value Value to set for the api_key property.
43
+ ## @return a void
44
+ ##
45
+ def api_key=(value)
46
+ @api_key = value
47
+ end
48
+ ##
49
+ ## Gets the callback_url property value. The callback_url property
50
+ ## @return a string
51
+ ##
52
+ def callback_url
53
+ return @callback_url
54
+ end
55
+ ##
56
+ ## Sets the callback_url property value. The callback_url property
57
+ ## @param value Value to set for the callback_url property.
58
+ ## @return a void
59
+ ##
60
+ def callback_url=(value)
61
+ @callback_url = value
62
+ end
63
+ ##
64
+ ## Instantiates a new AgentRequest and sets the default values.
65
+ ## @return a void
66
+ ##
67
+ def initialize()
68
+ @mode = GhostCrawl::Models::AgentRequestMode[:Sync]
69
+ end
70
+ ##
71
+ ## Creates a new instance of the appropriate class based on discriminator value
72
+ ## @param parse_node The parse node to use to read the discriminator value and create the object
73
+ ## @return a agent_request
74
+ ##
75
+ def self.create_from_discriminator_value(parse_node)
76
+ raise StandardError, 'parse_node cannot be null' if parse_node.nil?
77
+ return AgentRequest.new
78
+ end
79
+ ##
80
+ ## The deserialization information for the current model
81
+ ## @return a i_dictionary
82
+ ##
83
+ def get_field_deserializers()
84
+ return {
85
+ "api_key" => lambda {|n| @api_key = n.get_string_value() },
86
+ "callback_url" => lambda {|n| @callback_url = n.get_string_value() },
87
+ "mode" => lambda {|n| @mode = n.get_enum_value(GhostCrawl::Models::AgentRequestMode) },
88
+ "profile_id" => lambda {|n| @profile_id = n.get_string_value() },
89
+ "proxy" => lambda {|n| @proxy = n.get_object_value(lambda {|pn| GhostCrawl::Models::ProxyConfig.create_from_discriminator_value(pn) }) },
90
+ "task" => lambda {|n| @task = n.get_object_value(lambda {|pn| GhostCrawl::Models::AgentRequestTask.create_from_discriminator_value(pn) }) },
91
+ "tenant_id" => lambda {|n| @tenant_id = n.get_string_value() },
92
+ "workspace_id" => lambda {|n| @workspace_id = n.get_string_value() },
93
+ }
94
+ end
95
+ ##
96
+ ## Gets the mode property value. The mode property
97
+ ## @return a agent_request_mode
98
+ ##
99
+ def mode
100
+ return @mode
101
+ end
102
+ ##
103
+ ## Sets the mode property value. The mode property
104
+ ## @param value Value to set for the mode property.
105
+ ## @return a void
106
+ ##
107
+ def mode=(value)
108
+ @mode = value
109
+ end
110
+ ##
111
+ ## Gets the profile_id property value. Optional stable profile identifier. When supplied on a successful sync `/v1/agent` call, the executed step trace is recorded into the in-process action cache (keyed by `(profile_id, task)`) and can be replayed via `POST /v1/agent/action-cache/replay`. Response payload includes `action_cache_recorded: true|false` so callers can confirm cache durability.
112
+ ## @return a string
113
+ ##
114
+ def profile_id
115
+ return @profile_id
116
+ end
117
+ ##
118
+ ## Sets the profile_id property value. Optional stable profile identifier. When supplied on a successful sync `/v1/agent` call, the executed step trace is recorded into the in-process action cache (keyed by `(profile_id, task)`) and can be replayed via `POST /v1/agent/action-cache/replay`. Response payload includes `action_cache_recorded: true|false` so callers can confirm cache durability.
119
+ ## @param value Value to set for the profile_id property.
120
+ ## @return a void
121
+ ##
122
+ def profile_id=(value)
123
+ @profile_id = value
124
+ end
125
+ ##
126
+ ## Gets the proxy property value. The proxy property
127
+ ## @return a proxy_config
128
+ ##
129
+ def proxy
130
+ return @proxy
131
+ end
132
+ ##
133
+ ## Sets the proxy property value. The proxy property
134
+ ## @param value Value to set for the proxy property.
135
+ ## @return a void
136
+ ##
137
+ def proxy=(value)
138
+ @proxy = value
139
+ end
140
+ ##
141
+ ## Serializes information the current object
142
+ ## @param writer Serialization writer to use to serialize this model
143
+ ## @return a void
144
+ ##
145
+ def serialize(writer)
146
+ raise StandardError, 'writer cannot be null' if writer.nil?
147
+ writer.write_string_value("api_key", @api_key)
148
+ writer.write_string_value("callback_url", @callback_url)
149
+ writer.write_enum_value("mode", @mode)
150
+ writer.write_string_value("profile_id", @profile_id)
151
+ writer.write_object_value("proxy", @proxy)
152
+ writer.write_object_value("task", @task)
153
+ writer.write_string_value("tenant_id", @tenant_id)
154
+ writer.write_string_value("workspace_id", @workspace_id)
155
+ end
156
+ ##
157
+ ## Gets the task property value. Agent task payload; URL fields are policy-validated when present.
158
+ ## @return a agent_request_task
159
+ ##
160
+ def task
161
+ return @task
162
+ end
163
+ ##
164
+ ## Sets the task property value. Agent task payload; URL fields are policy-validated when present.
165
+ ## @param value Value to set for the task property.
166
+ ## @return a void
167
+ ##
168
+ def task=(value)
169
+ @task = value
170
+ end
171
+ ##
172
+ ## Gets the tenant_id property value. The tenant_id property
173
+ ## @return a string
174
+ ##
175
+ def tenant_id
176
+ return @tenant_id
177
+ end
178
+ ##
179
+ ## Sets the tenant_id property value. The tenant_id property
180
+ ## @param value Value to set for the tenant_id property.
181
+ ## @return a void
182
+ ##
183
+ def tenant_id=(value)
184
+ @tenant_id = value
185
+ end
186
+ ##
187
+ ## Gets the workspace_id property value. The workspace_id property
188
+ ## @return a string
189
+ ##
190
+ def workspace_id
191
+ return @workspace_id
192
+ end
193
+ ##
194
+ ## Sets the workspace_id property value. The workspace_id property
195
+ ## @param value Value to set for the workspace_id property.
196
+ ## @return a void
197
+ ##
198
+ def workspace_id=(value)
199
+ @workspace_id = value
200
+ end
201
+ end
202
+ end
203
+ end
@@ -0,0 +1,8 @@
1
+ module GhostCrawl
2
+ module Models
3
+ AgentRequestMode = {
4
+ Sync: :Sync,
5
+ Async: :Async,
6
+ }
7
+ end
8
+ end
@@ -0,0 +1,164 @@
1
+ require 'microsoft_kiota_abstractions'
2
+ require_relative '../ghostcrawl'
3
+ require_relative './models'
4
+
5
+ module GhostCrawl
6
+ module Models
7
+ ##
8
+ # Agent task payload; URL fields are policy-validated when present.
9
+ class AgentRequestTask
10
+ include MicrosoftKiotaAbstractions::AdditionalDataHolder, MicrosoftKiotaAbstractions::Parsable
11
+ ##
12
+ # Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
13
+ @additional_data
14
+ ##
15
+ # The goal property
16
+ @goal
17
+ ##
18
+ # The start_url property
19
+ @start_url
20
+ ##
21
+ # Typed agent-step baseline contract (observe/act/extract).
22
+ @steps
23
+ ##
24
+ # The target_url property
25
+ @target_url
26
+ ##
27
+ # The url property
28
+ @url
29
+ ##
30
+ ## Gets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
31
+ ## @return a i_dictionary
32
+ ##
33
+ def additional_data
34
+ return @additional_data
35
+ end
36
+ ##
37
+ ## Sets the AdditionalData property value. Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
38
+ ## @param value Value to set for the AdditionalData property.
39
+ ## @return a void
40
+ ##
41
+ def additional_data=(value)
42
+ @additional_data = value
43
+ end
44
+ ##
45
+ ## Instantiates a new AgentRequestTask and sets the default values.
46
+ ## @return a void
47
+ ##
48
+ def initialize()
49
+ @additional_data = Hash.new
50
+ end
51
+ ##
52
+ ## Creates a new instance of the appropriate class based on discriminator value
53
+ ## @param parse_node The parse node to use to read the discriminator value and create the object
54
+ ## @return a agent_request_task
55
+ ##
56
+ def self.create_from_discriminator_value(parse_node)
57
+ raise StandardError, 'parse_node cannot be null' if parse_node.nil?
58
+ return AgentRequestTask.new
59
+ end
60
+ ##
61
+ ## The deserialization information for the current model
62
+ ## @return a i_dictionary
63
+ ##
64
+ def get_field_deserializers()
65
+ return {
66
+ "goal" => lambda {|n| @goal = n.get_string_value() },
67
+ "start_url" => lambda {|n| @start_url = n.get_string_value() },
68
+ "steps" => lambda {|n| @steps = n.get_collection_of_object_values(lambda {|pn| GhostCrawl::Models::AgentRequestTaskSteps.create_from_discriminator_value(pn) }) },
69
+ "target_url" => lambda {|n| @target_url = n.get_string_value() },
70
+ "url" => lambda {|n| @url = n.get_string_value() },
71
+ }
72
+ end
73
+ ##
74
+ ## Gets the goal property value. The goal property
75
+ ## @return a string
76
+ ##
77
+ def goal
78
+ return @goal
79
+ end
80
+ ##
81
+ ## Sets the goal property value. The goal property
82
+ ## @param value Value to set for the goal property.
83
+ ## @return a void
84
+ ##
85
+ def goal=(value)
86
+ @goal = value
87
+ end
88
+ ##
89
+ ## Serializes information the current object
90
+ ## @param writer Serialization writer to use to serialize this model
91
+ ## @return a void
92
+ ##
93
+ def serialize(writer)
94
+ raise StandardError, 'writer cannot be null' if writer.nil?
95
+ writer.write_string_value("goal", @goal)
96
+ writer.write_string_value("start_url", @start_url)
97
+ writer.write_collection_of_object_values("steps", @steps)
98
+ writer.write_string_value("target_url", @target_url)
99
+ writer.write_string_value("url", @url)
100
+ writer.write_additional_data(@additional_data)
101
+ end
102
+ ##
103
+ ## Gets the start_url property value. The start_url property
104
+ ## @return a string
105
+ ##
106
+ def start_url
107
+ return @start_url
108
+ end
109
+ ##
110
+ ## Sets the start_url property value. The start_url property
111
+ ## @param value Value to set for the start_url property.
112
+ ## @return a void
113
+ ##
114
+ def start_url=(value)
115
+ @start_url = value
116
+ end
117
+ ##
118
+ ## Gets the steps property value. Typed agent-step baseline contract (observe/act/extract).
119
+ ## @return a agent_request_task_steps
120
+ ##
121
+ def steps
122
+ return @steps
123
+ end
124
+ ##
125
+ ## Sets the steps property value. Typed agent-step baseline contract (observe/act/extract).
126
+ ## @param value Value to set for the steps property.
127
+ ## @return a void
128
+ ##
129
+ def steps=(value)
130
+ @steps = value
131
+ end
132
+ ##
133
+ ## Gets the target_url property value. The target_url property
134
+ ## @return a string
135
+ ##
136
+ def target_url
137
+ return @target_url
138
+ end
139
+ ##
140
+ ## Sets the target_url property value. The target_url property
141
+ ## @param value Value to set for the target_url property.
142
+ ## @return a void
143
+ ##
144
+ def target_url=(value)
145
+ @target_url = value
146
+ end
147
+ ##
148
+ ## Gets the url property value. The url property
149
+ ## @return a string
150
+ ##
151
+ def url
152
+ return @url
153
+ end
154
+ ##
155
+ ## Sets the url property value. The url property
156
+ ## @param value Value to set for the url property.
157
+ ## @return a void
158
+ ##
159
+ def url=(value)
160
+ @url = value
161
+ end
162
+ end
163
+ end
164
+ end