opportify / opportify-sdk-php
Opportify Insights PHP SDK
Requires
- php: >=8.1.0
- guzzlehttp/guzzle: ^7.9
Requires (Dev)
- laravel/pint: ^1.0
- mockery/mockery: ^1.6
- phpunit/phpunit: ^8.0 || ^9.0
README
Opportify-SDK-PHP
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 PHP v8.1 or later.
Getting Started
First, install Opportify via the Composer package manager:
composer require opportify/opportify-sdk-php
Calling Email Insights
use Opportify\Sdk\EmailInsights; $emailInsights = new EmailInsights("YOUR-API-KEY-HERE"); $params = [ "email" => "test@gmial.com", // *gmial* - just an example to be auto-corrected "enableAi" => true, "enableAutoCorrection" => true ]; $result = $emailInsights->analyze($params);
Calling IP Insights
use Opportify\Sdk\IpInsights; $ipInsights = new IpInsights("<YOUR-KEY-HERE>"); $params = [ "ip" => "3.1.122.82", "enableAi" => true ]; $result = $ipInsights->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 (jobId
) you can poll for status.
1. Batch Email Analysis (JSON)
use Opportify\Sdk\EmailInsights; $emailInsights = new 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 = $emailInsights->batchAnalyze($params); // Optional: poll status later $status = $emailInsights->getBatchStatus($batch->jobId);
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 = $emailInsights->batchAnalyze(['text' => $content], 'text/plain'); $status = $emailInsights->getBatchStatus($batch->jobId);
3. Batch Email Analysis (File Upload)
Supply a .csv
(one email per row; header optional) via batchAnalyzeFile()
. A .csv
triggers multipart/form-data
; other extensions fall back to text/plain
(newline-delimited body).
$batch = $emailInsights->batchAnalyzeFile(__DIR__.'/emails.csv', [ 'name' => 'Monthly Email Cleanup', // Optional: descriptive name for the job 'enableAi' => true, 'enableAutoCorrection' => true ]); $status = $emailInsights->getBatchStatus($batch->jobId);
4. Batch IP Analysis (JSON)
use Opportify\Sdk\IpInsights; $ipInsights = new 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 = $ipInsights->batchAnalyze($params); // application/json $status = $ipInsights->getBatchStatus($batch->jobId);
5. Batch IP Analysis (Plain Text)
$content = "1.1.1.1\n8.8.8.8"; // newline-delimited IPs $batch = $ipInsights->batchAnalyze(['text' => $content], 'text/plain'); $status = $ipInsights->getBatchStatus($batch->jobId);
6. Batch IP Analysis (File Upload)
$batch = $ipInsights->batchAnalyzeFile(__DIR__.'/ips.csv', [ 'name' => 'Firewall IP Assessment', // Optional: descriptive name for the job 'enableAi' => true ]); $status = $ipInsights->getBatchStatus($batch->jobId);
Convenience & Notes
batchAnalyzeFile()
auto-selects content type:.csv
->multipart/form-data
; otherwisetext/plain
.- For
text/plain
, pass newline-delimited values via thetext
key. - For
multipart/form-data
, pass a readable file path via thefile
key (handled internally bybatchAnalyzeFile()
). - The
name
parameter is optional for all batch operations and helps with job identification and tracking. enableAutoCorrection
applies only to Email Insights.- Always wrap calls in a try-catch (see Error Handling) to capture API errors.
- Polling cadence depends on payload size; a short delay (1–3s) between status checks is recommended.
Enabling Debug Mode
$clientInsights->setDebugMode(true);
Handling Error
We strongly recommend that any usage of this SDK happens within a try-catch to properly handle any exceptions or errors.
use OpenAPI\Client\ApiException; try { // Email or IP Insights usage... } catch (ApiException $e) { throw new \Exception($e->getResponseBody()); }
Below are the ApiException
functions available:
Function | Type | Value Sample |
---|---|---|
$e->getMessage(); |
string | "[403] Client error: POST https://api.opportify.ai/insights/v1/... resulted in a 403 Forbidden" |
$e->getResponseBody(); |
string | "{"errorMessage":"Your plan does not support AI features, please upgrade your plan or set enableAI as false.","errorCode":"INVALID_PLAN"}" |
$e->getCode(); |
integer | 403 |
About this package
This PHP package is a customization of the base generated by:
- OpenAPI Generator project.