opportify-sdk 0.1.0__py3-none-any.whl → 0.1.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of opportify-sdk might be problematic. Click here for more details.

Files changed (58) hide show
  1. {lib/v1/openapi_client → openapi_client}/__init__.py +6 -1
  2. {lib/v1/openapi_client → openapi_client}/api/email_insights_api.py +6 -3
  3. {lib/v1/openapi_client → openapi_client}/api/ip_insights_api.py +3 -2
  4. {lib/v1/openapi_client → openapi_client}/models/__init__.py +6 -1
  5. {lib/v1/openapi_client → openapi_client}/models/analyze_email200_response.py +8 -6
  6. openapi_client/models/analyze_email403_response.py +91 -0
  7. openapi_client/models/analyze_email403_response_error.py +137 -0
  8. {lib/v1/openapi_client → openapi_client}/models/analyze_ip200_response.py +3 -3
  9. openapi_client/models/invalidplan.py +89 -0
  10. openapi_client/models/invalidtoken.py +89 -0
  11. openapi_client/models/risk_report_email.py +91 -0
  12. openapi_client/models/risk_report_ip.py +89 -0
  13. {src → opportify_sdk}/ip_insights.py +1 -1
  14. opportify_sdk-0.1.3.dist-info/METADATA +115 -0
  15. opportify_sdk-0.1.3.dist-info/RECORD +53 -0
  16. {opportify_sdk-0.1.0.dist-info → opportify_sdk-0.1.3.dist-info}/WHEEL +1 -1
  17. opportify_sdk-0.1.3.dist-info/top_level.txt +2 -0
  18. lib/__init__.py +0 -0
  19. lib/v1/__init__.py +0 -0
  20. opportify_sdk-0.1.0.dist-info/METADATA +0 -16
  21. opportify_sdk-0.1.0.dist-info/RECORD +0 -49
  22. opportify_sdk-0.1.0.dist-info/top_level.txt +0 -2
  23. {lib/v1/openapi_client → openapi_client}/api/__init__.py +0 -0
  24. {lib/v1/openapi_client → openapi_client}/api_client.py +0 -0
  25. {lib/v1/openapi_client → openapi_client}/api_response.py +0 -0
  26. {lib/v1/openapi_client → openapi_client}/configuration.py +0 -0
  27. {lib/v1/openapi_client → openapi_client}/exceptions.py +0 -0
  28. {lib/v1/openapi_client → openapi_client}/models/abuse_contact.py +0 -0
  29. {lib/v1/openapi_client → openapi_client}/models/admin_contact.py +0 -0
  30. {lib/v1/openapi_client → openapi_client}/models/analyze_email400_response.py +0 -0
  31. {lib/v1/openapi_client → openapi_client}/models/analyze_email400_response_error.py +0 -0
  32. {lib/v1/openapi_client → openapi_client}/models/analyze_email500_response.py +0 -0
  33. {lib/v1/openapi_client → openapi_client}/models/analyze_email500_response_error.py +0 -0
  34. {lib/v1/openapi_client → openapi_client}/models/analyze_email_request.py +0 -0
  35. {lib/v1/openapi_client → openapi_client}/models/analyze_ip400_response.py +0 -0
  36. {lib/v1/openapi_client → openapi_client}/models/analyze_ip400_response_error.py +0 -0
  37. {lib/v1/openapi_client → openapi_client}/models/analyze_ip404_response.py +0 -0
  38. {lib/v1/openapi_client → openapi_client}/models/analyze_ip500_response.py +0 -0
  39. {lib/v1/openapi_client → openapi_client}/models/analyze_ip_request.py +0 -0
  40. {lib/v1/openapi_client → openapi_client}/models/asn.py +0 -0
  41. {lib/v1/openapi_client → openapi_client}/models/block_listed.py +0 -0
  42. {lib/v1/openapi_client → openapi_client}/models/email_dns.py +0 -0
  43. {lib/v1/openapi_client → openapi_client}/models/geo.py +0 -0
  44. {lib/v1/openapi_client → openapi_client}/models/internalerror.py +0 -0
  45. {lib/v1/openapi_client → openapi_client}/models/invalidemail.py +0 -0
  46. {lib/v1/openapi_client → openapi_client}/models/ipvalidationfailed.py +0 -0
  47. {lib/v1/openapi_client → openapi_client}/models/malformedrequest.py +0 -0
  48. {lib/v1/openapi_client → openapi_client}/models/malformedrequest1.py +0 -0
  49. {lib/v1/openapi_client → openapi_client}/models/notfound.py +0 -0
  50. {lib/v1/openapi_client → openapi_client}/models/organization.py +0 -0
  51. {lib/v1/openapi_client → openapi_client}/models/risk_report.py +0 -0
  52. {lib/v1/openapi_client → openapi_client}/models/tech_contact.py +0 -0
  53. {lib/v1/openapi_client → openapi_client}/models/trusted_provider.py +0 -0
  54. {lib/v1/openapi_client → openapi_client}/models/whois.py +0 -0
  55. {lib/v1/openapi_client → openapi_client}/py.typed +0 -0
  56. {lib/v1/openapi_client → openapi_client}/rest.py +0 -0
  57. {src → opportify_sdk}/__init__.py +0 -0
  58. {src → opportify_sdk}/email_insights.py +0 -0
