dhisana 0.0.1.dev245__tar.gz → 0.0.1.dev247__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.
Files changed (121) hide show
  1. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/PKG-INFO +1 -1
  2. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/setup.py +1 -1
  3. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/schemas/sales.py +1 -7
  4. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/apollo_tools.py +49 -39
  5. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana.egg-info/PKG-INFO +1 -1
  6. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/README.md +0 -0
  7. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/pyproject.toml +0 -0
  8. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/setup.cfg +0 -0
  9. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/__init__.py +0 -0
  10. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/cli/__init__.py +0 -0
  11. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/cli/cli.py +0 -0
  12. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/cli/datasets.py +0 -0
  13. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/cli/models.py +0 -0
  14. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/cli/predictions.py +0 -0
  15. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/schemas/__init__.py +0 -0
  16. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/schemas/common.py +0 -0
  17. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/ui/__init__.py +0 -0
  18. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/ui/components.py +0 -0
  19. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/__init__.py +0 -0
  20. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/add_mapping.py +0 -0
  21. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/agent_tools.py +0 -0
  22. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/assistant_tool_tag.py +0 -0
  23. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/built_with_api_tools.py +0 -0
  24. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/cache_output_tools.py +0 -0
  25. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/cache_output_tools_local.py +0 -0
  26. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/check_email_validity_tools.py +0 -0
  27. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/check_for_intent_signal.py +0 -0
  28. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/check_linkedin_url_validity.py +0 -0
  29. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/clay_tools.py +0 -0
  30. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/clean_properties.py +0 -0
  31. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/company_utils.py +0 -0
  32. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/compose_salesnav_query.py +0 -0
  33. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/compose_search_query.py +0 -0
  34. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/compose_three_step_workflow.py +0 -0
  35. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/composite_tools.py +0 -0
  36. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/dataframe_tools.py +0 -0
  37. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/domain_parser.py +0 -0
  38. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/email_body_utils.py +0 -0
  39. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/email_parse_helpers.py +0 -0
  40. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/email_provider.py +0 -0
  41. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/enrich_lead_information.py +0 -0
  42. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/extract_email_content_for_llm.py +0 -0
  43. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/fetch_openai_config.py +0 -0
  44. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/field_validators.py +0 -0
  45. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/g2_tools.py +0 -0
  46. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/generate_content.py +0 -0
  47. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/generate_custom_message.py +0 -0
  48. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/generate_email.py +0 -0
  49. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/generate_email_response.py +0 -0
  50. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/generate_flow.py +0 -0
  51. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/generate_leads_salesnav.py +0 -0
  52. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/generate_linkedin_connect_message.py +0 -0
  53. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/generate_linkedin_response_message.py +0 -0
  54. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/generate_structured_output_internal.py +0 -0
  55. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/google_custom_search.py +0 -0
  56. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/google_oauth_tools.py +0 -0
  57. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/google_workspace_tools.py +0 -0
  58. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/hubspot_clearbit.py +0 -0
  59. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/hubspot_crm_tools.py +0 -0
  60. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/instantly_tools.py +0 -0
  61. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/linkedin_crawler.py +0 -0
  62. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/lusha_tools.py +0 -0
  63. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/mailgun_tools.py +0 -0
  64. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/mailreach_tools.py +0 -0
  65. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/microsoft365_tools.py +0 -0
  66. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/openai_assistant_and_file_utils.py +0 -0
  67. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/openai_helpers.py +0 -0
  68. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/openapi_spec_to_tools.py +0 -0
  69. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/openapi_tool/__init__.py +0 -0
  70. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/openapi_tool/api_models.py +0 -0
  71. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/openapi_tool/convert_openai_spec_to_tool.py +0 -0
  72. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/openapi_tool/openapi_tool.py +0 -0
  73. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/parse_linkedin_messages_txt.py +0 -0
  74. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/profile.py +0 -0
  75. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/proxy_curl_tools.py +0 -0
  76. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/proxycurl_search_leads.py +0 -0
  77. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/python_function_to_tools.py +0 -0
  78. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/research_lead.py +0 -0
  79. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/sales_navigator_crawler.py +0 -0
  80. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/salesforce_crm_tools.py +0 -0
  81. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/search_router.py +0 -0
  82. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/search_router_jobs.py +0 -0
  83. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/sendgrid_tools.py +0 -0
  84. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/serarch_router_local_business.py +0 -0
  85. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/serpapi_additional_tools.py +0 -0
  86. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/serpapi_google_jobs.py +0 -0
  87. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/serpapi_google_search.py +0 -0
  88. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/serpapi_local_business_search.py +0 -0
  89. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/serpapi_search_tools.py +0 -0
  90. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/serperdev_google_jobs.py +0 -0
  91. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/serperdev_local_business.py +0 -0
  92. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/serperdev_search.py +0 -0
  93. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/smtp_email_tools.py +0 -0
  94. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/test_connect.py +0 -0
  95. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/trasform_json.py +0 -0
  96. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/web_download_parse_tools.py +0 -0
  97. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/workflow_code_model.py +0 -0
  98. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/utils/zoominfo_tools.py +0 -0
  99. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/workflow/__init__.py +0 -0
  100. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/workflow/agent.py +0 -0
  101. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/workflow/flow.py +0 -0
  102. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/workflow/task.py +0 -0
  103. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana/workflow/test.py +0 -0
  104. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana.egg-info/SOURCES.txt +0 -0
  105. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana.egg-info/dependency_links.txt +0 -0
  106. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana.egg-info/entry_points.txt +0 -0
  107. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana.egg-info/requires.txt +0 -0
  108. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/src/dhisana.egg-info/top_level.txt +0 -0
  109. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_agent_tools.py +0 -0
  110. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_apollo_company_search.py +0 -0
  111. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_apollo_lead_search.py +0 -0
  112. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_connectivity.py +0 -0
  113. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_email_body_utils.py +0 -0
  114. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_google_document.py +0 -0
  115. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_hubspot_call_logs.py +0 -0
  116. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_linkedin_serper.py +0 -0
  117. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_mailreach.py +0 -0
  118. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_mcp_connectivity.py +0 -0
  119. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_proxycurl_get_company_search_id.py +0 -0
  120. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_proxycurl_job_count.py +0 -0
  121. {dhisana-0.0.1.dev245 → dhisana-0.0.1.dev247}/tests/test_structured_output_with_mcp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dhisana
