ghostcrawl 2.1.2__tar.gz → 2.2.0__tar.gz
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.
- ghostcrawl-2.2.0/LICENSE +46 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/MANIFEST.in +0 -1
- ghostcrawl-2.2.0/PKG-INFO +195 -0
- ghostcrawl-2.2.0/README.md +160 -0
- ghostcrawl-2.2.0/_generated/ghostcrawl_client.py +50 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out.py +123 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_actor_ip.py +62 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_actor_ip_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_actor_token_id.py +62 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_actor_token_id_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_actor_user_agent.py +62 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_actor_user_agent_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_actor_user_id.py +62 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_actor_user_id_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_metadata.py +43 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_org_id.py +62 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_org_id_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_target_id.py +62 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_target_id_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_target_kind.py +62 -0
- ghostcrawl-2.2.0/_generated/models/audit_event_out_target_kind_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/audit_events_response.py +61 -0
- ghostcrawl-2.2.0/_generated/models/audit_events_response_next_cursor.py +62 -0
- ghostcrawl-2.2.0/_generated/models/audit_events_response_next_cursor_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request.py +110 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request_behavior_actions.py +64 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request_behavior_actions_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request_behavior_actions_member2.py +43 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request_extraction_strategy.py +62 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request_extraction_strategy_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request_identity_country.py +62 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request_identity_country_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request_language.py +62 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request_language_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request_output_format.py +7 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request_profile.py +62 -0
- ghostcrawl-2.2.0/_generated/models/batch_scrape_request_profile_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/cdp_frame_request.py +51 -0
- ghostcrawl-2.2.0/_generated/models/cdp_url_request.py +47 -0
- ghostcrawl-2.2.0/_generated/models/checkout_request.py +55 -0
- ghostcrawl-2.2.0/_generated/models/contact_request.py +59 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict.py +104 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_domain.py +62 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_domain_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_expires.py +62 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_expires_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_http_only.py +62 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_http_only_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_path.py +62 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_path_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_same_site.py +62 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_same_site_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_secure.py +62 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_secure_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_url.py +62 -0
- ghostcrawl-2.2.0/_generated/models/cookie_dict_url_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/cookies_delete_body.py +72 -0
- ghostcrawl-2.2.0/_generated/models/cookies_delete_body_domain.py +62 -0
- ghostcrawl-2.2.0/_generated/models/cookies_delete_body_domain_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/cookies_delete_body_name.py +62 -0
- ghostcrawl-2.2.0/_generated/models/cookies_delete_body_name_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/cookies_delete_body_path.py +62 -0
- ghostcrawl-2.2.0/_generated/models/cookies_delete_body_path_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/cookies_set_body.py +58 -0
- ghostcrawl-2.2.0/_generated/models/deep_crawl_body.py +96 -0
- ghostcrawl-2.2.0/_generated/models/deep_crawl_body_webhook_url.py +62 -0
- ghostcrawl-2.2.0/_generated/models/deep_crawl_body_webhook_url_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/dom_snapshot_body.py +47 -0
- ghostcrawl-2.2.0/_generated/models/download_body.py +51 -0
- ghostcrawl-2.2.0/_generated/models/error_code.py +27 -0
- ghostcrawl-2.2.0/_generated/models/eval_body.py +51 -0
- ghostcrawl-2.2.0/_generated/models/extend_body.py +57 -0
- ghostcrawl-2.2.0/_generated/models/extend_body_ttl_seconds.py +62 -0
- ghostcrawl-2.2.0/_generated/models/extend_body_ttl_seconds_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/extract_request.py +101 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_behavior_actions.py +64 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_behavior_actions_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_behavior_actions_member2.py +43 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_engine.py +8 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_identity_country.py +62 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_identity_country_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_language.py +62 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_language_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_prompt.py +62 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_prompt_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_url.py +62 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_url_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_urls.py +62 -0
- ghostcrawl-2.2.0/_generated/models/extract_request_urls_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/filter_spec.py +43 -0
- ghostcrawl-2.2.0/_generated/models/h_t_t_p_validation_error.py +61 -0
- ghostcrawl-2.2.0/_generated/models/har_body.py +47 -0
- ghostcrawl-2.2.0/_generated/models/identity_payload.py +62 -0
- ghostcrawl-2.2.0/_generated/models/identity_request.py +110 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_claim_browser.py +62 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_claim_browser_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_claim_os.py +62 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_claim_os_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_device_model.py +62 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_device_model_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_locale.py +62 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_locale_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_proxy.py +62 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_proxy_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_source.py +62 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_source_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_timezone.py +62 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_timezone_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_viewport.py +69 -0
- ghostcrawl-2.2.0/_generated/models/identity_request_viewport_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/identity_response.py +78 -0
- ghostcrawl-2.2.0/_generated/models/identity_response_expires_at.py +62 -0
- ghostcrawl-2.2.0/_generated/models/identity_response_expires_at_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/identity_response_identity_id.py +62 -0
- ghostcrawl-2.2.0/_generated/models/identity_response_identity_id_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/identity_response_workspace_id.py +62 -0
- ghostcrawl-2.2.0/_generated/models/identity_response_workspace_id_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/map_body.py +73 -0
- ghostcrawl-2.2.0/_generated/models/map_body_search.py +62 -0
- ghostcrawl-2.2.0/_generated/models/map_body_search_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/map_response.py +65 -0
- ghostcrawl-2.2.0/_generated/models/map_response_truncated_to_server_max.py +62 -0
- ghostcrawl-2.2.0/_generated/models/map_response_truncated_to_server_max_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/me_response.py +73 -0
- ghostcrawl-2.2.0/_generated/models/me_response_created_at.py +62 -0
- ghostcrawl-2.2.0/_generated/models/me_response_created_at_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/policy_upsert_request.py +84 -0
- ghostcrawl-2.2.0/_generated/models/policy_upsert_request_max_crawl_pages.py +62 -0
- ghostcrawl-2.2.0/_generated/models/policy_upsert_request_max_crawl_pages_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/policy_upsert_request_max_llm_calls.py +62 -0
- ghostcrawl-2.2.0/_generated/models/policy_upsert_request_max_llm_calls_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/policy_upsert_request_max_llm_tokens.py +62 -0
- ghostcrawl-2.2.0/_generated/models/policy_upsert_request_max_llm_tokens_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/problem_details.py +92 -0
- ghostcrawl-2.2.0/_generated/models/profile_create_request.py +61 -0
- ghostcrawl-2.2.0/_generated/models/profile_create_request_storage_state_id.py +62 -0
- ghostcrawl-2.2.0/_generated/models/profile_create_request_storage_state_id_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/profile_update_request.py +64 -0
- ghostcrawl-2.2.0/_generated/models/profile_update_request_name.py +62 -0
- ghostcrawl-2.2.0/_generated/models/profile_update_request_name_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/profile_update_request_storage_state_id.py +62 -0
- ghostcrawl-2.2.0/_generated/models/profile_update_request_storage_state_id_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/registry_token_request.py +47 -0
- ghostcrawl-2.2.0/_generated/models/retry_delivery_response.py +64 -0
- ghostcrawl-2.2.0/_generated/models/rotate_secret_response.py +64 -0
- ghostcrawl-2.2.0/_generated/models/schedule_create_request.py +80 -0
- ghostcrawl-2.2.0/_generated/models/schedule_create_request_job_params.py +46 -0
- ghostcrawl-2.2.0/_generated/models/schedule_create_request_notify_webhook.py +62 -0
- ghostcrawl-2.2.0/_generated/models/schedule_create_request_notify_webhook_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scorer_spec.py +51 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request.py +167 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_batch_identity_mode.py +6 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_behavior_actions.py +64 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_behavior_actions_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_behavior_actions_member2.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_engine.py +8 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_format.py +7 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_identity.py +62 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_identity_country.py +62 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_identity_country_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_identity_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_language.py +62 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_language_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_profile.py +62 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_profile_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_proxy.py +62 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_proxy_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_screenshot_selector.py +62 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_screenshot_selector_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_session.py +62 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_session_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_url.py +62 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_url_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_urls.py +62 -0
- ghostcrawl-2.2.0/_generated/models/scrape_request_urls_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scroll_body.py +72 -0
- ghostcrawl-2.2.0/_generated/models/scroll_body_direction.py +9 -0
- ghostcrawl-2.2.0/_generated/models/scroll_body_distance_px.py +62 -0
- ghostcrawl-2.2.0/_generated/models/scroll_body_distance_px_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/scroll_body_selector.py +62 -0
- ghostcrawl-2.2.0/_generated/models/scroll_body_selector_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/search_request.py +86 -0
- ghostcrawl-2.2.0/_generated/models/search_request_country.py +62 -0
- ghostcrawl-2.2.0/_generated/models/search_request_country_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/search_request_engine.py +62 -0
- ghostcrawl-2.2.0/_generated/models/search_request_engine_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/search_request_freshness.py +62 -0
- ghostcrawl-2.2.0/_generated/models/search_request_freshness_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/search_request_vertical.py +62 -0
- ghostcrawl-2.2.0/_generated/models/search_request_vertical_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/session_create_request.py +63 -0
- ghostcrawl-2.2.0/_generated/models/session_create_request_engine.py +8 -0
- ghostcrawl-2.2.0/_generated/models/session_create_request_profile.py +62 -0
- ghostcrawl-2.2.0/_generated/models/session_create_request_profile_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/storage_state_attach_request.py +46 -0
- ghostcrawl-2.2.0/_generated/models/storage_state_detach_request.py +46 -0
- ghostcrawl-2.2.0/_generated/models/takeover_action_body.py +50 -0
- ghostcrawl-2.2.0/_generated/models/team_response.py +59 -0
- ghostcrawl-2.2.0/_generated/models/tenant_context.py +68 -0
- ghostcrawl-2.2.0/_generated/models/upload_body.py +63 -0
- ghostcrawl-2.2.0/_generated/models/validation_error.py +66 -0
- ghostcrawl-2.2.0/_generated/models/validation_error_ctx.py +43 -0
- ghostcrawl-2.2.0/_generated/models/viewport_exact.py +54 -0
- ghostcrawl-2.2.0/_generated/models/wait_body.py +62 -0
- ghostcrawl-2.2.0/_generated/models/wait_body_selector.py +62 -0
- ghostcrawl-2.2.0/_generated/models/wait_body_selector_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/webhook_create_request.py +58 -0
- ghostcrawl-2.2.0/_generated/models/webhook_create_response.py +61 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_list_response.py +68 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_list_response_next_cursor.py +62 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_list_response_next_cursor_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_public.py +119 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_public_delivered_at.py +63 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_public_delivered_at_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_public_error_class.py +62 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_public_error_class_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_public_replay_of.py +63 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_public_replay_of_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_public_response_body_preview.py +62 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_public_response_body_preview_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_public_response_status.py +62 -0
- ghostcrawl-2.2.0/_generated/models/webhook_delivery_public_response_status_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/webhook_list_response.py +68 -0
- ghostcrawl-2.2.0/_generated/models/webhook_list_response_next_cursor.py +62 -0
- ghostcrawl-2.2.0/_generated/models/webhook_list_response_next_cursor_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/models/webhook_public.py +91 -0
- ghostcrawl-2.2.0/_generated/models/webhook_public_secret_rotated_at.py +63 -0
- ghostcrawl-2.2.0/_generated/models/webhook_public_secret_rotated_at_member1.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/audit/audit_request_builder.py +33 -0
- ghostcrawl-2.2.0/_generated/v1/audit/events/events_request_builder.py +109 -0
- ghostcrawl-2.2.0/_generated/v1/billing/billing_request_builder.py +63 -0
- ghostcrawl-2.2.0/_generated/v1/billing/checkout/checkout_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/billing/portal/portal_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/billing/subscription/subscription_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/billing/usage/usage_request_builder.py +99 -0
- ghostcrawl-2.2.0/_generated/v1/binary/binary_request_builder.py +33 -0
- ghostcrawl-2.2.0/_generated/v1/binary/download/download_request_builder.py +88 -0
- ghostcrawl-2.2.0/_generated/v1/budgets/budgets_request_builder.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/budgets/policy/item/item/with_scope_item_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/budgets/policy/item/with_scope_type_item_request_builder.py +38 -0
- ghostcrawl-2.2.0/_generated/v1/budgets/policy/policy_request_builder.py +147 -0
- ghostcrawl-2.2.0/_generated/v1/budgets/usage/usage_request_builder.py +88 -0
- ghostcrawl-2.2.0/_generated/v1/cdp/cdp_request_builder.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/cdp/frame/frame_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/cdp/url/url_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/contact/contact_post_response.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/contact/contact_request_builder.py +89 -0
- ghostcrawl-2.2.0/_generated/v1/crawl/crawl_request_builder.py +33 -0
- ghostcrawl-2.2.0/_generated/v1/crawl/deep/deep_request_builder.py +101 -0
- ghostcrawl-2.2.0/_generated/v1/crawl/deep/item/with_run_item_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/crawl_runs/crawl_runs_post_request_body.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/crawl_runs/crawl_runs_request_builder.py +165 -0
- ghostcrawl-2.2.0/_generated/v1/crawl_runs/item/cancel/cancel_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/crawl_runs/item/resume/resume_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/crawl_runs/item/with_run_item_request_builder.py +107 -0
- ghostcrawl-2.2.0/_generated/v1/datasets/datasets_post_request_body.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/datasets/datasets_request_builder.py +155 -0
- ghostcrawl-2.2.0/_generated/v1/datasets/item/rows/append/append_post_request_body.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/datasets/item/rows/append/append_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/datasets/item/rows/rows_request_builder.py +98 -0
- ghostcrawl-2.2.0/_generated/v1/datasets/item/with_name_item_request_builder.py +124 -0
- ghostcrawl-2.2.0/_generated/v1/discovery/discovery_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/engines/engines_request_builder.py +33 -0
- ghostcrawl-2.2.0/_generated/v1/engines/manifest/manifest_request_builder.py +96 -0
- ghostcrawl-2.2.0/_generated/v1/extract/extract_post_response.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/extract/extract_request_builder.py +98 -0
- ghostcrawl-2.2.0/_generated/v1/identity/identity_request_builder.py +89 -0
- ghostcrawl-2.2.0/_generated/v1/kv/item/with_key_item_request_builder.py +158 -0
- ghostcrawl-2.2.0/_generated/v1/kv/item/with_key_put_request_body.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/kv/kv_request_builder.py +38 -0
- ghostcrawl-2.2.0/_generated/v1/map/map_request_builder.py +89 -0
- ghostcrawl-2.2.0/_generated/v1/me/export/export_get_response.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/me/export/export_request_builder.py +81 -0
- ghostcrawl-2.2.0/_generated/v1/me/me_request_builder.py +101 -0
- ghostcrawl-2.2.0/_generated/v1/me/usage/get_period_query_parameter_type.py +7 -0
- ghostcrawl-2.2.0/_generated/v1/me/usage/usage_get_response.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/me/usage/usage_request_builder.py +90 -0
- ghostcrawl-2.2.0/_generated/v1/page/cookies/cookies_request_builder.py +178 -0
- ghostcrawl-2.2.0/_generated/v1/page/dom_snapshot/dom_snapshot_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/page/download/download_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/page/eval/eval_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/page/har/har_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/page/page_request_builder.py +103 -0
- ghostcrawl-2.2.0/_generated/v1/page/scroll/scroll_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/page/upload/upload_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/page/wait/wait_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/pricing/pricing_request_builder.py +33 -0
- ghostcrawl-2.2.0/_generated/v1/pricing/public/public_request_builder.py +70 -0
- ghostcrawl-2.2.0/_generated/v1/profiles/item/with_name_item_request_builder.py +158 -0
- ghostcrawl-2.2.0/_generated/v1/profiles/profiles_request_builder.py +155 -0
- ghostcrawl-2.2.0/_generated/v1/proxy_providers/proxy_providers_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/queues/item/ack/ack_post_request_body.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/queues/item/ack/ack_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/queues/item/pop/pop_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/queues/item/push/push_post_request_body.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/queues/item/push/push_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/queues/item/stats/stats_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/queues/item/with_name_item_request_builder.py +63 -0
- ghostcrawl-2.2.0/_generated/v1/queues/queues_request_builder.py +38 -0
- ghostcrawl-2.2.0/_generated/v1/recordings/item/recording_item_request_builder.py +124 -0
- ghostcrawl-2.2.0/_generated/v1/recordings/item/visual/frames/frames_request_builder.py +98 -0
- ghostcrawl-2.2.0/_generated/v1/recordings/item/visual/start/start_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/recordings/item/visual/stop/stop_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/recordings/item/visual/visual_request_builder.py +116 -0
- ghostcrawl-2.2.0/_generated/v1/recordings/recordings_request_builder.py +111 -0
- ghostcrawl-2.2.0/_generated/v1/registry/registry_request_builder.py +33 -0
- ghostcrawl-2.2.0/_generated/v1/registry/token/token_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/schedules/item/runs/runs_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/schedules/item/with_schedule_item_request_builder.py +124 -0
- ghostcrawl-2.2.0/_generated/v1/schedules/schedules_request_builder.py +137 -0
- ghostcrawl-2.2.0/_generated/v1/scrape/batch/batch_request_builder.py +95 -0
- ghostcrawl-2.2.0/_generated/v1/scrape/scrape_request_builder.py +106 -0
- ghostcrawl-2.2.0/_generated/v1/screenshot_blobs/item/with_ref_item_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/screenshot_blobs/screenshot_blobs_request_builder.py +38 -0
- ghostcrawl-2.2.0/_generated/v1/search/search_request_builder.py +95 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/create/create_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/item/budget_stream/budget_stream_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/item/extend/extend_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/item/pin/pin_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/item/profile_item_request_builder.py +103 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/item/recording/recording_request_builder.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/item/recording/start/start_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/item/recording/stop/stop_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/item/release/release_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/item/takeover/takeover_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/item/takeover_release/takeover_release_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/item/takeover_token/takeover_token_request_builder.py +78 -0
- ghostcrawl-2.2.0/_generated/v1/sessions/sessions_request_builder.py +121 -0
- ghostcrawl-2.2.0/_generated/v1/storage_states/detach/detach_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/storage_states/item/attach/attach_request_builder.py +86 -0
- ghostcrawl-2.2.0/_generated/v1/storage_states/item/with_id_or_name_item_request_builder.py +124 -0
- ghostcrawl-2.2.0/_generated/v1/storage_states/storage_states_post_request_body.py +43 -0
- ghostcrawl-2.2.0/_generated/v1/storage_states/storage_states_request_builder.py +157 -0
- ghostcrawl-2.2.0/_generated/v1/updates/updates_request_builder.py +87 -0
- ghostcrawl-2.2.0/_generated/v1/v1_request_builder.py +333 -0
- ghostcrawl-2.2.0/_generated/v1/webhooks/item/deliveries/deliveries_request_builder.py +114 -0
- ghostcrawl-2.2.0/_generated/v1/webhooks/item/deliveries/item/retry/retry_request_builder.py +81 -0
- ghostcrawl-2.2.0/_generated/v1/webhooks/item/deliveries/item/with_delivery_item_request_builder.py +33 -0
- ghostcrawl-2.2.0/_generated/v1/webhooks/item/rotate_secret/rotate_secret_request_builder.py +81 -0
- ghostcrawl-2.2.0/_generated/v1/webhooks/item/with_webhook_item_request_builder.py +137 -0
- ghostcrawl-2.2.0/_generated/v1/webhooks/webhooks_request_builder.py +161 -0
- ghostcrawl-2.2.0/ghostcrawl/__init__.py +122 -0
- ghostcrawl-2.2.0/ghostcrawl/_ghostcrawl.py +129 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/branded.py +18 -15
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/cli/_batch.py +11 -13
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/cli/main.py +60 -66
- ghostcrawl-2.2.0/ghostcrawl/errors/__init__.py +44 -0
- ghostcrawl-2.2.0/ghostcrawl/errors/codes.py +92 -0
- ghostcrawl-2.2.0/ghostcrawl/facade.py +1580 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/identity/__init__.py +2 -2
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/identity/client.py +5 -6
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/mcp/wrapper.py +2 -2
- ghostcrawl-2.2.0/ghostcrawl/retry_policy.py +55 -0
- ghostcrawl-2.2.0/ghostcrawl.egg-info/PKG-INFO +195 -0
- ghostcrawl-2.2.0/ghostcrawl.egg-info/SOURCES.txt +367 -0
- ghostcrawl-2.2.0/ghostcrawl.egg-info/requires.txt +15 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl.egg-info/top_level.txt +1 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/pyproject.toml +12 -4
- ghostcrawl-2.1.2/LICENSE +0 -201
- ghostcrawl-2.1.2/PKG-INFO +0 -211
- ghostcrawl-2.1.2/README.md +0 -182
- ghostcrawl-2.1.2/ghostcrawl/__init__.py +0 -271
- ghostcrawl-2.1.2/ghostcrawl/_default_clients.py +0 -30
- ghostcrawl-2.1.2/ghostcrawl/_ghostcrawl.py +0 -415
- ghostcrawl-2.1.2/ghostcrawl/audit/__init__.py +0 -34
- ghostcrawl-2.1.2/ghostcrawl/audit/client.py +0 -194
- ghostcrawl-2.1.2/ghostcrawl/audit/raw_client.py +0 -218
- ghostcrawl-2.1.2/ghostcrawl/audit/types/__init__.py +0 -34
- ghostcrawl-2.1.2/ghostcrawl/audit/types/list_events_audit_request_outcome.py +0 -5
- ghostcrawl-2.1.2/ghostcrawl/auth/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/auth/client.py +0 -569
- ghostcrawl-2.1.2/ghostcrawl/auth/raw_client.py +0 -846
- ghostcrawl-2.1.2/ghostcrawl/auth_tokens/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/auth_tokens/client.py +0 -267
- ghostcrawl-2.1.2/ghostcrawl/auth_tokens/raw_client.py +0 -339
- ghostcrawl-2.1.2/ghostcrawl/budgets/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/budgets/client.py +0 -490
- ghostcrawl-2.1.2/ghostcrawl/budgets/raw_client.py +0 -630
- ghostcrawl-2.1.2/ghostcrawl/cli/_fern_raw.py +0 -35
- ghostcrawl-2.1.2/ghostcrawl/client.py +0 -765
- ghostcrawl-2.1.2/ghostcrawl/core/__init__.py +0 -127
- ghostcrawl-2.1.2/ghostcrawl/core/api_error.py +0 -23
- ghostcrawl-2.1.2/ghostcrawl/core/client_wrapper.py +0 -101
- ghostcrawl-2.1.2/ghostcrawl/core/datetime_utils.py +0 -70
- ghostcrawl-2.1.2/ghostcrawl/core/file.py +0 -67
- ghostcrawl-2.1.2/ghostcrawl/core/force_multipart.py +0 -18
- ghostcrawl-2.1.2/ghostcrawl/core/http_client.py +0 -839
- ghostcrawl-2.1.2/ghostcrawl/core/http_response.py +0 -59
- ghostcrawl-2.1.2/ghostcrawl/core/http_sse/__init__.py +0 -42
- ghostcrawl-2.1.2/ghostcrawl/core/http_sse/_api.py +0 -148
- ghostcrawl-2.1.2/ghostcrawl/core/http_sse/_decoders.py +0 -61
- ghostcrawl-2.1.2/ghostcrawl/core/http_sse/_exceptions.py +0 -7
- ghostcrawl-2.1.2/ghostcrawl/core/http_sse/_models.py +0 -17
- ghostcrawl-2.1.2/ghostcrawl/core/jsonable_encoder.py +0 -120
- ghostcrawl-2.1.2/ghostcrawl/core/logging.py +0 -107
- ghostcrawl-2.1.2/ghostcrawl/core/parse_error.py +0 -36
- ghostcrawl-2.1.2/ghostcrawl/core/pydantic_utilities.py +0 -634
- ghostcrawl-2.1.2/ghostcrawl/core/query_encoder.py +0 -58
- ghostcrawl-2.1.2/ghostcrawl/core/remove_none_from_dict.py +0 -11
- ghostcrawl-2.1.2/ghostcrawl/core/request_options.py +0 -35
- ghostcrawl-2.1.2/ghostcrawl/core/serialization.py +0 -276
- ghostcrawl-2.1.2/ghostcrawl/crawl_runs/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/crawl_runs/client.py +0 -437
- ghostcrawl-2.1.2/ghostcrawl/crawl_runs/raw_client.py +0 -638
- ghostcrawl-2.1.2/ghostcrawl/datasets/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/datasets/client.py +0 -509
- ghostcrawl-2.1.2/ghostcrawl/datasets/raw_client.py +0 -712
- ghostcrawl-2.1.2/ghostcrawl/errors/__init__.py +0 -34
- ghostcrawl-2.1.2/ghostcrawl/errors/unprocessable_entity_error.py +0 -11
- ghostcrawl-2.1.2/ghostcrawl/management/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/management/client.py +0 -108
- ghostcrawl-2.1.2/ghostcrawl/management/raw_client.py +0 -109
- ghostcrawl-2.1.2/ghostcrawl/mfa/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/mfa/client.py +0 -394
- ghostcrawl-2.1.2/ghostcrawl/mfa/raw_client.py +0 -587
- ghostcrawl-2.1.2/ghostcrawl/oauth/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/oauth/client.py +0 -764
- ghostcrawl-2.1.2/ghostcrawl/oauth/raw_client.py +0 -1123
- ghostcrawl-2.1.2/ghostcrawl/observability/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/observability/client.py +0 -198
- ghostcrawl-2.1.2/ghostcrawl/observability/raw_client.py +0 -293
- ghostcrawl-2.1.2/ghostcrawl/page/__init__.py +0 -34
- ghostcrawl-2.1.2/ghostcrawl/page/client.py +0 -816
- ghostcrawl-2.1.2/ghostcrawl/page/raw_client.py +0 -1176
- ghostcrawl-2.1.2/ghostcrawl/page/types/__init__.py +0 -34
- ghostcrawl-2.1.2/ghostcrawl/page/types/scroll_body_direction.py +0 -5
- ghostcrawl-2.1.2/ghostcrawl/profiles/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/profiles/client.py +0 -172
- ghostcrawl-2.1.2/ghostcrawl/profiles/raw_client.py +0 -200
- ghostcrawl-2.1.2/ghostcrawl/raw_client.py +0 -357
- ghostcrawl-2.1.2/ghostcrawl/recordings/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/recordings/client.py +0 -546
- ghostcrawl-2.1.2/ghostcrawl/recordings/raw_client.py +0 -767
- ghostcrawl-2.1.2/ghostcrawl/retry_policy.py +0 -71
- ghostcrawl-2.1.2/ghostcrawl/screenshot_blobs/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/screenshot_blobs/client.py +0 -125
- ghostcrawl-2.1.2/ghostcrawl/screenshot_blobs/raw_client.py +0 -151
- ghostcrawl-2.1.2/ghostcrawl/script/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/script/client.py +0 -124
- ghostcrawl-2.1.2/ghostcrawl/script/raw_client.py +0 -157
- ghostcrawl-2.1.2/ghostcrawl/sessions/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/sessions/client.py +0 -276
- ghostcrawl-2.1.2/ghostcrawl/sessions/raw_client.py +0 -345
- ghostcrawl-2.1.2/ghostcrawl/storage_states/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/storage_states/client.py +0 -536
- ghostcrawl-2.1.2/ghostcrawl/storage_states/raw_client.py +0 -810
- ghostcrawl-2.1.2/ghostcrawl/types/__init__.py +0 -128
- ghostcrawl-2.1.2/ghostcrawl/types/audit_event_out.py +0 -28
- ghostcrawl-2.1.2/ghostcrawl/types/audit_events_response.py +0 -14
- ghostcrawl-2.1.2/ghostcrawl/types/cookie_dict.py +0 -29
- ghostcrawl-2.1.2/ghostcrawl/types/cookie_dict_same_site.py +0 -5
- ghostcrawl-2.1.2/ghostcrawl/types/device_auth_envelope.py +0 -17
- ghostcrawl-2.1.2/ghostcrawl/types/device_poll_request.py +0 -12
- ghostcrawl-2.1.2/ghostcrawl/types/enroll_response.py +0 -15
- ghostcrawl-2.1.2/ghostcrawl/types/http_validation_error.py +0 -13
- ghostcrawl-2.1.2/ghostcrawl/types/link_confirm_response.py +0 -16
- ghostcrawl-2.1.2/ghostcrawl/types/link_decline_response.py +0 -13
- ghostcrawl-2.1.2/ghostcrawl/types/password_reset_confirm_response.py +0 -12
- ghostcrawl-2.1.2/ghostcrawl/types/password_reset_request_response.py +0 -12
- ghostcrawl-2.1.2/ghostcrawl/types/regenerate_response.py +0 -12
- ghostcrawl-2.1.2/ghostcrawl/types/resend_response.py +0 -12
- ghostcrawl-2.1.2/ghostcrawl/types/retry_delivery_response.py +0 -23
- ghostcrawl-2.1.2/ghostcrawl/types/rotate_secret_response.py +0 -32
- ghostcrawl-2.1.2/ghostcrawl/types/signup_response.py +0 -13
- ghostcrawl-2.1.2/ghostcrawl/types/token_create_response.py +0 -22
- ghostcrawl-2.1.2/ghostcrawl/types/token_list_item.py +0 -24
- ghostcrawl-2.1.2/ghostcrawl/types/token_list_response.py +0 -17
- ghostcrawl-2.1.2/ghostcrawl/types/unlink_response.py +0 -13
- ghostcrawl-2.1.2/ghostcrawl/types/user_shape.py +0 -14
- ghostcrawl-2.1.2/ghostcrawl/types/validation_error.py +0 -17
- ghostcrawl-2.1.2/ghostcrawl/types/validation_error_loc_item.py +0 -5
- ghostcrawl-2.1.2/ghostcrawl/types/verify_response.py +0 -12
- ghostcrawl-2.1.2/ghostcrawl/types/webhook_create_response.py +0 -25
- ghostcrawl-2.1.2/ghostcrawl/types/webhook_delivery_list_response.py +0 -19
- ghostcrawl-2.1.2/ghostcrawl/types/webhook_delivery_public.py +0 -32
- ghostcrawl-2.1.2/ghostcrawl/types/webhook_list_response.py +0 -19
- ghostcrawl-2.1.2/ghostcrawl/types/webhook_public.py +0 -29
- ghostcrawl-2.1.2/ghostcrawl/types/webhooks_queue_response.py +0 -27
- ghostcrawl-2.1.2/ghostcrawl/webhooks/__init__.py +0 -4
- ghostcrawl-2.1.2/ghostcrawl/webhooks/client.py +0 -743
- ghostcrawl-2.1.2/ghostcrawl/webhooks/raw_client.py +0 -966
- ghostcrawl-2.1.2/ghostcrawl.egg-info/PKG-INFO +0 -211
- ghostcrawl-2.1.2/ghostcrawl.egg-info/SOURCES.txt +0 -144
- ghostcrawl-2.1.2/ghostcrawl.egg-info/requires.txt +0 -9
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/cli/__init__.py +0 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/cli/_config_store.py +0 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/cli/install.py +0 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/errors/identity_errors.py +0 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/identity/types.py +0 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/mcp/__init__.py +0 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/params.py +0 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl/py.typed +0 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl.egg-info/dependency_links.txt +0 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/ghostcrawl.egg-info/entry_points.txt +0 -0
- {ghostcrawl-2.1.2 → ghostcrawl-2.2.0}/setup.cfg +0 -0
ghostcrawl-2.2.0/LICENSE
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
GhostCrawl Software License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 GhostCrawl, LLC. All rights reserved.
|
|
4
|
+
|
|
5
|
+
This software — including the GhostCrawl SDKs, command-line interface, example
|
|
6
|
+
code, documentation, and the GhostCrawl self-host image (collectively, the
|
|
7
|
+
"Software") — is the proprietary property of GhostCrawl, LLC ("GhostCrawl") and
|
|
8
|
+
its licensors. It is licensed, not sold.
|
|
9
|
+
|
|
10
|
+
1. LICENSE GRANT. Subject to your continuous compliance with this License and the
|
|
11
|
+
GhostCrawl Terms of Service (https://docs.ghostcrawl.io/legal/terms),
|
|
12
|
+
GhostCrawl grants you a limited, revocable, non-exclusive, non-transferable,
|
|
13
|
+
and non-sublicensable license to install and use the Software, including
|
|
14
|
+
within your own applications, solely to access and use the GhostCrawl service
|
|
15
|
+
under a valid GhostCrawl account.
|
|
16
|
+
|
|
17
|
+
2. RESTRICTIONS. Except as expressly permitted in Section 1, you may not, in
|
|
18
|
+
whole or in part: (a) copy the Software except as strictly necessary to use it
|
|
19
|
+
as permitted; (b) modify, adapt, translate, or create derivative works of the
|
|
20
|
+
Software; (c) distribute, publish, sublicense, sell, resell, rent, lease,
|
|
21
|
+
lend, or otherwise transfer the Software, or make it available to any third
|
|
22
|
+
party, including as a hosted or managed service; (d) reverse engineer,
|
|
23
|
+
decompile, disassemble, or otherwise attempt to derive the source code,
|
|
24
|
+
structure, or internal design of any compiled component of the Software;
|
|
25
|
+
(e) circumvent, disable, or tamper with any license, authentication,
|
|
26
|
+
usage-metering, watermarking, or security mechanism; or (f) remove, alter, or
|
|
27
|
+
obscure any proprietary, copyright, or attribution notice.
|
|
28
|
+
|
|
29
|
+
3. OWNERSHIP. GhostCrawl and its licensors retain all right, title, and interest
|
|
30
|
+
in and to the Software and all intellectual property rights therein. No rights
|
|
31
|
+
are granted to you except as expressly set out in this License. All rights
|
|
32
|
+
reserved.
|
|
33
|
+
|
|
34
|
+
4. TERMINATION. This License terminates automatically, without notice, if you
|
|
35
|
+
breach any of its terms or cease to maintain a valid GhostCrawl account where
|
|
36
|
+
one is required. Upon termination you must cease all use of the Software and
|
|
37
|
+
destroy all copies in your possession or control.
|
|
38
|
+
|
|
39
|
+
5. NO WARRANTY; LIMITATION OF LIABILITY. THE SOFTWARE IS PROVIDED "AS IS" WITHOUT
|
|
40
|
+
WARRANTY OF ANY KIND, EXPRESS OR IMPLIED. TO THE MAXIMUM EXTENT PERMITTED BY
|
|
41
|
+
LAW, GHOSTCRAWL AND ITS LICENSORS WILL NOT BE LIABLE FOR ANY CLAIM, DAMAGES, OR
|
|
42
|
+
OTHER LIABILITY ARISING FROM OR IN CONNECTION WITH THE SOFTWARE OR ITS USE. The
|
|
43
|
+
GhostCrawl Terms of Service and Acceptable Use Policy
|
|
44
|
+
(https://docs.ghostcrawl.io/legal/terms) are incorporated by reference.
|
|
45
|
+
|
|
46
|
+
For licensing inquiries, contact legal@ghostcrawl.io.
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ghostcrawl
|
|
3
|
+
Version: 2.2.0
|
|
4
|
+
Summary: Official Python SDK for the Ghostcrawl local orchestration API.
|
|
5
|
+
Author: Ghostcrawl
|
|
6
|
+
License: Proprietary — see LICENSE
|
|
7
|
+
Project-URL: Homepage, https://github.com/ghostcrawl/ghostcrawl
|
|
8
|
+
Keywords: ghostcrawl,scraping,browser,automation,agent
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: License :: Other/Proprietary License
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
17
|
+
Requires-Python: >=3.10
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Requires-Dist: httpx>=0.28.1
|
|
21
|
+
Requires-Dist: pydantic>=2.13
|
|
22
|
+
Requires-Dist: typer>=0.12
|
|
23
|
+
Requires-Dist: mcp>=1.27.1
|
|
24
|
+
Requires-Dist: microsoft-kiota-abstractions>=1.7.0
|
|
25
|
+
Requires-Dist: microsoft-kiota-http>=1.10.0
|
|
26
|
+
Requires-Dist: microsoft-kiota-serialization-json>=1.7.0
|
|
27
|
+
Requires-Dist: microsoft-kiota-serialization-text>=1.0.0
|
|
28
|
+
Requires-Dist: microsoft-kiota-serialization-form>=1.0.0
|
|
29
|
+
Requires-Dist: microsoft-kiota-serialization-multipart>=1.0.0
|
|
30
|
+
Provides-Extra: dev
|
|
31
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
32
|
+
Requires-Dist: respx>=0.23.1; extra == "dev"
|
|
33
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
34
|
+
Dynamic: license-file
|
|
35
|
+
|
|
36
|
+
# ghostcrawl — Python SDK
|
|
37
|
+
|
|
38
|
+
The official Python client for the [GhostCrawl](https://ghostcrawl.io) API. Collect web data at scale — scrape, crawl, search, extract structured data, manage browser sessions, and automate the full data-collection pipeline.
|
|
39
|
+
|
|
40
|
+
## Install
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pip install ghostcrawl
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Requires Python 3.10+. Runtime dependencies: `httpx>=0.28.1`.
|
|
47
|
+
|
|
48
|
+
## Quickstart
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
from ghostcrawl import GhostcrawlClient
|
|
52
|
+
|
|
53
|
+
# Reads GHOSTCRAWL_API_KEY from environment, or pass token= explicitly
|
|
54
|
+
client = GhostcrawlClient(token="gck_live_YOUR_KEY")
|
|
55
|
+
|
|
56
|
+
# Scrape a URL
|
|
57
|
+
result = client.scrape(url="https://example.com", format="markdown")
|
|
58
|
+
print(result["content"])
|
|
59
|
+
|
|
60
|
+
# Start a crawl
|
|
61
|
+
run = client.crawl_runs.start(url="https://example.com", max_depth=2, max_pages=50)
|
|
62
|
+
print(run["run_id"])
|
|
63
|
+
|
|
64
|
+
# Web search
|
|
65
|
+
results = client.search(query="latest AI research", engine="google", limit=10)
|
|
66
|
+
for r in results["results"]:
|
|
67
|
+
print(r["title"], r["url"])
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Authentication
|
|
71
|
+
|
|
72
|
+
```python
|
|
73
|
+
import os
|
|
74
|
+
from ghostcrawl import GhostcrawlClient
|
|
75
|
+
|
|
76
|
+
# Option 1: pass token directly
|
|
77
|
+
client = GhostcrawlClient(token="gck_live_YOUR_KEY")
|
|
78
|
+
|
|
79
|
+
# Option 2: set environment variable (recommended for production)
|
|
80
|
+
os.environ["GHOSTCRAWL_API_KEY"] = "gck_live_YOUR_KEY"
|
|
81
|
+
client = GhostcrawlClient()
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Every request sends `Authorization: Bearer <token>`. This is the only auth scheme the API accepts.
|
|
85
|
+
|
|
86
|
+
## Extract structured data
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
from ghostcrawl import GhostcrawlClient
|
|
90
|
+
|
|
91
|
+
client = GhostcrawlClient(token="gck_live_YOUR_KEY")
|
|
92
|
+
|
|
93
|
+
# Define a schema and extract matching data
|
|
94
|
+
data = client.extract(
|
|
95
|
+
url="https://example.com/product",
|
|
96
|
+
schema={
|
|
97
|
+
"type": "object",
|
|
98
|
+
"properties": {
|
|
99
|
+
"name": {"type": "string"},
|
|
100
|
+
"price": {"type": "number"},
|
|
101
|
+
"description": {"type": "string"},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
)
|
|
105
|
+
print(data["name"], data["price"])
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Browser sessions
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
from ghostcrawl import GhostcrawlClient
|
|
112
|
+
|
|
113
|
+
client = GhostcrawlClient(token="gck_live_YOUR_KEY")
|
|
114
|
+
|
|
115
|
+
# Create a session
|
|
116
|
+
session = client.sessions.create(profile_name="my-profile")
|
|
117
|
+
session_id = session["session_id"]
|
|
118
|
+
|
|
119
|
+
# Extend and release
|
|
120
|
+
client.sessions.extend(session_id, duration_seconds=600)
|
|
121
|
+
client.sessions.release(session_id)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Error handling
|
|
125
|
+
|
|
126
|
+
```python
|
|
127
|
+
from ghostcrawl import GhostcrawlClient, AuthenticationError, RateLimitError, APIError
|
|
128
|
+
|
|
129
|
+
client = GhostcrawlClient(token="gck_live_YOUR_KEY")
|
|
130
|
+
|
|
131
|
+
try:
|
|
132
|
+
result = client.scrape(url="https://example.com")
|
|
133
|
+
except AuthenticationError:
|
|
134
|
+
print("Invalid API key — check your token")
|
|
135
|
+
except RateLimitError:
|
|
136
|
+
print("Rate limit reached — retry after a short delay")
|
|
137
|
+
except APIError as e:
|
|
138
|
+
print(f"Server error: {e.status_code}")
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## Context manager
|
|
142
|
+
|
|
143
|
+
```python
|
|
144
|
+
from ghostcrawl import GhostcrawlClient
|
|
145
|
+
|
|
146
|
+
with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
147
|
+
result = client.scrape(url="https://example.com")
|
|
148
|
+
print(result)
|
|
149
|
+
# HTTP connection is closed automatically
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## All resources
|
|
153
|
+
|
|
154
|
+
| Resource | Client attribute | Key operations |
|
|
155
|
+
|----------|-----------------|----------------|
|
|
156
|
+
| Scraping | `client.scrape(url=…)` | Render and return page content |
|
|
157
|
+
| Web search | `client.search(query=…)` | Search Google, Bing, DuckDuckGo |
|
|
158
|
+
| Data extraction | `client.extract(url=…, schema=…)` | Structured JSON from any page |
|
|
159
|
+
| Deep crawl | `client.crawl(url=…)` | Crawl a site depth-first |
|
|
160
|
+
| URL map | `client.map(url=…)` | Discover all reachable URLs |
|
|
161
|
+
| Crawl runs | `client.crawl_runs` | start, list, get, cancel |
|
|
162
|
+
| Sessions | `client.sessions` | create, extend, release |
|
|
163
|
+
| Profiles | `client.profiles` | list, get, create, update, delete |
|
|
164
|
+
| Webhooks | `client.webhooks` | list, get, create, delete, rotate-secret |
|
|
165
|
+
| Schedules | `client.schedules` | list, get, create, delete |
|
|
166
|
+
| Datasets | `client.datasets` | list, get, create, delete, append rows |
|
|
167
|
+
| Recordings | `client.recordings` | list, get, delete |
|
|
168
|
+
| Key-Value Store | `client.kv` | get, set, delete |
|
|
169
|
+
| Account | `client.me()` | Get account info and usage |
|
|
170
|
+
|
|
171
|
+
## LangChain integration
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
pip install ghostcrawl-langchain
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
```python
|
|
178
|
+
from ghostcrawl_langchain import GhostcrawlScrape, GhostcrawlSearch
|
|
179
|
+
|
|
180
|
+
scrape_tool = GhostcrawlScrape()
|
|
181
|
+
search_tool = GhostcrawlSearch()
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Self-hosted
|
|
185
|
+
|
|
186
|
+
```python
|
|
187
|
+
client = GhostcrawlClient(
|
|
188
|
+
token="gck_live_YOUR_KEY",
|
|
189
|
+
base_url="http://localhost:8080", # your self-hosted instance
|
|
190
|
+
)
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## License
|
|
194
|
+
|
|
195
|
+
Proprietary — GhostCrawl Software License. See [LICENSE](LICENSE).
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# ghostcrawl — Python SDK
|
|
2
|
+
|
|
3
|
+
The official Python client for the [GhostCrawl](https://ghostcrawl.io) API. Collect web data at scale — scrape, crawl, search, extract structured data, manage browser sessions, and automate the full data-collection pipeline.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install ghostcrawl
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Requires Python 3.10+. Runtime dependencies: `httpx>=0.28.1`.
|
|
12
|
+
|
|
13
|
+
## Quickstart
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
from ghostcrawl import GhostcrawlClient
|
|
17
|
+
|
|
18
|
+
# Reads GHOSTCRAWL_API_KEY from environment, or pass token= explicitly
|
|
19
|
+
client = GhostcrawlClient(token="gck_live_YOUR_KEY")
|
|
20
|
+
|
|
21
|
+
# Scrape a URL
|
|
22
|
+
result = client.scrape(url="https://example.com", format="markdown")
|
|
23
|
+
print(result["content"])
|
|
24
|
+
|
|
25
|
+
# Start a crawl
|
|
26
|
+
run = client.crawl_runs.start(url="https://example.com", max_depth=2, max_pages=50)
|
|
27
|
+
print(run["run_id"])
|
|
28
|
+
|
|
29
|
+
# Web search
|
|
30
|
+
results = client.search(query="latest AI research", engine="google", limit=10)
|
|
31
|
+
for r in results["results"]:
|
|
32
|
+
print(r["title"], r["url"])
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Authentication
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
import os
|
|
39
|
+
from ghostcrawl import GhostcrawlClient
|
|
40
|
+
|
|
41
|
+
# Option 1: pass token directly
|
|
42
|
+
client = GhostcrawlClient(token="gck_live_YOUR_KEY")
|
|
43
|
+
|
|
44
|
+
# Option 2: set environment variable (recommended for production)
|
|
45
|
+
os.environ["GHOSTCRAWL_API_KEY"] = "gck_live_YOUR_KEY"
|
|
46
|
+
client = GhostcrawlClient()
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Every request sends `Authorization: Bearer <token>`. This is the only auth scheme the API accepts.
|
|
50
|
+
|
|
51
|
+
## Extract structured data
|
|
52
|
+
|
|
53
|
+
```python
|
|
54
|
+
from ghostcrawl import GhostcrawlClient
|
|
55
|
+
|
|
56
|
+
client = GhostcrawlClient(token="gck_live_YOUR_KEY")
|
|
57
|
+
|
|
58
|
+
# Define a schema and extract matching data
|
|
59
|
+
data = client.extract(
|
|
60
|
+
url="https://example.com/product",
|
|
61
|
+
schema={
|
|
62
|
+
"type": "object",
|
|
63
|
+
"properties": {
|
|
64
|
+
"name": {"type": "string"},
|
|
65
|
+
"price": {"type": "number"},
|
|
66
|
+
"description": {"type": "string"},
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
)
|
|
70
|
+
print(data["name"], data["price"])
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Browser sessions
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
from ghostcrawl import GhostcrawlClient
|
|
77
|
+
|
|
78
|
+
client = GhostcrawlClient(token="gck_live_YOUR_KEY")
|
|
79
|
+
|
|
80
|
+
# Create a session
|
|
81
|
+
session = client.sessions.create(profile_name="my-profile")
|
|
82
|
+
session_id = session["session_id"]
|
|
83
|
+
|
|
84
|
+
# Extend and release
|
|
85
|
+
client.sessions.extend(session_id, duration_seconds=600)
|
|
86
|
+
client.sessions.release(session_id)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Error handling
|
|
90
|
+
|
|
91
|
+
```python
|
|
92
|
+
from ghostcrawl import GhostcrawlClient, AuthenticationError, RateLimitError, APIError
|
|
93
|
+
|
|
94
|
+
client = GhostcrawlClient(token="gck_live_YOUR_KEY")
|
|
95
|
+
|
|
96
|
+
try:
|
|
97
|
+
result = client.scrape(url="https://example.com")
|
|
98
|
+
except AuthenticationError:
|
|
99
|
+
print("Invalid API key — check your token")
|
|
100
|
+
except RateLimitError:
|
|
101
|
+
print("Rate limit reached — retry after a short delay")
|
|
102
|
+
except APIError as e:
|
|
103
|
+
print(f"Server error: {e.status_code}")
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Context manager
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
from ghostcrawl import GhostcrawlClient
|
|
110
|
+
|
|
111
|
+
with GhostcrawlClient(token="gck_live_YOUR_KEY") as client:
|
|
112
|
+
result = client.scrape(url="https://example.com")
|
|
113
|
+
print(result)
|
|
114
|
+
# HTTP connection is closed automatically
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## All resources
|
|
118
|
+
|
|
119
|
+
| Resource | Client attribute | Key operations |
|
|
120
|
+
|----------|-----------------|----------------|
|
|
121
|
+
| Scraping | `client.scrape(url=…)` | Render and return page content |
|
|
122
|
+
| Web search | `client.search(query=…)` | Search Google, Bing, DuckDuckGo |
|
|
123
|
+
| Data extraction | `client.extract(url=…, schema=…)` | Structured JSON from any page |
|
|
124
|
+
| Deep crawl | `client.crawl(url=…)` | Crawl a site depth-first |
|
|
125
|
+
| URL map | `client.map(url=…)` | Discover all reachable URLs |
|
|
126
|
+
| Crawl runs | `client.crawl_runs` | start, list, get, cancel |
|
|
127
|
+
| Sessions | `client.sessions` | create, extend, release |
|
|
128
|
+
| Profiles | `client.profiles` | list, get, create, update, delete |
|
|
129
|
+
| Webhooks | `client.webhooks` | list, get, create, delete, rotate-secret |
|
|
130
|
+
| Schedules | `client.schedules` | list, get, create, delete |
|
|
131
|
+
| Datasets | `client.datasets` | list, get, create, delete, append rows |
|
|
132
|
+
| Recordings | `client.recordings` | list, get, delete |
|
|
133
|
+
| Key-Value Store | `client.kv` | get, set, delete |
|
|
134
|
+
| Account | `client.me()` | Get account info and usage |
|
|
135
|
+
|
|
136
|
+
## LangChain integration
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
pip install ghostcrawl-langchain
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
```python
|
|
143
|
+
from ghostcrawl_langchain import GhostcrawlScrape, GhostcrawlSearch
|
|
144
|
+
|
|
145
|
+
scrape_tool = GhostcrawlScrape()
|
|
146
|
+
search_tool = GhostcrawlSearch()
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## Self-hosted
|
|
150
|
+
|
|
151
|
+
```python
|
|
152
|
+
client = GhostcrawlClient(
|
|
153
|
+
token="gck_live_YOUR_KEY",
|
|
154
|
+
base_url="http://localhost:8080", # your self-hosted instance
|
|
155
|
+
)
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## License
|
|
159
|
+
|
|
160
|
+
Proprietary — GhostCrawl Software License. See [LICENSE](LICENSE).
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
from kiota_abstractions.api_client_builder import enable_backing_store_for_serialization_writer_factory, register_default_deserializer, register_default_serializer
|
|
4
|
+
from kiota_abstractions.base_request_builder import BaseRequestBuilder
|
|
5
|
+
from kiota_abstractions.get_path_parameters import get_path_parameters
|
|
6
|
+
from kiota_abstractions.request_adapter import RequestAdapter
|
|
7
|
+
from kiota_abstractions.serialization import ParseNodeFactoryRegistry, SerializationWriterFactoryRegistry
|
|
8
|
+
from kiota_serialization_form.form_parse_node_factory import FormParseNodeFactory
|
|
9
|
+
from kiota_serialization_form.form_serialization_writer_factory import FormSerializationWriterFactory
|
|
10
|
+
from kiota_serialization_json.json_parse_node_factory import JsonParseNodeFactory
|
|
11
|
+
from kiota_serialization_json.json_serialization_writer_factory import JsonSerializationWriterFactory
|
|
12
|
+
from kiota_serialization_multipart.multipart_serialization_writer_factory import MultipartSerializationWriterFactory
|
|
13
|
+
from kiota_serialization_text.text_parse_node_factory import TextParseNodeFactory
|
|
14
|
+
from kiota_serialization_text.text_serialization_writer_factory import TextSerializationWriterFactory
|
|
15
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from .v1.v1_request_builder import V1RequestBuilder
|
|
19
|
+
|
|
20
|
+
class GhostcrawlClient(BaseRequestBuilder):
|
|
21
|
+
"""
|
|
22
|
+
The main entry point of the SDK, exposes the configuration and the fluent API.
|
|
23
|
+
"""
|
|
24
|
+
def __init__(self,request_adapter: RequestAdapter) -> None:
|
|
25
|
+
"""
|
|
26
|
+
Instantiates a new GhostcrawlClient and sets the default values.
|
|
27
|
+
param request_adapter: The request adapter to use to execute the requests.
|
|
28
|
+
Returns: None
|
|
29
|
+
"""
|
|
30
|
+
if request_adapter is None:
|
|
31
|
+
raise TypeError("request_adapter cannot be null.")
|
|
32
|
+
super().__init__(request_adapter, "{+baseurl}", None)
|
|
33
|
+
register_default_serializer(JsonSerializationWriterFactory)
|
|
34
|
+
register_default_serializer(TextSerializationWriterFactory)
|
|
35
|
+
register_default_serializer(FormSerializationWriterFactory)
|
|
36
|
+
register_default_serializer(MultipartSerializationWriterFactory)
|
|
37
|
+
register_default_deserializer(JsonParseNodeFactory)
|
|
38
|
+
register_default_deserializer(TextParseNodeFactory)
|
|
39
|
+
register_default_deserializer(FormParseNodeFactory)
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def v1(self) -> V1RequestBuilder:
|
|
43
|
+
"""
|
|
44
|
+
The v1 property
|
|
45
|
+
"""
|
|
46
|
+
from .v1.v1_request_builder import V1RequestBuilder
|
|
47
|
+
|
|
48
|
+
return V1RequestBuilder(self.request_adapter, self.path_parameters)
|
|
49
|
+
|
|
50
|
+
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
import datetime
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
from dataclasses import dataclass, field
|
|
5
|
+
from kiota_abstractions.serialization import AdditionalDataHolder, Parsable, ParseNode, SerializationWriter
|
|
6
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
|
7
|
+
|
|
8
|
+
if TYPE_CHECKING:
|
|
9
|
+
from .audit_event_out_actor_ip import AuditEventOut_actor_ip
|
|
10
|
+
from .audit_event_out_actor_token_id import AuditEventOut_actor_token_id
|
|
11
|
+
from .audit_event_out_actor_user_agent import AuditEventOut_actor_user_agent
|
|
12
|
+
from .audit_event_out_actor_user_id import AuditEventOut_actor_user_id
|
|
13
|
+
from .audit_event_out_metadata import AuditEventOut_metadata
|
|
14
|
+
from .audit_event_out_org_id import AuditEventOut_org_id
|
|
15
|
+
from .audit_event_out_target_id import AuditEventOut_target_id
|
|
16
|
+
from .audit_event_out_target_kind import AuditEventOut_target_kind
|
|
17
|
+
|
|
18
|
+
@dataclass
|
|
19
|
+
class AuditEventOut(AdditionalDataHolder, Parsable):
|
|
20
|
+
"""
|
|
21
|
+
Public audit event shape — chain hashes excluded.
|
|
22
|
+
"""
|
|
23
|
+
# Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
|
|
24
|
+
additional_data: dict[str, Any] = field(default_factory=dict)
|
|
25
|
+
|
|
26
|
+
# The action property
|
|
27
|
+
action: Optional[str] = None
|
|
28
|
+
# The actor_ip property
|
|
29
|
+
actor_ip: Optional[AuditEventOut_actor_ip] = None
|
|
30
|
+
# The actor_token_id property
|
|
31
|
+
actor_token_id: Optional[AuditEventOut_actor_token_id] = None
|
|
32
|
+
# The actor_user_agent property
|
|
33
|
+
actor_user_agent: Optional[AuditEventOut_actor_user_agent] = None
|
|
34
|
+
# The actor_user_id property
|
|
35
|
+
actor_user_id: Optional[AuditEventOut_actor_user_id] = None
|
|
36
|
+
# The created_at property
|
|
37
|
+
created_at: Optional[datetime.datetime] = None
|
|
38
|
+
# The id property
|
|
39
|
+
id: Optional[str] = None
|
|
40
|
+
# The metadata property
|
|
41
|
+
metadata: Optional[AuditEventOut_metadata] = None
|
|
42
|
+
# The org_id property
|
|
43
|
+
org_id: Optional[AuditEventOut_org_id] = None
|
|
44
|
+
# The outcome property
|
|
45
|
+
outcome: Optional[str] = None
|
|
46
|
+
# The target_id property
|
|
47
|
+
target_id: Optional[AuditEventOut_target_id] = None
|
|
48
|
+
# The target_kind property
|
|
49
|
+
target_kind: Optional[AuditEventOut_target_kind] = None
|
|
50
|
+
|
|
51
|
+
@staticmethod
|
|
52
|
+
def create_from_discriminator_value(parse_node: ParseNode) -> AuditEventOut:
|
|
53
|
+
"""
|
|
54
|
+
Creates a new instance of the appropriate class based on discriminator value
|
|
55
|
+
param parse_node: The parse node to use to read the discriminator value and create the object
|
|
56
|
+
Returns: AuditEventOut
|
|
57
|
+
"""
|
|
58
|
+
if parse_node is None:
|
|
59
|
+
raise TypeError("parse_node cannot be null.")
|
|
60
|
+
return AuditEventOut()
|
|
61
|
+
|
|
62
|
+
def get_field_deserializers(self,) -> dict[str, Callable[[ParseNode], None]]:
|
|
63
|
+
"""
|
|
64
|
+
The deserialization information for the current model
|
|
65
|
+
Returns: dict[str, Callable[[ParseNode], None]]
|
|
66
|
+
"""
|
|
67
|
+
from .audit_event_out_actor_ip import AuditEventOut_actor_ip
|
|
68
|
+
from .audit_event_out_actor_token_id import AuditEventOut_actor_token_id
|
|
69
|
+
from .audit_event_out_actor_user_agent import AuditEventOut_actor_user_agent
|
|
70
|
+
from .audit_event_out_actor_user_id import AuditEventOut_actor_user_id
|
|
71
|
+
from .audit_event_out_metadata import AuditEventOut_metadata
|
|
72
|
+
from .audit_event_out_org_id import AuditEventOut_org_id
|
|
73
|
+
from .audit_event_out_target_id import AuditEventOut_target_id
|
|
74
|
+
from .audit_event_out_target_kind import AuditEventOut_target_kind
|
|
75
|
+
|
|
76
|
+
from .audit_event_out_actor_ip import AuditEventOut_actor_ip
|
|
77
|
+
from .audit_event_out_actor_token_id import AuditEventOut_actor_token_id
|
|
78
|
+
from .audit_event_out_actor_user_agent import AuditEventOut_actor_user_agent
|
|
79
|
+
from .audit_event_out_actor_user_id import AuditEventOut_actor_user_id
|
|
80
|
+
from .audit_event_out_metadata import AuditEventOut_metadata
|
|
81
|
+
from .audit_event_out_org_id import AuditEventOut_org_id
|
|
82
|
+
from .audit_event_out_target_id import AuditEventOut_target_id
|
|
83
|
+
from .audit_event_out_target_kind import AuditEventOut_target_kind
|
|
84
|
+
|
|
85
|
+
fields: dict[str, Callable[[Any], None]] = {
|
|
86
|
+
"action": lambda n : setattr(self, 'action', n.get_str_value()),
|
|
87
|
+
"actor_ip": lambda n : setattr(self, 'actor_ip', n.get_object_value(AuditEventOut_actor_ip)),
|
|
88
|
+
"actor_token_id": lambda n : setattr(self, 'actor_token_id', n.get_object_value(AuditEventOut_actor_token_id)),
|
|
89
|
+
"actor_user_agent": lambda n : setattr(self, 'actor_user_agent', n.get_object_value(AuditEventOut_actor_user_agent)),
|
|
90
|
+
"actor_user_id": lambda n : setattr(self, 'actor_user_id', n.get_object_value(AuditEventOut_actor_user_id)),
|
|
91
|
+
"created_at": lambda n : setattr(self, 'created_at', n.get_datetime_value()),
|
|
92
|
+
"id": lambda n : setattr(self, 'id', n.get_str_value()),
|
|
93
|
+
"metadata": lambda n : setattr(self, 'metadata', n.get_object_value(AuditEventOut_metadata)),
|
|
94
|
+
"org_id": lambda n : setattr(self, 'org_id', n.get_object_value(AuditEventOut_org_id)),
|
|
95
|
+
"outcome": lambda n : setattr(self, 'outcome', n.get_str_value()),
|
|
96
|
+
"target_id": lambda n : setattr(self, 'target_id', n.get_object_value(AuditEventOut_target_id)),
|
|
97
|
+
"target_kind": lambda n : setattr(self, 'target_kind', n.get_object_value(AuditEventOut_target_kind)),
|
|
98
|
+
}
|
|
99
|
+
return fields
|
|
100
|
+
|
|
101
|
+
def serialize(self,writer: SerializationWriter) -> None:
|
|
102
|
+
"""
|
|
103
|
+
Serializes information the current object
|
|
104
|
+
param writer: Serialization writer to use to serialize this model
|
|
105
|
+
Returns: None
|
|
106
|
+
"""
|
|
107
|
+
if writer is None:
|
|
108
|
+
raise TypeError("writer cannot be null.")
|
|
109
|
+
writer.write_str_value("action", self.action)
|
|
110
|
+
writer.write_object_value("actor_ip", self.actor_ip)
|
|
111
|
+
writer.write_object_value("actor_token_id", self.actor_token_id)
|
|
112
|
+
writer.write_object_value("actor_user_agent", self.actor_user_agent)
|
|
113
|
+
writer.write_object_value("actor_user_id", self.actor_user_id)
|
|
114
|
+
writer.write_datetime_value("created_at", self.created_at)
|
|
115
|
+
writer.write_str_value("id", self.id)
|
|
116
|
+
writer.write_object_value("metadata", self.metadata)
|
|
117
|
+
writer.write_object_value("org_id", self.org_id)
|
|
118
|
+
writer.write_str_value("outcome", self.outcome)
|
|
119
|
+
writer.write_object_value("target_id", self.target_id)
|
|
120
|
+
writer.write_object_value("target_kind", self.target_kind)
|
|
121
|
+
writer.write_additional_data_value(self.additional_data)
|
|
122
|
+
|
|
123
|
+
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
from kiota_abstractions.serialization import ComposedTypeWrapper, Parsable, ParseNode, ParseNodeHelper, SerializationWriter
|
|
5
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
|
6
|
+
|
|
7
|
+
if TYPE_CHECKING:
|
|
8
|
+
from .audit_event_out_actor_ip_member1 import AuditEventOut_actor_ipMember1
|
|
9
|
+
|
|
10
|
+
@dataclass
|
|
11
|
+
class AuditEventOut_actor_ip(ComposedTypeWrapper, Parsable):
|
|
12
|
+
"""
|
|
13
|
+
Composed type wrapper for classes AuditEventOut_actor_ipMember1, str
|
|
14
|
+
"""
|
|
15
|
+
# Composed type representation for type AuditEventOut_actor_ipMember1
|
|
16
|
+
audit_event_out_actor_ip_member1: Optional[AuditEventOut_actor_ipMember1] = None
|
|
17
|
+
# Composed type representation for type str
|
|
18
|
+
string: Optional[str] = None
|
|
19
|
+
|
|
20
|
+
@staticmethod
|
|
21
|
+
def create_from_discriminator_value(parse_node: ParseNode) -> AuditEventOut_actor_ip:
|
|
22
|
+
"""
|
|
23
|
+
Creates a new instance of the appropriate class based on discriminator value
|
|
24
|
+
param parse_node: The parse node to use to read the discriminator value and create the object
|
|
25
|
+
Returns: AuditEventOut_actor_ip
|
|
26
|
+
"""
|
|
27
|
+
if parse_node is None:
|
|
28
|
+
raise TypeError("parse_node cannot be null.")
|
|
29
|
+
result = AuditEventOut_actor_ip()
|
|
30
|
+
if string_value := parse_node.get_str_value():
|
|
31
|
+
result.string = string_value
|
|
32
|
+
else:
|
|
33
|
+
from .audit_event_out_actor_ip_member1 import AuditEventOut_actor_ipMember1
|
|
34
|
+
|
|
35
|
+
result.audit_event_out_actor_ip_member1 = AuditEventOut_actor_ipMember1()
|
|
36
|
+
return result
|
|
37
|
+
|
|
38
|
+
def get_field_deserializers(self,) -> dict[str, Callable[[ParseNode], None]]:
|
|
39
|
+
"""
|
|
40
|
+
The deserialization information for the current model
|
|
41
|
+
Returns: dict[str, Callable[[ParseNode], None]]
|
|
42
|
+
"""
|
|
43
|
+
from .audit_event_out_actor_ip_member1 import AuditEventOut_actor_ipMember1
|
|
44
|
+
|
|
45
|
+
if self.audit_event_out_actor_ip_member1:
|
|
46
|
+
return ParseNodeHelper.merge_deserializers_for_intersection_wrapper(self.audit_event_out_actor_ip_member1)
|
|
47
|
+
return {}
|
|
48
|
+
|
|
49
|
+
def serialize(self,writer: SerializationWriter) -> None:
|
|
50
|
+
"""
|
|
51
|
+
Serializes information the current object
|
|
52
|
+
param writer: Serialization writer to use to serialize this model
|
|
53
|
+
Returns: None
|
|
54
|
+
"""
|
|
55
|
+
if writer is None:
|
|
56
|
+
raise TypeError("writer cannot be null.")
|
|
57
|
+
if self.string:
|
|
58
|
+
writer.write_str_value(None, self.string)
|
|
59
|
+
else:
|
|
60
|
+
writer.write_object_value(None, self.audit_event_out_actor_ip_member1)
|
|
61
|
+
|
|
62
|
+
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
from kiota_abstractions.serialization import AdditionalDataHolder, Parsable, ParseNode, SerializationWriter
|
|
5
|
+
from typing import Any, Optional, TYPE_CHECKING, Union
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class AuditEventOut_actor_ipMember1(AdditionalDataHolder, Parsable):
|
|
9
|
+
# Stores additional data not described in the OpenAPI description found when deserializing. Can be used for serialization as well.
|
|
10
|
+
additional_data: dict[str, Any] = field(default_factory=dict)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@staticmethod
|
|
14
|
+
def create_from_discriminator_value(parse_node: ParseNode) -> AuditEventOut_actor_ipMember1:
|
|
15
|
+
"""
|
|
16
|
+
Creates a new instance of the appropriate class based on discriminator value
|
|
17
|
+
param parse_node: The parse node to use to read the discriminator value and create the object
|
|
18
|
+
Returns: AuditEventOut_actor_ipMember1
|
|
19
|
+
"""
|
|
20
|
+
if parse_node is None:
|
|
21
|
+
raise TypeError("parse_node cannot be null.")
|
|
22
|
+
return AuditEventOut_actor_ipMember1()
|
|
23
|
+
|
|
24
|
+
def get_field_deserializers(self,) -> dict[str, Callable[[ParseNode], None]]:
|
|
25
|
+
"""
|
|
26
|
+
The deserialization information for the current model
|
|
27
|
+
Returns: dict[str, Callable[[ParseNode], None]]
|
|
28
|
+
"""
|
|
29
|
+
fields: dict[str, Callable[[Any], None]] = {
|
|
30
|
+
}
|
|
31
|
+
return fields
|
|
32
|
+
|
|
33
|
+
def serialize(self,writer: SerializationWriter) -> None:
|
|
34
|
+
"""
|
|
35
|
+
Serializes information the current object
|
|
36
|
+
param writer: Serialization writer to use to serialize this model
|
|
37
|
+
Returns: None
|
|
38
|
+
"""
|
|
39
|
+
if writer is None:
|
|
40
|
+
raise TypeError("writer cannot be null.")
|
|
41
|
+
writer.write_additional_data_value(self.additional_data)
|
|
42
|
+
|
|
43
|
+
|