@@ -0,0 +1,91 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Opportify Insights API
5
+
6
+ ## Overview The **Opportify Insights API** provides access to a powerful and up-to-date platform. With advanced data warehousing and AI-driven capabilities, this API is designed to empower your business to make informed, data-driven decisions and effectively assess potential risks. ### Base URL Use the following base URL for all API requests: ```plaintext https://api.opportify.ai/insights/v1/<service>/<endpoint> ``` ### Features - [**Email Insights:**](/docs/api-reference/email-insights) - Validate email syntax. - Identify email types (free, disposable, corporate or unknown). - Real time verifications: - Reachable: Confirms if the email domain has valid MX DNS records using DNS lookup. - Deliverable: Simulates an SMTP handshake to check if the email address exists and is deliverable. - Catch-All: Detects if the domain accepts all emails (catch-all configuration). - Intelligent Error Correction: Automatically corrects well-known misspelled email addresses. - Risk Report: Provides an AI-driven normalized score (200-1000) to evaluate email risk, using predefined thresholds. [Access Documentation >>](/docs/api-reference/email-insights) - [**IP Insights:**](/docs/api-reference/ip-insights) - Connection types: Detects connection types such as `wired`, `mobile`, `enterprise`, `satellite`, `VPN`, `cloud-provider`, `open-proxy`, or `Tor`. - Geo location: Delivers detailed insights such as country, city, timezone, language preferences, and additional location-based information to enhance regional understanding. - WHOIS: Provides main details including RIR, ASN, organization, and abuse/admin/technical contacts. - Trusted Provider Recognition: Identifies if the IP is part of a known trusted provider (e.g., ZTNA - Zero Trust Network Access). - Blocklist Reports: Retrieves up-to-date blocklist statuses, active reports, and the latest detections. - Risk Report: Delivers an AI-driven normalized score (200-1000) to evaluate IP risk, supported by predefined thresholds. [Access Documentation >>](/docs/api-reference/ip-insights) ### Authentication & Security - **API Key:** Access to the API requires an API key, which must be included in the request headers. Businesses can generate unlimited API keys directly from their account, offering flexibility and ease of use. - **ACL Rules:** Enhance security with Access Control Lists (ACL), allowing you to restrict API access from specific IP addresses or ranges. This feature provides an additional layer of protection by ensuring only authorized IPs can interact with the API. - **No Query Parameters:** As a precautionary measure, our API avoids the use of query parameters for all operations, including authentication and handling Personally Identifiable Information (PII). This approach minimizes security risks by preventing sensitive data from being exposed in access logs, browser history, cached URLs, debugging tools, or inadvertently shared URLs. All sensitive information is securely transmitted through headers or the request body.
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class RiskReportEmail(BaseModel):
26
+ """
27
+ ### Risk Level Determination This documentation outlines how the risk report is determined based on a `normalizedScore` generated by analyzing multiple email-related parameters against predefined risk factors (`baseAnalysis`). The risk report encapsulates the likelihood of various risk scenarios, enabling effective classification and prioritization of risks. The underlying analysis evaluates the provided email information against key risk factors, such as the likelihood of bounces, fraud detection signals, and email deliverability issues. These insights are used to generate a comprehensive risk report, which is then mapped to static risk levels for easier interpretation. --- > **IMPORTANT:** > The risk report model is not available in the free plan. To access this feature, you need to subscribe to a paid plan. --- #### How the Score is Generated The risk score (`normalizedScore`) is derived from a multivariate analysis of input parameters, comparing them against risk factors included in `baseAnalysis`. This process involves: ##### Key Features of the Model: 1. **Dynamic Scoring:** The model assigns weights to various risk factors, dynamically updating them based on training with new data. 2. **Constant Training:** The model is continuously retrained with the latest data to improve accuracy and adapt to evolving risk patterns. 3. **Scalability:** The model supports multiple features and their interactions, deriving a comprehensive and reliable risk score. The output score is normalized to a range of **200–1000** for easier interpretation and alignment with industry practices. --- #### Risk Level Thresholds The risk level is a static representation of the `normalizedScore`, categorized into five distinct levels: | **Risk Level** | **Score Range** | **Description** | |----------------|--------------------------|---------------------------------------------------------------------------------| | `highest` | `normalizedScore > 800` | Represents the most critical level of risk. Immediate attention is required. | | `high` | `600 < normalizedScore <= 800` | Indicates a high level of risk. Consider mitigation actions promptly. | | `medium` | `400 < normalizedScore <= 600` | Reflects a moderate level of risk. Monitoring and possible action advised. | | `low` | `300 < normalizedScore <= 400` | Denotes a low level of risk. Regular monitoring is sufficient. | | `lowest` | `normalizedScore <= 300` | The lowest level of risk. Risk is considered negligible or minimal. | --- #### Usage This risk level determination serves as a human-readable representation of the machine learning model's output. It enables: - **Risk Monitoring:** Identifying entities that require immediate attention. - **Action Prioritization:** Guiding mitigation efforts based on the severity of the risk. - **Decision-Making:** Providing clear thresholds for automated and manual workflows. --- #### Key Notes 1. **Dynamic Scoring, Static Levels:** - While the score is dynamically updated through a multivariate linear regression model, the risk levels remain static to maintain consistency and interpretability. 2. **Customizable Thresholds:** - The thresholds for the levels are configurable based on organizational needs or domain-specific requirements. 3. **Model Retraining:** - Regular updates to the model ensure that scores accurately reflect real-world risk trends, improving the reliability of level assignments. --- This approach combines the adaptability of multivariate linear regression with the simplicity of static thresholds, offering a robust framework for risk assessment and decision-making. --- ### Response Elements
28
+ """ # noqa: E501
29
+ score: Optional[StrictInt] = Field(default=None, description="Risk score normalized to a range of 200–1000.")
30
+ level: Optional[StrictStr] = Field(default=None, description="Static representation of the risk level.")
31
+ base_analysis: Optional[List[StrictStr]] = Field(default=None, description="Provide the breakdown of the predefined risk factors used in the analysis.", alias="baseAnalysis")
32
+ __properties: ClassVar[List[str]] = ["score", "level", "baseAnalysis"]
33
+
34
+ model_config = ConfigDict(
35
+ populate_by_name=True,
36
+ validate_assignment=True,
37
+ protected_namespaces=(),
38
+ )
39
+
40
+
41
+ def to_str(self) -> str:
42
+ """Returns the string representation of the model using alias"""
43
+ return pprint.pformat(self.model_dump(by_alias=True))
44
+
45
+ def to_json(self) -> str:
46
+ """Returns the JSON representation of the model using alias"""
47
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
48
+ return json.dumps(self.to_dict())
49
+
50
+ @classmethod
51
+ def from_json(cls, json_str: str) -> Optional[Self]:
52
+ """Create an instance of RiskReportEmail from a JSON string"""
53
+ return cls.from_dict(json.loads(json_str))
54
+
55
+ def to_dict(self) -> Dict[str, Any]:
56
+ """Return the dictionary representation of the model using alias.
57
+
58
+ This has the following differences from calling pydantic's
59
+ `self.model_dump(by_alias=True)`:
60
+
61
+ * `None` is only added to the output dict for nullable fields that
62
+ were set at model initialization. Other fields with value `None`
63
+ are ignored.
64
+ """
65
+ excluded_fields: Set[str] = set([
66
+ ])
67
+
68
+ _dict = self.model_dump(
69
+ by_alias=True,
70
+ exclude=excluded_fields,
71
+ exclude_none=True,
72
+ )
73
+ return _dict
74
+
75
+ @classmethod
76
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
77
+ """Create an instance of RiskReportEmail from a dict"""
78
+ if obj is None:
79
+ return None
80
+
81
+ if not isinstance(obj, dict):
82
+ return cls.model_validate(obj)
83
+
84
+ _obj = cls.model_validate({
85
+ "score": obj.get("score"),
86
+ "level": obj.get("level"),
87
+ "baseAnalysis": obj.get("baseAnalysis")
88
+ })
89
+ return _obj
90
+
91
+
@@ -0,0 +1,89 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Opportify Insights API
5
+
6
+ ## Overview The **Opportify Insights API** provides access to a powerful and up-to-date platform. With advanced data warehousing and AI-driven capabilities, this API is designed to empower your business to make informed, data-driven decisions and effectively assess potential risks. ### Base URL Use the following base URL for all API requests: ```plaintext https://api.opportify.ai/insights/v1/<service>/<endpoint> ``` ### Features - [**Email Insights:**](/docs/api-reference/email-insights) - Validate email syntax. - Identify email types (free, disposable, corporate or unknown). - Real time verifications: - Reachable: Confirms if the email domain has valid MX DNS records using DNS lookup. - Deliverable: Simulates an SMTP handshake to check if the email address exists and is deliverable. - Catch-All: Detects if the domain accepts all emails (catch-all configuration). - Intelligent Error Correction: Automatically corrects well-known misspelled email addresses. - Risk Report: Provides an AI-driven normalized score (200-1000) to evaluate email risk, using predefined thresholds. [Access Documentation >>](/docs/api-reference/email-insights) - [**IP Insights:**](/docs/api-reference/ip-insights) - Connection types: Detects connection types such as `wired`, `mobile`, `enterprise`, `satellite`, `VPN`, `cloud-provider`, `open-proxy`, or `Tor`. - Geo location: Delivers detailed insights such as country, city, timezone, language preferences, and additional location-based information to enhance regional understanding. - WHOIS: Provides main details including RIR, ASN, organization, and abuse/admin/technical contacts. - Trusted Provider Recognition: Identifies if the IP is part of a known trusted provider (e.g., ZTNA - Zero Trust Network Access). - Blocklist Reports: Retrieves up-to-date blocklist statuses, active reports, and the latest detections. - Risk Report: Delivers an AI-driven normalized score (200-1000) to evaluate IP risk, supported by predefined thresholds. [Access Documentation >>](/docs/api-reference/ip-insights) ### Authentication & Security - **API Key:** Access to the API requires an API key, which must be included in the request headers. Businesses can generate unlimited API keys directly from their account, offering flexibility and ease of use. - **ACL Rules:** Enhance security with Access Control Lists (ACL), allowing you to restrict API access from specific IP addresses or ranges. This feature provides an additional layer of protection by ensuring only authorized IPs can interact with the API. - **No Query Parameters:** As a precautionary measure, our API avoids the use of query parameters for all operations, including authentication and handling Personally Identifiable Information (PII). This approach minimizes security risks by preventing sensitive data from being exposed in access logs, browser history, cached URLs, debugging tools, or inadvertently shared URLs. All sensitive information is securely transmitted through headers or the request body.
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
21
+ from typing import Any, ClassVar, Dict, List, Optional
22
+ from typing import Optional, Set
23
+ from typing_extensions import Self
24
+
25
+ class RiskReportIp(BaseModel):
26
+ """
27
+ ### Risk Level Determination This documentation outlines how the risk level is determined based on a `normalizedScore` generated by a **multivariate linear regression model**. The risk level provides a static representation of thresholds to classify the severity of risk for an entity. --- > **IMPORTANT:** > The risk report model is not available in the free plan. To access this feature, you need to subscribe to a paid plan. --- #### How the Score is Generated The risk score (`normalizedScore`) is computed using a **multivariate linear regression model**, a machine learning approach that evaluates multiple input features to predict the risk score. ##### Key Features of the Model: 1. **Dynamic Scoring:** The model assigns weights to various risk factors, dynamically updating them based on training with new data. 2. **Constant Training:** The model is continuously retrained with the latest data to improve accuracy and adapt to evolving risk patterns. 3. **Scalability:** The model supports multiple features and their interactions, deriving a comprehensive and reliable risk score. The output score is normalized to a range of **200–1000** for easier interpretation and alignment with industry practices. --- #### Risk Level Thresholds The risk level is a static representation of the `normalizedScore`, categorized into five distinct levels: | **Risk Level** | **Score Range** | **Description** | |----------------|--------------------------|---------------------------------------------------------------------------------| | `highest` | `normalizedScore > 800` | Represents the most critical level of risk. Immediate attention is required. | | `high` | `600 < normalizedScore <= 800` | Indicates a high level of risk. Consider mitigation actions promptly. | | `medium` | `400 < normalizedScore <= 600` | Reflects a moderate level of risk. Monitoring and possible action advised. | | `low` | `300 < normalizedScore <= 400` | Denotes a low level of risk. Regular monitoring is sufficient. | | `lowest` | `normalizedScore <= 300` | The lowest level of risk. Risk is considered negligible or minimal. | --- #### Usage This risk level determination serves as a human-readable representation of the machine learning model's output. It enables: - **Risk Monitoring:** Identifying entities that require immediate attention. - **Action Prioritization:** Guiding mitigation efforts based on the severity of the risk. - **Decision-Making:** Providing clear thresholds for automated and manual workflows. --- #### Key Notes 1. **Dynamic Scoring, Static Levels:** - While the score is dynamically updated through a multivariate linear regression model, the risk levels remain static to maintain consistency and interpretability. 2. **Customizable Thresholds:** - The thresholds for the levels are configurable based on organizational needs or domain-specific requirements. 3. **Model Retraining:** - Regular updates to the model ensure that scores accurately reflect real-world risk trends, improving the reliability of level assignments. --- This approach combines the adaptability of multivariate linear regression with the simplicity of static thresholds, offering a robust framework for risk assessment and decision-making. --- ### Response Elements
28
+ """ # noqa: E501
29
+ score: Optional[StrictInt] = Field(default=None, description="Risk score normalized to a range of 200–1000.")
30
+ level: Optional[StrictStr] = Field(default=None, description="Static representation of the risk level.")
31
+ __properties: ClassVar[List[str]] = ["score", "level"]
32
+
33
+ model_config = ConfigDict(
34
+ populate_by_name=True,
35
+ validate_assignment=True,
36
+ protected_namespaces=(),
37
+ )
38
+
39
+
40
+ def to_str(self) -> str:
41
+ """Returns the string representation of the model using alias"""
42
+ return pprint.pformat(self.model_dump(by_alias=True))
43
+
44
+ def to_json(self) -> str:
45
+ """Returns the JSON representation of the model using alias"""
46
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
47
+ return json.dumps(self.to_dict())
48
+
49
+ @classmethod
50
+ def from_json(cls, json_str: str) -> Optional[Self]:
51
+ """Create an instance of RiskReportIp from a JSON string"""
52
+ return cls.from_dict(json.loads(json_str))
53
+
54
+ def to_dict(self) -> Dict[str, Any]:
55
+ """Return the dictionary representation of the model using alias.
56
+
57
+ This has the following differences from calling pydantic's
58
+ `self.model_dump(by_alias=True)`:
59
+
60
+ * `None` is only added to the output dict for nullable fields that
61
+ were set at model initialization. Other fields with value `None`
62
+ are ignored.
63
+ """
64
+ excluded_fields: Set[str] = set([
65
+ ])
66
+
67
+ _dict = self.model_dump(
68
+ by_alias=True,
69
+ exclude=excluded_fields,
70
+ exclude_none=True,
71
+ )
72
+ return _dict
73
+
74
+ @classmethod
75
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
76
+ """Create an instance of RiskReportIp from a dict"""
77
+ if obj is None:
78
+ return None
79
+
80
+ if not isinstance(obj, dict):
81
+ return cls.model_validate(obj)
82
+
83
+ _obj = cls.model_validate({
84
+ "score": obj.get("score"),
85
+ "level": obj.get("level")
86
+ })
87
+ return _obj
88
+
89
+
@@ -15,7 +15,7 @@ class IpInsights:
15
15
  """
16
16
  self.config = ApiConfiguration()
17
17
  self.config.api_key = {"opportifyToken": api_key}
18
- self.host = "https://api.opportify.com"
18
+ self.host = "https://api.opportify.ai"
19
19
  self.version = "v1"
20
20
  self.debug_mode = False
21
21
  self.api_instance = None
@@ -0,0 +1,115 @@
1
+ Metadata-Version: 2.4
2
+ Name: opportify_sdk
3
+ Version: 0.1.3
4
+ Summary: Opportify Insights API
5
+ Home-page: https://github.com/opportify/opportify-sdk-python
6
+ Author: Opportify & OpenAPI-Generator
7
+ Author-email:
8
+ Keywords: OpenAPI,OpenAPI-Generator,Opportify Insights API,Opportify
9
+ Description-Content-Type: text/markdown
10
+ Requires-Dist: urllib3<3.0.0,>=1.25.3
11
+ Requires-Dist: python-dateutil>=2.8.2
12
+ Requires-Dist: pydantic>=2
13
+ Requires-Dist: typing-extensions>=4.7.1
14
+ Dynamic: author
15
+ Dynamic: description
16
+ Dynamic: description-content-type
17
+ Dynamic: home-page
18
+ Dynamic: keywords
19
+ Dynamic: requires-dist
20
+ Dynamic: summary
21
+
22
+ # Opportify-SDK-Python
23
+
24
+ ## Overview
25
+
26
+ The **Opportify Insights API** provides access to a powerful and up-to-date platform. With advanced data warehousing and AI-driven capabilities, this API is designed to empower your business to make informed, data-driven decisions and effectively assess potential risks.
27
+
28
+ [Sign Up Free](https://www.opportify.ai)
29
+
30
+ ### Base URL
31
+ Use the following base URL for all API requests:
32
+
33
+ ```plaintext
34
+ https://api.opportify.ai/insights/v1/<service>/<endpoint>
35
+ ```
36
+
37
+ ## Requirements
38
+
39
+ Requires Python v3.8 or later
40
+
41
+ ## Getting Started
42
+
43
+ First, install Opportify SDK via PyPI manager:
44
+
45
+ ```
46
+ pip install opportify-sdk
47
+ ```
48
+
49
+ ### Calling Email Insights
50
+
51
+ ```python
52
+ from opportify_sdk import EmailInsights
53
+
54
+ # Initialize the wrapper with your API key
55
+ api_key = "<YOUR-API-KEY-HERE>"
56
+ email_insights = EmailInsights(api_key)
57
+
58
+ # Optional: Configure host, version, and debug mode
59
+ email_insights.set_version("v1")
60
+
61
+ # Define request parameters
62
+ params = {
63
+ "email": "<SOME-EMAIL-HERE>",
64
+ "enableAutoCorrection": True,
65
+ "enableAi": True
66
+ }
67
+
68
+ # Call the API
69
+ try:
70
+ result = email_insights.analyze(params)
71
+ print("Response:", result)
72
+ except Exception as e:
73
+ print(f"Error: {e}")
74
+ ```
75
+
76
+ ### Calling IP Insights
77
+
78
+ ```python
79
+
80
+ from opportify_sdk import IpInsights
81
+
82
+ # Initialize the wrapper with your API key
83
+ api_key = "<YOUR-API-KEY-HERE>"
84
+ ip_insights = IpInsights(api_key)
85
+
86
+ # Optional: Configure host, version, and debug mode
87
+ ip_insights.set_version("v1")
88
+
89
+ # Define request parameters
90
+ params = {
91
+ "ip": "<SOME-IP-HERE>",
92
+ "enableAi": True
93
+ }
94
+
95
+ # Call the API
96
+ try:
97
+ result = ip_insights.analyze(params)
98
+ print("Response:", result)
99
+ except Exception as e:
100
+ print(f"Error: {e}")
101
+ ```
102
+
103
+ ### Enable Debug Mode
104
+
105
+ ```python
106
+ ip_insights.set_version("v1").set_debug_mode(True)
107
+ email_insights.set_version("v1").set_debug_mode(True)
108
+ ```
109
+
110
+ ## About this package
111
+
112
+ This Python package is a customization of the base generated by:
113
+
114
+ - [OpenAPI Generator](https://openapi-generator.tech) project.
115
+
@@ -0,0 +1,53 @@
1
+ openapi_client/__init__.py,sha256=StzTZIaM5CNZPP5MDOf_TO1vkRkdS3tGsNv3_Qu3NQU,6356
2
+ openapi_client/api_client.py,sha256=v_S3upItmHMMZXNSWYBtFIy2SSjt_MLAOcXpMiBST8g,30433
3
+ openapi_client/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
4
+ openapi_client/configuration.py,sha256=8U7Zd4rziMXTXvviDquxlSdDgSuSmsttGYeGDNOkod0,21544
5
+ openapi_client/exceptions.py,sha256=tHCC6Ij9c8ScVmZyCL5thgYXpopuUG1NSpILlHI_-Sg,8938
6
+ openapi_client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ openapi_client/rest.py,sha256=QwKi4N39ZgYVtBPrXQzw8bkhpiZbfUUPuWhi44tMst0,12378
8
+ openapi_client/api/__init__.py,sha256=_2MpmNT7so7K9CyzP-_2Sd_1EU8-Gq10jtUKccY86-Q,176
9
+ openapi_client/api/email_insights_api.py,sha256=hLzQQ__3skAxZSElPD-hzNylWmRAEawcfPzecLSZNZs,20799
10
+ openapi_client/api/ip_insights_api.py,sha256=FpnXjak3cNO9zrRIoAVrHKOZ0g8qieFTabqKhMmzVC8,21921
11
+ openapi_client/models/__init__.py,sha256=MgeOgO8BXAbb_ZqEj1bXmQcEzLj5vz2g_QHpefnNvM0,5684
12
+ openapi_client/models/abuse_contact.py,sha256=MqF8oUU6hxU4vLXlC6ykcpJiZhjRw6EiJDfeDWYCBxQ,6560
13
+ openapi_client/models/admin_contact.py,sha256=HOmd_CnYyKtOPR-mGL3hbMZ8E5_TKlBlFgMVZOvfGH8,6560
14
+ openapi_client/models/analyze_email200_response.py,sha256=K_dG0wDv37iR4dmcRwUCshYlbnjT0JYIJpa81Z55ZeQ,8516
15
+ openapi_client/models/analyze_email400_response.py,sha256=BrhikNZYFE0L1SScOlmZKh1CQNsOWi8m8e1fOzG9nus,5843
16
+ openapi_client/models/analyze_email400_response_error.py,sha256=oxfixZuiMnwbqRwdDzO7q4MKhQgVyFwxjOKdXpVLc_E,8391
17
+ openapi_client/models/analyze_email403_response.py,sha256=u2mVjGG6jgQjqPL7UOeXo17DyJswvZucsckO0sF3gFY,5843
18
+ openapi_client/models/analyze_email403_response_error.py,sha256=hhu2Pe8evQ0yagEud6W5RwGgYG90x6Ky_D7qVBB3zZw,8306
19
+ openapi_client/models/analyze_email500_response.py,sha256=gAKw0QyVwBZdr52qCrSbRA8kdtBcIn-oW83hvK411j0,5843
20
+ openapi_client/models/analyze_email500_response_error.py,sha256=LuKvELP551F70uAKOnQ_0eVI9fK1V5RLdksgCMtTEwA,5615
21
+ openapi_client/models/analyze_email_request.py,sha256=yzu8AV6wBKWhbBUO7GtsCuKgX_KYJAg9c8bIWjMPJc4,6063
22
+ openapi_client/models/analyze_ip200_response.py,sha256=4Pz8nWAbPsBFLo6Ncwaqb2xfMPBsagf8VsmjF_PX_tM,9152
23
+ openapi_client/models/analyze_ip400_response.py,sha256=aLPWgDU-QbKLzTD1KzHna3VURVRfqwP5m8WM4GINZPM,5819
24
+ openapi_client/models/analyze_ip400_response_error.py,sha256=X2wjsiTtaSWmC-zeKYgwtlQ-N_onhB3Fv2pvFhsOWmg,8486
25
+ openapi_client/models/analyze_ip404_response.py,sha256=mzS98l1DlVKFCFaOmhBc9XjUA7DdGJSXDBmFuL8Yjyk,5748
26
+ openapi_client/models/analyze_ip500_response.py,sha256=FPgWlfRyaFWGNk4xmh6UBiG_Xiys-i7IMZOWu2HoCY8,5768
27
+ openapi_client/models/analyze_ip_request.py,sha256=SZHr8Gd0mRrziip0VH5bgPZu84JCXGKjTSOzO8iSczc,5741
28
+ openapi_client/models/asn.py,sha256=_PtsmGJCAogM2DryLp5SuIgKZ_5H4zkLQvBcYV8-F90,6237
29
+ openapi_client/models/block_listed.py,sha256=UK0LxB8cPQzr6RP18p1GfLiLyVNJqPdYYrJyuhQiwdU,6815
30
+ openapi_client/models/email_dns.py,sha256=0Ttu0-pEQke0lnwkA4Tq8ZKvED6nRn6abSGkPqVEa24,5546
31
+ openapi_client/models/geo.py,sha256=GtTV2s0pDguxBBCbkViNidTmFmRsxfMqMwbb0IWnYkQ,9879
32
+ openapi_client/models/internalerror.py,sha256=_LhOiY2kPKsN_WDU7tVuY65A9-mNiamedWqJddWKRZQ,5555
33
+ openapi_client/models/invalidemail.py,sha256=-ofiTmHw2O61p_hzzELf_wpa9zgi5FjV_Kc-duJFY-o,5551
34
+ openapi_client/models/invalidplan.py,sha256=uwgCaZ2MWv6fUkz2ptX8zivFz8gMLXVWzPjdi66Pi_U,5547
35
+ openapi_client/models/invalidtoken.py,sha256=YxplE1S-VDOol7_zEBcRzpS_G630QeqQPHNz20LvN8o,5551
36
+ openapi_client/models/ipvalidationfailed.py,sha256=Clmw3EqB48h6mfhUzNnWvgO5IzfLq03pMbtWfzxD8xo,5575
37
+ openapi_client/models/malformedrequest.py,sha256=gaOr0Bh_d_Fy0gstnQzurGUD6JAF_kk2fi7Y7PnitB0,5567
38
+ openapi_client/models/malformedrequest1.py,sha256=PZ1e26zin5yhpjwnsuht8XNIHweURLb3n1NwR8rTvV8,5571
39
+ openapi_client/models/notfound.py,sha256=HifW-VdCOp0mn5RQdeM6QVQR1kZc5PlENAik0b9SGDo,5535
40
+ openapi_client/models/organization.py,sha256=IcJr7vJXyKwE9VjlWwJh1PeRar3_gQ4sNkvniMSLQzk,7130
41
+ openapi_client/models/risk_report.py,sha256=ANg1NOURvS-2mXbU8lNHgAlTNuNUYw4NkF43TR5ujsc,9132
42
+ openapi_client/models/risk_report_email.py,sha256=Lz7DCiTIE4x1DCE5RsbdxlPB4yEwbDpA0RiK0zKh6lY,9789
43
+ openapi_client/models/risk_report_ip.py,sha256=ctLbSRt1llA5a0KI3nJVir4Kj0BoHcUd-OKM4QD9f78,9138
44
+ openapi_client/models/tech_contact.py,sha256=AF9myIFacYEMknGN_gGrqjRn8_mpiI7Y_fGhp1wHWpE,6549
45
+ openapi_client/models/trusted_provider.py,sha256=DI33v3eTc6fUhx5NqbjOE7ZpA2VcKbNLSV5MWqodGB0,6174
46
+ openapi_client/models/whois.py,sha256=Yoo9QsUHPMjo9nwSR_H8ZHMhP2fYNRug3jBk3Do6vcw,8833
47
+ opportify_sdk/__init__.py,sha256=b5dO5TZ0ac8L7meGstmpAzIWXS9jwPqV1EruY32dffk,139
48
+ opportify_sdk/email_insights.py,sha256=i4NaYLZiJfXeHaNRZz3V15q8nsgGMcC37iBG5AaDj-Q,3283
49
+ opportify_sdk/ip_insights.py,sha256=hJOAqrETps6J8J5Gb5BWeisDLsdQ4ndUH9namV4f0G0,3007
50
+ opportify_sdk-0.1.3.dist-info/METADATA,sha256=wjJ-x4MxXgqTL5WXo1Ej0JPPqvVkhA_VH-fmxXNzhV4,2606
51
+ opportify_sdk-0.1.3.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
52
+ opportify_sdk-0.1.3.dist-info/top_level.txt,sha256=90CufmKPfMOr0lxs06ndbpvXPdVbmArXAorIu2p-giU,29
53
+ opportify_sdk-0.1.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -0,0 +1,2 @@
1
+ openapi_client
2
+ opportify_sdk
lib/__init__.py DELETED
File without changes
lib/v1/__init__.py DELETED
File without changes
@@ -1,16 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: opportify_sdk
3
- Version: 0.1.0
4
- Summary: Opportify Insights API
5
- Home-page: https://github.com/opportify/opportify-sdk-python
6
- Author: Opportify & OpenAPI-Generator
7
- Author-email:
8
- Keywords: OpenAPI,OpenAPI-Generator,Opportify Insights API,Opportify
9
- Description-Content-Type: text/markdown
10
- Requires-Dist: urllib3<3.0.0,>=1.25.3
11
- Requires-Dist: python-dateutil>=2.8.2
12
- Requires-Dist: pydantic>=2
13
- Requires-Dist: typing-extensions>=4.7.1
14
-
15
- ## Overview The **Opportify Insights API** provides access to a powerful and up-to-date platform. With advanced data warehousing and AI-driven capabilities, this API is designed to empower your business to make informed, data-driven decisions and effectively assess potential risks. ### Base URL Use the following base URL for all API requests: &#x60;&#x60;&#x60;plaintext https://api.opportify.ai/insights/v1/&lt;service&gt;/&lt;endpoint&gt; &#x60;&#x60;&#x60; ### Features - [**Email Insights:**](/docs/api-reference/email-insights) - Validate email syntax. - Identify email types (free, disposable, corporate or unknown). - Real time verifications: - Reachable: Confirms if the email domain has valid MX DNS records using DNS lookup. - Deliverable: Simulates an SMTP handshake to check if the email address exists and is deliverable. - Catch-All: Detects if the domain accepts all emails (catch-all configuration). - Intelligent Error Correction: Automatically corrects well-known misspelled email addresses. - Risk Report: Provides an AI-driven normalized score (200-1000) to evaluate email risk, using predefined thresholds. [Access Documentation &gt;&gt;](/docs/api-reference/email-insights) - [**IP Insights:**](/docs/api-reference/ip-insights) - Connection types: Detects connection types such as &#x60;wired&#x60;, &#x60;mobile&#x60;, &#x60;enterprise&#x60;, &#x60;satellite&#x60;, &#x60;VPN&#x60;, &#x60;cloud-provider&#x60;, &#x60;open-proxy&#x60;, or &#x60;Tor&#x60;. - Geo location: Delivers detailed insights such as country, city, timezone, language preferences, and additional location-based information to enhance regional understanding. - WHOIS: Provides main details including RIR, ASN, organization, and abuse/admin/technical contacts. - Trusted Provider Recognition: Identifies if the IP is part of a known trusted provider (e.g., ZTNA - Zero Trust Network Access). - Blocklist Reports: Retrieves up-to-date blocklist statuses, active reports, and the latest detections. - Risk Report: Delivers an AI-driven normalized score (200-1000) to evaluate IP risk, supported by predefined thresholds. [Access Documentation &gt;&gt;](/docs/api-reference/ip-insights) ### Authentication &amp; Security - **API Key:** Access to the API requires an API key, which must be included in the request headers. Businesses can generate unlimited API keys directly from their account, offering flexibility and ease of use. - **ACL Rules:** Enhance security with Access Control Lists (ACL), allowing you to restrict API access from specific IP addresses or ranges. This feature provides an additional layer of protection by ensuring only authorized IPs can interact with the API. - **No Query Parameters:** As a precautionary measure, our API avoids the use of query parameters for all operations, including authentication and handling Personally Identifiable Information (PII). This approach minimizes security risks by preventing sensitive data from being exposed in access logs, browser history, cached URLs, debugging tools, or inadvertently shared URLs. All sensitive information is securely transmitted through headers or the request body.
16
-
@@ -1,49 +0,0 @@
1
- lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- lib/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- lib/v1/openapi_client/__init__.py,sha256=4YbyZsJjF4Ig1mWXt6fxS7uhdr0uDEQPZQ-xsbDIwDI,5986
4
- lib/v1/openapi_client/api_client.py,sha256=v_S3upItmHMMZXNSWYBtFIy2SSjt_MLAOcXpMiBST8g,30433
5
- lib/v1/openapi_client/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
6
- lib/v1/openapi_client/configuration.py,sha256=8U7Zd4rziMXTXvviDquxlSdDgSuSmsttGYeGDNOkod0,21544
7
- lib/v1/openapi_client/exceptions.py,sha256=tHCC6Ij9c8ScVmZyCL5thgYXpopuUG1NSpILlHI_-Sg,8938
8
- lib/v1/openapi_client/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- lib/v1/openapi_client/rest.py,sha256=QwKi4N39ZgYVtBPrXQzw8bkhpiZbfUUPuWhi44tMst0,12378
10
- lib/v1/openapi_client/api/__init__.py,sha256=_2MpmNT7so7K9CyzP-_2Sd_1EU8-Gq10jtUKccY86-Q,176
11
- lib/v1/openapi_client/api/email_insights_api.py,sha256=bbstLmF0CoBah5qxImN--ic1lBD1uMZ7jr0-ZpWUoAc,20667
12
- lib/v1/openapi_client/api/ip_insights_api.py,sha256=oCmkRBxVMaVBzrBsA6BoumRl7PvhlyMJla-xYPHMxww,21817
13
- lib/v1/openapi_client/models/__init__.py,sha256=9VT3hqjFqoCePDx2FhQ2qHjG4dIUbzc8VkBWgsrPtyc,5314
14
- lib/v1/openapi_client/models/abuse_contact.py,sha256=MqF8oUU6hxU4vLXlC6ykcpJiZhjRw6EiJDfeDWYCBxQ,6560
15
- lib/v1/openapi_client/models/admin_contact.py,sha256=HOmd_CnYyKtOPR-mGL3hbMZ8E5_TKlBlFgMVZOvfGH8,6560
16
- lib/v1/openapi_client/models/analyze_email200_response.py,sha256=0YCuUfjKTB_J7FPCHeiPDG-bK5NMf-U-qFvGtQG6h-c,8043
17
- lib/v1/openapi_client/models/analyze_email400_response.py,sha256=BrhikNZYFE0L1SScOlmZKh1CQNsOWi8m8e1fOzG9nus,5843
18
- lib/v1/openapi_client/models/analyze_email400_response_error.py,sha256=oxfixZuiMnwbqRwdDzO7q4MKhQgVyFwxjOKdXpVLc_E,8391
19
- lib/v1/openapi_client/models/analyze_email500_response.py,sha256=gAKw0QyVwBZdr52qCrSbRA8kdtBcIn-oW83hvK411j0,5843
20
- lib/v1/openapi_client/models/analyze_email500_response_error.py,sha256=LuKvELP551F70uAKOnQ_0eVI9fK1V5RLdksgCMtTEwA,5615
21
- lib/v1/openapi_client/models/analyze_email_request.py,sha256=yzu8AV6wBKWhbBUO7GtsCuKgX_KYJAg9c8bIWjMPJc4,6063
22
- lib/v1/openapi_client/models/analyze_ip200_response.py,sha256=_8uU_YPLrwTc-Mth3keN7TlWkm7jCiIYi2i1UHzWySk,9143
23
- lib/v1/openapi_client/models/analyze_ip400_response.py,sha256=aLPWgDU-QbKLzTD1KzHna3VURVRfqwP5m8WM4GINZPM,5819
24
- lib/v1/openapi_client/models/analyze_ip400_response_error.py,sha256=X2wjsiTtaSWmC-zeKYgwtlQ-N_onhB3Fv2pvFhsOWmg,8486
25
- lib/v1/openapi_client/models/analyze_ip404_response.py,sha256=mzS98l1DlVKFCFaOmhBc9XjUA7DdGJSXDBmFuL8Yjyk,5748
26
- lib/v1/openapi_client/models/analyze_ip500_response.py,sha256=FPgWlfRyaFWGNk4xmh6UBiG_Xiys-i7IMZOWu2HoCY8,5768
27
- lib/v1/openapi_client/models/analyze_ip_request.py,sha256=SZHr8Gd0mRrziip0VH5bgPZu84JCXGKjTSOzO8iSczc,5741
28
- lib/v1/openapi_client/models/asn.py,sha256=_PtsmGJCAogM2DryLp5SuIgKZ_5H4zkLQvBcYV8-F90,6237
29
- lib/v1/openapi_client/models/block_listed.py,sha256=UK0LxB8cPQzr6RP18p1GfLiLyVNJqPdYYrJyuhQiwdU,6815
30
- lib/v1/openapi_client/models/email_dns.py,sha256=0Ttu0-pEQke0lnwkA4Tq8ZKvED6nRn6abSGkPqVEa24,5546
31
- lib/v1/openapi_client/models/geo.py,sha256=GtTV2s0pDguxBBCbkViNidTmFmRsxfMqMwbb0IWnYkQ,9879
32
- lib/v1/openapi_client/models/internalerror.py,sha256=_LhOiY2kPKsN_WDU7tVuY65A9-mNiamedWqJddWKRZQ,5555
33
- lib/v1/openapi_client/models/invalidemail.py,sha256=-ofiTmHw2O61p_hzzELf_wpa9zgi5FjV_Kc-duJFY-o,5551
34
- lib/v1/openapi_client/models/ipvalidationfailed.py,sha256=Clmw3EqB48h6mfhUzNnWvgO5IzfLq03pMbtWfzxD8xo,5575
35
- lib/v1/openapi_client/models/malformedrequest.py,sha256=gaOr0Bh_d_Fy0gstnQzurGUD6JAF_kk2fi7Y7PnitB0,5567
36
- lib/v1/openapi_client/models/malformedrequest1.py,sha256=PZ1e26zin5yhpjwnsuht8XNIHweURLb3n1NwR8rTvV8,5571
37
- lib/v1/openapi_client/models/notfound.py,sha256=HifW-VdCOp0mn5RQdeM6QVQR1kZc5PlENAik0b9SGDo,5535
38
- lib/v1/openapi_client/models/organization.py,sha256=IcJr7vJXyKwE9VjlWwJh1PeRar3_gQ4sNkvniMSLQzk,7130
39
- lib/v1/openapi_client/models/risk_report.py,sha256=ANg1NOURvS-2mXbU8lNHgAlTNuNUYw4NkF43TR5ujsc,9132
40
- lib/v1/openapi_client/models/tech_contact.py,sha256=AF9myIFacYEMknGN_gGrqjRn8_mpiI7Y_fGhp1wHWpE,6549
41
- lib/v1/openapi_client/models/trusted_provider.py,sha256=DI33v3eTc6fUhx5NqbjOE7ZpA2VcKbNLSV5MWqodGB0,6174
42
- lib/v1/openapi_client/models/whois.py,sha256=Yoo9QsUHPMjo9nwSR_H8ZHMhP2fYNRug3jBk3Do6vcw,8833
43
- src/__init__.py,sha256=b5dO5TZ0ac8L7meGstmpAzIWXS9jwPqV1EruY32dffk,139
44
- src/email_insights.py,sha256=i4NaYLZiJfXeHaNRZz3V15q8nsgGMcC37iBG5AaDj-Q,3283
45
- src/ip_insights.py,sha256=yaydXslmi5e_cSFCniJTFCWazE1Zw4K-ZlXiLxGbfkU,3008
46
- opportify_sdk-0.1.0.dist-info/METADATA,sha256=u63zsg5SzWamAFAVQnmywviy90LXju2_ABnbeBT1hrU,3661
47
- opportify_sdk-0.1.0.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
48
- opportify_sdk-0.1.0.dist-info/top_level.txt,sha256=4zVviOxxwoucHwO4Z7OzyNBMPn7vZjaTdyfvDO-OZfg,8
49
- opportify_sdk-0.1.0.dist-info/RECORD,,
@@ -1,2 +0,0 @@
1
- lib
2
- src
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes