Opportify Insights API
Project description
Opportify-SDK-Python
Table of Contents
- Overview
- Requirements
- Getting Started
- Batch Analysis (Email & IP)
- Batch Export Jobs
- Enabling Debug Mode
- Handling Errors
- About this package
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:
https://api.opportify.ai/insights/v1/<service>/<endpoint>
Requirements
Requires Python v3.8 or later
Getting Started
First, install Opportify via the pip package manager:
pip install opportify-sdk
Calling Email Insights
from opportify_sdk import EmailInsights
email_insights = EmailInsights("YOUR-API-KEY-HERE")
params = {
"email": "test@gmial.com", # *gmial* - just an example to be auto-corrected
"enableAi": True,
"enableAutoCorrection": True,
"enableDomainEnrichment": True # Optional: include domain enrichment block
}
result = email_insights.analyze(params)
Calling IP Insights
from opportify_sdk import IpInsights
ip_insights = IpInsights("<YOUR-KEY-HERE>")
params = {
"ip": "3.1.122.82",
"enableAi": True
}
result = ip_insights.analyze(params)
Batch Analysis (Email & IP)
You can submit multiple emails or IPs in a single request. Batch jobs are processed asynchronously; the response returns a job identifier (job_id) you can poll for status.
1. Batch Email Analysis (JSON)
from opportify_sdk import EmailInsights
email_insights = EmailInsights("<YOUR-KEY-HERE>")
params = {
'emails': [
'one@example.com',
'two@example.org'
],
'name': 'Customer Email Validation', # Optional: descriptive name for the job
'enableAi': True,
'enableAutoCorrection': True
}
# Default content type is application/json
batch = email_insights.batch_analyze(params)
# Optional: poll status later
status = email_insights.get_batch_status(batch['job_id'])
2. Batch Email Analysis (Plain Text)
Provide one email per line and set the content type to text/plain.
content = "one@example.com\nTwo.User@example.org" # newline-delimited emails
batch = email_insights.batch_analyze({'text': content}, 'text/plain')
status = email_insights.get_batch_status(batch['job_id'])
3. Batch Email Analysis (File Upload)
Supply a .csv (one email per row; header optional) via batch_analyze_file(). A .csv triggers multipart/form-data; other extensions fall back to text/plain (newline-delimited body).
batch = email_insights.batch_analyze_file('emails.csv', {
'name': 'Monthly Email Cleanup', # Optional: descriptive name for the job
'enableAi': True,
'enableAutoCorrection': True
})
status = email_insights.get_batch_status(batch['job_id'])
4. Batch IP Analysis (JSON)
from opportify_sdk import IpInsights
ip_insights = IpInsights("<YOUR-KEY-HERE>")
params = {
'ips': [
'1.1.1.1',
'8.8.8.8'
],
'name': 'Network Security Scan', # Optional: descriptive name for the job
'enableAi': True
}
batch = ip_insights.batch_analyze(params) # application/json
status = ip_insights.get_batch_status(batch['job_id'])
5. Batch IP Analysis (Plain Text)
content = "1.1.1.1\n8.8.8.8" # newline-delimited IPs
batch = ip_insights.batch_analyze({'text': content}, 'text/plain')
status = ip_insights.get_batch_status(batch['job_id'])
6. Batch IP Analysis (File Upload)
batch = ip_insights.batch_analyze_file('ips.csv', {
'name': 'Firewall IP Assessment', # Optional: descriptive name for the job
'enableAi': True
})
status = ip_insights.get_batch_status(batch['job_id'])
Convenience & Notes
batch_analyze_file()auto-selects content type:.csv->multipart/form-data; otherwisetext/plain.- For
text/plain, pass newline-delimited values via thetextkey. - For
multipart/form-data, pass a readable file path via thefilekey (handled internally bybatch_analyze_file()). - The
nameparameter is optional for all batch operations and helps with job identification and tracking. enableAutoCorrectionapplies only to Email Insights.- Always wrap calls in a try-except (see Error Handling) to capture API errors.
- Polling cadence depends on payload size; a short delay (1–3s) between status checks is recommended.
Batch Export Jobs
Use batch exports to materialize filtered results from completed jobs. Exports run asynchronously and expose polling helpers similar to batch status checks.
Email Batch Exports
email_insights = EmailInsights('<YOUR-KEY-HERE>')
# Trigger a new export for a completed batch job
export = email_insights.create_batch_export('job-uuid-here', {
'exportType': 'csv',
'columns': [
'emailAddress',
'emailProvider',
'riskReport.score',
'isDeliverable'
],
'filters': {
'isDeliverable': 'true',
'riskReport.score': {'min': 400}
}
})
# Poll until the export is ready
status = email_insights.get_batch_export_status('job-uuid-here', export['export_id'])
if status['status'] == 'COMPLETED':
# Use status['download_url'] for the pre-signed file link
print(f"Download: {status['download_url']}")
IP Batch Exports
ip_insights = IpInsights('<YOUR-KEY-HERE>')
export = ip_insights.create_batch_export('job-uuid-here', {
'exportType': 'json',
'columns': [
'result.ipAddress',
'result.connectionType',
'result.riskReport.score'
],
'filters': {
'result.riskReport.level': ['low', 'medium']
}
})
status = ip_insights.get_batch_export_status('job-uuid-here', export['export_id'])
if status['status'] == 'COMPLETED':
# Use status['download_url'] to retrieve the generated export
print(f"Download: {status['download_url']}")
elif status['status'] == 'FAILED':
# Review status['error_code'] and status['error_message'] for remediation guidance
print(f"Error: {status['error_code']} - {status['error_message']}")
Enabling Debug Mode
client_insights.set_debug_mode(True)
Handling Errors
We strongly recommend that any usage of this SDK happens within a try-except to properly handle any exceptions or errors.
from openapi_client.exceptions import ApiException
try:
# Email or IP Insights usage...
result = email_insights.analyze(params)
except ApiException as e:
print(f"API Error: {e.status} - {e.reason}")
print(f"Response: {e.body}")
except Exception as e:
print(f"Error: {str(e)}")
Below are common error responses you might encounter:
| Status Code | Error Type | Description |
|---|---|---|
400 |
Bad Request | Invalid parameters or malformed request |
401 |
Unauthorized | Invalid or missing API key |
402 |
Payment Required | Account has insufficient credits |
403 |
Forbidden | Plan limitation or feature not available |
404 |
Not Found | Resource not found (e.g., invalid job ID) |
413 |
Payload Too Large | Request exceeds maximum size (3MB) |
429 |
Too Many Requests | Rate limit exceeded |
500 |
Internal Server Error | Server-side error occurred |
About this package
This Python package is a customization of the base generated by:
- OpenAPI Generator project.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file opportify_sdk-0.3.1.tar.gz.
File metadata
- Download URL: opportify_sdk-0.3.1.tar.gz
- Upload date:
- Size: 89.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c18c6738e53653787450b6ef81e399207582b1046d1396c310f59fa2e985ef62
|
|
| MD5 |
c388d55c2f257e9acb8ababe49591bb9
|
|
| BLAKE2b-256 |
a7944c39923aea03395c05089cda7c5047dcb968bdec5f1dc57a391b7a7402af
|
File details
Details for the file opportify_sdk-0.3.1-py3-none-any.whl.
File metadata
- Download URL: opportify_sdk-0.3.1-py3-none-any.whl
- Upload date:
- Size: 252.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0332e2dd2a93b5f0f8bbb45e67555be9bb3595891c49b81ef3886e88ebce2929
|
|
| MD5 |
a1d5d0776e6d2dd6f9a2bed0d8bfca61
|
|
| BLAKE2b-256 |
018b14559e44070817d616e083975451d54af4f7fd88d3cc99b9edad76a3939f
|