Gör din plattform AI-operativ.
OpsIQexponerar en ren RESTAPIHMAC-signerade webhooks, ett handlingskontraktsregister och färdiga SDKs. Definiera vilka händelser som eldar från ditt system, vilka åtgärder AI får köra, och vilka data är säkra att läsa.OpsIQhanterar signaturer, retries, revisionsloggar och bekräftelseflöden för dig.
Begär in. Signerad webhook out.
Du ställer tillOpsIQ APImed din omfattning Bearer-nyckel.OpsIQkontroller omfattning och roll, kör den kontrakterade åtgärden, skriver en revision rad - sedan skjuter en HMAC-signerad webhook tillbaka till din slutpunkt. Varje hopp är autentiserad, idempotent och hämtas på misslyckande.
Från noll till en live-integration fyra steg.
Skapa en nyckel, skjut din första händelse, prenumerera en webhook, registrera en åtgärd. Du kan köra hela slingan mot sandlådan innan du rör produktionsdata.
Få en nyckel
Registrera dig och skapa en omfångad Bearer API-nyckel (opq_…) i utvecklarinställningar och ge varje integration endast de ytor den behöver.
Fire & prenumerera
POST en signerad events/fire (eller använda enSDK), sedan peka någonURLvid varje tillfälle, undertecknad, med ett leverans-ID och back-off retries.
Registrera en åtgärd
Deklarera ett undertecknat åtgärdsavtal så att AI säkert kan köra verksamhet, med rollkontroller, bekräftelsepolicy och en fullständig revisionsled.
Ett kontaktmönster. Fem rena primitiva.
Allt plattformsspecifikt lever i en kontakt.OpsIQKärnan förblir generisk, AI förblir förutsägbar, och din integration förblir revisionsbar.
Berätta OpsIQ vad som just hände.
Brand universella händelser från din plattform - eller dina egna evenemangsnamn. Varje abonnent reagerar i realtid, i prioriterad ordning.
Event referensinvoice.paid, ticket.created, subscription.cancelled, customer.signed_up eller din egen.
Fan-out abonnenterAI-hjärnan, automationsreglerna, spegelkontakterna och din webhook slutpunkter alla reagerar.
Prioriterad orderDeterministisk avsändning så speglar skriver innan varningar brand.
Berätta OpsIQ vad AI är tillåtet att göra.
Ett handlingsavtal är en undertecknad JSON deklaration: vad åtgärden gör, vilka roller som kan köra den, vilka parametrar den accepterar, oavsett om bekräftelse krävs och slutpunkten att ringa.
Åtgärdsschema{
"key": "saas.refund_invoice",
"label": "Refund a paid invoice",
"surface": ["admin"],
"roles": ["owner", "billing_admin"],
"requires_confirmation": true,
"params": {
"invoice_id": { "type": "int", "required": true },
"reason": { "type": "string", "max": 500 }
},
"endpoint": "https://api.you.com/refund",
"audit": true
}
Tryck på händelser till din stack - med kryptografiska bevis.
Prenumerera någon URL till alla händelser. OpsIQ POSTs den JSON nyttolast som undertecknats med HMAC-SHA256 över den råa kroppen - verifiera den i några rader.
$raw = file_get_contents('php://input');
$sig = $_SERVER['HTTP_X_OPSIQ_SIGNATURE'] ?? '';
$expected = hash_hmac('sha256', $raw, $secret); // hex digest, no prefix
if (!hash_equals($expected, $sig)) http_response_code(401);
$event = json_decode($raw, true);
Drop-in klienter för det språk du redan använder.
Tre officiella SDK hanterar autentisering, signering, retries, idempotency-nycklar och skrivna svar. Eller stanna ramfria - varjeSDKär en tunn wrapper runt samma REST-yta.
import { OpsIQ } from "@opsiq/sdk";
const ops = new OpsIQ({ apiKey: process.env.OPSIQ_KEY });
await ops.events.fire("order.shipped", {
customer_id: 421,
order_ref: "NB-9182",
carrier: "DHL"
});
const result = await ops.actions.run("saas.send_kb_link", {
ticket_id: 5519,
article: "how-to-reset-password"
});
use OpsIQ\Client;
$ops = new Client([
'api_key' => getenv('OPSIQ_KEY'),
]);
$ops->events->fire('order.shipped', [
'customer_id' => 421,
'order_ref' => 'NB-9182',
]);
$result = $ops->actions->run('saas.send_kb_link', [
'ticket_id' => 5519,
'article' => 'how-to-reset-password',
]);
from opsiq import OpsIQ
ops = OpsIQ(
api_key=os.environ["OPSIQ_KEY"],
)
ops.events.fire("order.shipped", {
"customer_id": 421,
"order_ref": "NB-9182",
})
result = ops.actions.run("saas.send_kb_link", {
"ticket_id": 5519,
"article": "how-to-reset-password",
})
Bygg en gång. Anslut till allt.
En kontakt är en mapp med en PHP-klass. OpsIQ upptäcker det, registret trådar händelserna och din plattformsspecifika kod förblir rent separerad från kärnan.
Guide för kontaktdonidentityProviders(), contextProviders(), registerActions(), subscribers(), handleWebhook().
Manifestdrivenactions.json och settings.json deklarera avtal och konfig.
AutoupptäcktSläpp mappen i, signera den, aktivera den i admin.
Smärta engelska i. Auditerad operation ute.
OpsIQ uppfinner aldrig rätt samtal. Det går genom de registrerade kontrakten, förbereder nyttolast, ber om bekräftelse när åtgärden kräver det och producerar en fullständig revisionsrad när den utför, så ett AI som kan Handling Aldrig blir ett AI du inte kan lita på.
API__ yta vid en blick.
Varje kärnpunkt, dess autentiska, idempotens och per-nyckeltalsgräns. Det fulla maskinläsbara kontraktet lever i OpenAPI 3.0.3 referens.
POST /v1/events/fireHMACJa1000_/minPOST /v1/actions/runHMACJa200_/minPOST /v1/webhooks/testHMACJa60_/minGET /v1/customers/{id}HMACJa2000_/minGET /v1/ticketsHMACJa2000_/minGET /v1/connectorsHMACJa2000_/minBetygsgränser är per nyckel och returneras på varje svar som X-OpsIQ-RateLimit-Remainingöverstiga en gränsavkastning 429 med en Retry-After rubrik. Det fullständiga maskinläsbara kontraktet (varje ändpunkt, schema och fel) lever i OpenAPI 3.0.3 referens.
Fartyga en kontakt i 5 steg.
En kontakt är en självinnehållen mapp.OpsIQupptäcker det, registret trådar händelserna, och din plattformsspecifika kod läcker aldrig in i kärnan.
connector.php Utvidga AbstractConnector.actions.json och settings.json manifesterar sig.En sandbox-nyckel och en webhook-testare.
Varje arbetsyta exponerar en sandlåda: en separat räckvidd nyckel som träffar samma API yta utan att röra produktionsdata. POST /v1/webhooks/test För att avfyra en signerad provleverans vid din slutpunkt och bekräfta din signaturverifiering innan du går live. Självvärderade installationer kör den identiska kodbanan, utan beteendemässig drift mellan moln och on-prem.
OpsIQvs a Gör det själv-integration.
Vilken kontraktsbunden, undertecknad, granskad plattform ger dig som rullar dina egna webhooks och AI-action VVS aldrig kommer att.
| Förmåga | Rulla din egen | OpsIQ |
|---|---|---|
| HMAC-signed requests & webhooks (both ways) | Hand-rolled | ✓ |
| Idempotency keys + replay protection | DIY | ✓ |
| Automatic back-off retries with delivery IDs | DIY queue | ✓ |
| Action-contract registry (AI can't invent calls) | — | ✓ |
| Confirmation policy before side-effects | — | ✓ |
| 100% audit-log coverage on actions | Manual logging | ✓ |
| Official PHP / Node / Python SDKs | Write your own | ✓ |
| OpenAPI 3.0.3 machine-readable contract | Maybe | ✓ |
| Sandbox keys + webhook tester | Build a staging rig | ✓ |
| Cloud & self-hosted parity (same code path) | Varierar | ✓ |
| Connector pattern: platform code stays isolated | — | ✓ |
Utveckla frågor, Svarat.
Auth, signaturer, SDKs, sandboxning och kontaktmodellen: allt du kommer att fråga innan den första förfrågan.
Authorization: Bearer opq_…. OpsIQkontrollerar nyckelns räckvidd och skådespelarens roll innan något körs. Webhooks är separata: varje webhookOpsIQSkickar bär en X-OpsIQ-Signature (en hex HMAC-SHA256 av råkroppen) och en X-OpsIQ-Timestamp för att spela skydd, så att du kan verifiera oss i gengäld, och inkommande webhooks du skickar verifieras på samma sätt.requires_confirmation Yttar ett förhandsgranskningskort till en människa innan sidoeffekten körs.hash_hmac('sha256', $rawBody, $secret) (en hex smälta utan prefix) och jämför den med X-OpsIQ-Signature rubrik med en konstant kontroll (hash_equalsVarje leverans bär också en tidsstämpel, en idempotensnyckel och ett leverans-ID som du kan spåra. PHP-nippet på denna sida är hela verifieringen.POST /v1/webhooks/test att avfyra en signerad provleverans vid din slutpunkt och bekräfta din verifiering innan du går live.AbstractConnector, plus actions.json och settings.json manifesterar. Du genomför identityProviders(), contextProviders(), registerActions(), subscribers() och handleWebhook(). OpsIQ_ automatiskt upptäcker det, trådar händelserna och håller din plattformsspecifika kod ren separerad från kärnan.