3
- Version: 0.0.1.dev245
3
+ Version: 0.0.1.dev247
4
4
  Summary: A Python SDK for Dhisana AI Platform
5
5
  Home-page: https://github.com/dhisana-ai/dhisana-python-sdk
6
6
  Author: Admin
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name='dhisana',
5
- version='0.0.1-dev245',
5
+ version='0.0.1-dev247',
6
6
  description='A Python SDK for Dhisana AI Platform',
7
7
  author='Admin',
8
8
  author_email='contact@dhisana.ai',
@@ -754,13 +754,7 @@ class LeadsQueryFilters(BaseModel):
754
754
  # CHANGED: Renamed to be more descriptive
755
755
  company_domains: Optional[List[str]] = Field(
756
756
  default=None,
757
- description="Domains of the person's employer (e.g., ['microsoft.com']). Maps to q_organization_domains."
758
- )
759
-
760
- # NEW: Exclude specific company domains from search results
761
- exclude_company_domains: Optional[List[str]] = Field(
762
- default=None,
763
- description="Domains of companies to exclude from results (e.g., ['competitor.com']). Maps to organization_not_domains."
757
+ description="Domains of the person's employer (e.g., ['apollo.io', 'microsoft.com']). Maps to q_organization_domains_list in Apollo API. Accepts up to 1,000 domains. Do not include www. or @ symbol."
764
758
  )
765
759
 
766
760
  # CHANGED: Renamed to be more descriptive
@@ -549,8 +549,7 @@ async def search_leads_with_apollo(
549
549
  "currentlyUsingAnyOfTechnologyUids": "currently_using_any_of_technology_uids",
550
550
  "organizationIndustryTagIds": "organization_industry_tag_ids",
551
551
  "notOrganizationIds": "not_organization_ids",
552
- "qOrganizationDomains": "q_organization_domains",
553
- "organizationNotDomains": "organization_not_domains",
552
+ "qOrganizationDomainsList": "q_organization_domains_list",
554
553
  }
555
554
 
556
555
  for raw_key, raw_value_list in query_params.items():
@@ -608,8 +607,7 @@ async def search_leads_with_apollo(
608
607
  "person_titles",
609
608
  "person_seniorities",
610
609
  "organization_locations",
611
- "q_organization_domains",
612
- "organization_not_domains",
610
+ "q_organization_domains_list",
613
611
  "contact_email_status",
614
612
  "organization_ids",
615
613
  "organization_num_employees_ranges",
@@ -634,17 +632,28 @@ async def search_leads_with_apollo(
634
632
  # -----------------------------------
635
633
  else:
636
634
  dynamic_payload = {
637
- "person_titles": query.person_current_titles or [],
638
- "person_locations": query.person_locations or [],
639
- "search_signal_ids": query.filter_by_signals or [],
640
- "q_keywords": query.search_keywords or "",
641
- "organization_num_employees_ranges": (
642
- query.organization_num_employees_ranges
643
- or [f"{query.min_employees_in_organization or 1},{query.max_employees_in_organization or 1000}"]
644
- ),
645
635
  "page": 1,
646
636
  "per_page": min(max_items, 100),
647
637
  }
638
+
639
+ # Only add fields if they have values (don't pass empty defaults)
640
+ if query.person_current_titles:
641
+ dynamic_payload["person_titles"] = query.person_current_titles
642
+ if query.person_locations:
643
+ dynamic_payload["person_locations"] = query.person_locations
644
+ if query.filter_by_signals:
645
+ dynamic_payload["search_signal_ids"] = query.filter_by_signals
646
+ if query.search_keywords:
647
+ dynamic_payload["q_keywords"] = query.search_keywords
648
+
649
+ # Only add employee ranges if explicitly provided
650
+ if query.organization_num_employees_ranges:
651
+ dynamic_payload["organization_num_employees_ranges"] = query.organization_num_employees_ranges
652
+ elif query.min_employees_in_organization is not None or query.max_employees_in_organization is not None:
653
+ min_emp = query.min_employees_in_organization or 1
654
+ max_emp = query.max_employees_in_organization or 1000000
655
+ dynamic_payload["organization_num_employees_ranges"] = [f"{min_emp},{max_emp}"]
656
+
648
657
  if query.job_openings_with_titles:
649
658
  dynamic_payload["q_organization_job_titles"] = query.job_openings_with_titles
650
659
  if query.latest_funding_stages:
@@ -657,10 +666,7 @@ async def search_leads_with_apollo(
657
666
  dynamic_payload["person_seniorities"] = query.person_seniorities
658
667
  # Add company domains to include in search
659
668
  if query.company_domains:
660
- dynamic_payload["q_organization_domains"] = query.company_domains
661
- # Add company domains to exclude from search
662
- if query.exclude_company_domains:
663
- dynamic_payload["organization_not_domains"] = query.exclude_company_domains
669
+ dynamic_payload["q_organization_domains_list"] = query.company_domains
664
670
 
665
671
  # -----------------------------
666
672
  # C) Fetch multiple pages
@@ -778,8 +784,7 @@ async def search_leads_with_apollo_page(
778
784
  "currentlyUsingAnyOfTechnologyUids": "currently_using_any_of_technology_uids",
779
785
  "organizationIndustryTagIds": "organization_industry_tag_ids",
780
786
  "notOrganizationIds": "not_organization_ids",
781
- "qOrganizationDomains": "q_organization_domains",
782
- "organizationNotDomains": "organization_not_domains",
787
+ "qOrganizationDomainsList": "q_organization_domains_list",
783
788
  }
784
789
 
785
790
  for raw_key, raw_value_list in query_params.items():
@@ -822,8 +827,7 @@ async def search_leads_with_apollo_page(
822
827
  "person_titles",
823
828
  "person_seniorities",
824
829
  "organization_locations",
825
- "q_organization_domains",
826
- "organization_not_domains",
830
+ "q_organization_domains_list",
827
831
  "contact_email_status",
828
832
  "organization_ids",
829
833
  "organization_num_employees_ranges",
@@ -843,16 +847,26 @@ async def search_leads_with_apollo_page(
843
847
  # B) No example_url -> build from `query`
844
848
  # -----------------------------------
845
849
  else:
846
- dynamic_payload = {
847
- "person_titles": query.person_current_titles or [],
848
- "person_locations": query.person_locations or [],
849
- "search_signal_ids": query.filter_by_signals or [],
850
- "q_keywords": query.search_keywords or "",
851
- "organization_num_employees_ranges": (
852
- query.organization_num_employees_ranges
853
- or [f"{query.min_employees_in_organization or 1},{query.max_employees_in_organization or 1000}"]
854
- ),
855
- }
850
+ dynamic_payload = {}
851
+
852
+ # Only add fields if they have values (don't pass empty defaults)
853
+ if query.person_current_titles:
854
+ dynamic_payload["person_titles"] = query.person_current_titles
855
+ if query.person_locations:
856
+ dynamic_payload["person_locations"] = query.person_locations
857
+ if query.filter_by_signals:
858
+ dynamic_payload["search_signal_ids"] = query.filter_by_signals
859
+ if query.search_keywords:
860
+ dynamic_payload["q_keywords"] = query.search_keywords
861
+
862
+ # Only add employee ranges if explicitly provided
863
+ if query.organization_num_employees_ranges:
864
+ dynamic_payload["organization_num_employees_ranges"] = query.organization_num_employees_ranges
865
+ elif query.min_employees_in_organization is not None or query.max_employees_in_organization is not None:
866
+ min_emp = query.min_employees_in_organization or 1
867
+ max_emp = query.max_employees_in_organization or 1000000
868
+ dynamic_payload["organization_num_employees_ranges"] = [f"{min_emp},{max_emp}"]
869
+
856
870
  if query.job_openings_with_titles:
857
871
  dynamic_payload["q_organization_job_titles"] = query.job_openings_with_titles
858
872
  if query.latest_funding_stages:
@@ -867,13 +881,9 @@ async def search_leads_with_apollo_page(
867
881
  if query.q_not_organization_keyword_tags:
868
882
  dynamic_payload["q_not_organization_keyword_tags"] = query.q_not_organization_keyword_tags
869
883
 
870
- # Add company domains to include in search
884
+ # Add company domains to include in search (Apollo API: q_organization_domains_list[])
871
885
  if query.company_domains:
872
- dynamic_payload["q_organization_domains"] = query.company_domains
873
-
874
- # Add company domains to exclude from search
875
- if query.exclude_company_domains:
876
- dynamic_payload["organization_not_domains"] = query.exclude_company_domains
886
+ dynamic_payload["q_organization_domains_list"] = query.company_domains
877
887
 
878
888
  page_payload = dict(dynamic_payload)
879
889
  page_payload["page"] = page
@@ -1390,7 +1400,7 @@ async def search_companies_with_apollo_page(
1390
1400
  "organizationIndustries": "organization_industries",
1391
1401
  "organizationIndustryTagIds": "organization_industry_tag_ids",
1392
1402
  "qKeywords": "q_keywords",
1393
- "qOrganizationDomains": "q_organization_domains",
1403
+ "qOrganizationDomainsList": "q_organization_domains_list",
1394
1404
  "sortAscending": "sort_ascending",
1395
1405
  "sortByField": "sort_by_field",
1396
1406
  "organizationLatestFundingStageCd": "organization_latest_funding_stage_cd",
@@ -1454,7 +1464,7 @@ async def search_companies_with_apollo_page(
1454
1464
  "organization_locations",
1455
1465
  "organization_industries",
1456
1466
  "organization_industry_tag_ids",
1457
- "q_organization_domains",
1467
+ "q_organization_domains_list",
1458
1468
  "q_organization_keyword_tags",
1459
1469
  "organization_ids",
1460
1470
  "not_organization_ids",
@@ -1509,7 +1519,7 @@ async def search_companies_with_apollo_page(
1509
1519
  dynamic_payload["q_not_organization_keyword_tags"] = query.q_not_organization_keyword_tags
1510
1520
 
1511
1521
  if query.q_organization_domains:
1512
- dynamic_payload["q_organization_domains"] = query.q_organization_domains
1522
+ dynamic_payload["q_organization_domains_list"] = query.q_organization_domains
1513
1523
  if query.revenue_range_min is not None:
1514
1524
  dynamic_payload["revenue_range_min"] = query.revenue_range_min
1515
1525
  if query.revenue_range_max is not None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dhisana
3
- Version: 0.0.1.dev245
3
+ Version: 0.0.1.dev247
4
4
  Summary: A Python SDK for Dhisana AI Platform
5
5
  Home-page: https://github.com/dhisana-ai/dhisana-python-sdk
6
6
  Author: Admin
File without changes
File without changes