Asiguraţi-vă platforma Al-operabil.
Call 2,420 named operations through one contract-generated API, with least-privilege scopes, workspace pinning, dry-run validation and replay-safe writes. Subscribe to canonical events through HMAC-signed background webhooks, or build a governed package in the six-stage Connector Builder.
Cererea de aplicare a domeniului de aplicare inch Eveniment semnat.
Postează o acțiune la /api/v1.php cu o cheie telescopică.OpsIQpini spatiul de lucru, valideaza contractul de actiune si permisiunile, apoi executa sau se usuce-runs ea. Evenimente canonice subscrise lasa printr-o HMAC-coada de livrare semnata cu incercari de urmarit si retries delimitate.
De la cheie la integrare guvernată în trei paşi.
Emite o cheie de cel mai puțin-privilege, descoperi contractul generat, seceta rulați un scrie, apoi abonați un webhook atunci când aplicația are nevoie de livrare eveniment fundal.
Ia o cheie.
Înregistrează-te și generează o cheie de intrare API (opq_…) în setări dezvoltator, și de a da fiecare integrare numai suprafețele de care are nevoie.
Descoperă & validează
Citit meta.actions, meta.action şi meta.scopes; utilizare dry_run pentru a valida scrierile înainte de execuție.
Execută & abonează
Adăugați o cheie idempotency pentru scrie, apoi abonați-vă obiectivul la evenimentele canonice de care aveţi nevoie.
Un model de conector. Cinci primitivi curaţi.
Orice traieste intr-o platforma specifica intr-un conector. Nucleul OpsIQ ramane generic, AI ramane previzibil, iar integrarea ta ramane auditabila.
Spune. OpsIQ ce s-a întâmplat.
Evenimentele canonice Emit de pe platforma ta, sau definesc un eveniment personalizat reglementat. Abonatii primesc evenimentul prin intermediul prioritatii si regulilor de livrare inregistrate.
Referință la evenimentinvoice.paid, ticket.created, subscription.cancelled, customer.signed_up sau a ta.
Abonați la Fan-outCreierul AI, regulile de automatizare, conectorii oglinda si obiectivele dvs. webhook toate reactioneaza.
Ordinea prioritarăDispecerat determinant, astfel încât oglinzile să scrie înainte de foc alerte.
Spune. OpsIQ ce AI are voie să facă.
Fiecare operațiune numită primește un contract generat: domeniu de aplicare, caracteristică, citire sau scriere tip, risc, politica de confirmare, schema cererii și a răspunsului, suport uscat-run, idepotență și erori stabile.
Schema de acțiune{
"action": "tickets.reply",
"kind": "write",
"scopes": ["tickets.write", "admin"],
"feature": "ticket_system",
"risk": "medium",
"confirmation": "recommended",
"idempotency": "supported",
"dry_run": true,
"request": { "type": "object" },
"response": { "required": ["success"] }
}
Împinge evenimente la stiva ta - cu dovezi reproductibile.
Subscribe any URL to any of the 52 deliverable events. OpsIQ POSTs the JSON payload signed with HMAC-SHA256 over the scheme version, the timestamp, the delivery ID and the body together, not the body alone, so yesterday's delivery cannot be replayed at you today.
$raw = file_get_contents('php://input');
$sig = $_SERVER['HTTP_X_OPSIQ_SIGNATURE'] ?? ''; // "v2=<hex>"
$ts = (int)($_SERVER['HTTP_X_OPSIQ_TIMESTAMP'] ?? 0);
$id = (int)($_SERVER['HTTP_X_OPSIQ_DELIVERY'] ?? 0);
if (abs(time() - $ts) > 300) http_response_code(401); // replay window
[$ver, $hex] = array_pad(explode('=', $sig, 2), 2, ''); // split the prefix
$signed = $ver . '.' . $ts . '.' . $id . '.' . $raw; // NOT the body alone
$expected = hash_hmac('sha256', $signed, $secret);
if (!hash_equals($expected, $hex)) http_response_code(401);
$event = json_decode($raw, true); // $id is stable across retries
Utilizați HTTP direct sau de a genera clientul pe care doriți.
General completAPI este publicat ca OpenAPI 3.0.3 și Postman. expeditori de referință PHP plus Node și Python Integration clienții acoperă eveniment semnat și fluxuri webhook; orice stiva poate apela la același JSON suprafața de acțiune direct.
const response = await fetch(`${base}/api/v1.php`, {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.OPSIQ_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
action: "tickets.reply",
dry_run: true,
idempotency_key: crypto.randomUUID(),
body: "Thanks. We are checking this now."
})
});
$payload = json_encode([
'action' => 'tickets.reply',
'dry_run' => true,
'idempotency_key' => bin2hex(random_bytes(16)),
'body' => 'Thanks - we are checking this now.',
]);
$ch = curl_init($base . '/api/v1.php');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OPSIQ_KEY'),
'Content-Type: application/json',
],
]);
response = requests.post(
f"{base}/api/v1.php",
headers={
"Authorization": f"Bearer {os.environ['OPSIQ_KEY']}",
"Content-Type": "application/json",
},
json={
"action": "tickets.reply",
"dry_run": True,
"idempotency_key": str(uuid.uuid4()),
"body": "Thanks - we are checking this now.",
},
)
Construieşte o dată şi conectează-te la orice.
Un conector este un pachet reglementat generat sau importat prin Identitate, Auth, Test, Acţiuni, Declanşări şi Revizuire. Manifestul său declară suprafeţele de capacitate OpsIQ este permis să se expună.
Deschide constructorul în şase etapeEngleză simplă. Operaţiunea auditată terminată.
OpsIQ nu inventează niciodată apelul corect. Trece prin contractele înregistrate, pregătește sarcina utilă, cere confirmarea atunci când acțiunea o solicită și produce un rând de audit complet atunci când execută, astfel încât un AI care poate Act Niciodată nu devine un AI nu poți avea încredere.
API suprafață dintr-o privire.
One JSON POST surface exposes 2,420 named actions. Each generated contract declares auth scopes, read/write kind, risk, confirmation, request schema, dry-run, idempotency and stable errors.
ACTION tickets.replytickets.writesecond_run + idempotențăConfigurat / orăACTION security.reportsecurity.writesecond_run + idempotențăConfigurat / orăACTION platform.routes.writeadminconfirmare + cheieConfigurat / orăACTION meta.actionsDescoperirea publicăNumai citireConfigurat / orăACTION tickets.listtickets.readNumai citireConfigurat / orăACTION connectors.listconnectors.readNumai citireConfigurat / orăhr.* contracte · hr.read / hr.write domeniul de aplicareACTION hr.people.listhr.readNumai citireConfigurat / orăACTION hr.people.createhr.writesecond_run + idempotențăConfigurat / orăACTION hr.org.treehr.readNumai citireConfigurat / orăhr Primeşte un refuz, nu o listă goală. Ce este PeopleOS HR.Limitele ratei sunt configurate pe tasta de la o fereastră orară. X-RateLimit-Limit, X-RateLimit-Remaining şi X-RateLimit-Reset; o cerere respinsă returnează 429 cu Retry-AfterFoloseşte-l. Contractul OpenAPI 3.0.3 sau Colecţia de poştaş generate din aceleași registre de timp de funcționare.
Construire, testare și eliberare în 6 etape.
Începeţi de la un profil reglementat sau definiţi contractul singur. Constructorul validează fiecare etapă înainte ca acesta să genereze un pachet conector autonom.
Validarea în condiții de siguranță, apoi trece poarta de eliberare.
Utilizare dry_run privind acțiunile de scriere sprijinite, efectuarea testului de conectare delimitată al constructorului și verificarea manifestului generat și a contractului înainte de eliberare. Validarea pachetelor verifică numele capacităților, setările, proveniența și fișierele necesare; lucrătorii de fundal se ocupă de sondajele reactive și livrarea în străinătate.
Un pachet nu poate pretinde o capacitate codul său nu are.
OpsIQ\Connectors\ConnectorContract Este autoritatea. Descoperirea pe termen lung, Constructorul, pachetele de prim-partid, conformare, General API şi fiecare referinţă a citit că un registru. Declaraţi o capacitate şi trei fişiere trebuie să fie de acord unul cu altul înainte OpsIQ Trasee un singur rând la tine.
- 01 connector.php clasa de funcționare
- 02 IdentityProvider.php cheie externă stabilă
- 03 SalesIngest.php reconcilieriVânzare()
- 04 actions.json operațiuni numite
- 05 settings.json configurare operator
- 06 connector_contract.json autoritatea care poate citi automat
hmac-sha256 peste o sarcină utilă deterministă a SHA per file-256 Hashes raspunsuri a fost modificat de la semnarea- O. ed25519 răspunsuri privind semnătura a fost semnat de Nabtech, verificat cu cheia publică pachet și nu are secrete comune. Editați un octet și primul se oprește potrivire.
marketplace.json este în afara semnăturii prin definiție: instalatorul o scrie după ce semnează, astfel încât editorul nu ar fi putut să-l semneze.
Un gardian care nu a dat greş niciodată. este nedovedit.
Testele verzi vă spun că nu s-a rupt nimic astăzi. Nu vă spun ca paznicul pe care l-aţi scris va opri lucrul ce a fost scris pentru a se opri, deoarece un gardian care nu este niciodată exercitat trece exact ca un paznic care nu face nimic. Aşa că îi oprim inima intenţionat şi cerem monitorului să ţipe.
211 /* A read role must never reach a destructive operation. */ 212- if ($isRead && $isDestructive) { 212+ if (false) { 213 $errors[] = "read role '{$role}' points at a destructive op"; 214 return false; 215 }
1[ ok ]hash sha256 4f2a9c1e… remember the file exactly as it is 2[ ok ]control exit 0 green BEFORE anything is touched 3[ ok ]mutate 1 match, lint ok one replacement, then php -l the mutant 4[RED ]prove exit 1 and "read role destructive" IS in the failures 5[ ok ]restore bytes written the original, not a regenerated copy 6[ ok ]verify sha256 matches and the check is green again ══ PROVEN. file restored, hash matched, 1 proof run, 0 failed.
Mutaţia nu s-a aplicat niciodată.
Textul de căutare nu se potrivea, dosarul a fost neatins, suita a trecut, iar dovada înregistrată verde sub codul vechi despre codul care nu a fost niciodată vechi. Prins prin solicitarea exact un meci textual și compararea hashes fișier fiecare parte.
Mutaţia a distrus altceva.
Apartamentul a devenit roşu pentru că dosarul nu mai era în patrulare sau a murit boottrap-ul, iar dovada a înregistrat un roşu care n-a avut nimic de-a face cu paznicul. numit test printre eșecuri.
Nu poate lăsa un mutant pe disc.
Fiecare mutație copia original la un ataș în afara copacului web-servit, scrie un marker de numire schimbare remarcabilă, și este anulată printr-un handler oprire pe fiecare cale de ieșire. Un marker dintr-o rula prăbușită este onorat înainte de următoarea mutație a acelui fișier.
Certificarea este o comandă cu un cod de ieşire.
Not a review queue where somebody reads your code and forms an opinion. Run the same suites we run, on your own machine, before you submit. 8 published JSON Schemas under doc/contracts/schemas/ să acopere setările, acțiunile, specificațiile constructorilor, cartografiile evenimentelor de călătorie și comerț, rețetele fluxului de lucru, contractele conectorului și manifestele de eliberare.
- manifests parse și sunt de acord unul cu altul
- capacitate există pe clasa de funcționare
- interfaces implementată în cazul în care este declarată
- files fiecare fișier necesar prezent
- acțiuni se potrivesc cu acțiunile manifeste
- destructive declară confirmarea
- identitate o cheie externă stabilă, nu e-mail
- reluare o actualizare repetată, niciodată nu se repetă
- întreprindere declarațiile corespund prelungirii
- documente Readme, Developer, Changelog
- Schimes fiecare JSON validează
$ php tools/test_connector_conformance_all.php --connector=acme
$ php tools/test_connector_json_schemas.php
$ php tools/verify_commerce_contracts.php
$ php tools/release_gate_connectors.php --require-signatures
Punctul primul la un cont real non-producție cu --live-settings=/secure/test-acme.jsonÎn timp ce sunt încă iterează, schimba ultima pentru --unsigned-ok: tratează o semnătură lipsă ca pe un avertisment așteptat, în loc să pretindă că este bine.
Declararea ceea ce se poate vinde este un dosar, nu o înregistrare.
Un conector care poate vinde declară care dintre propria sa Operaţiunile răspund rolurilor comerciale canonice ale OpsIQ_Rolurile de comerţ canonic. Prezenţa fişierului este revendicarea. Apare în seturile de vânzare în momentul în care declară şi dispare când acesta se opreşte. Nu există o listă pentru a adera şi nimeni să ceară.
Un canonic scrie rol cartografiat la un text generic. Meciul este structural: un substantiv de stocare lângă un verb mutating, indiferent de convenția dvs. de numire. Scrierea rândul de afaceri direct sare tarifarea platformei, blocare disponibilitate și confirmare mail, și produce o comandă sistemul propriu comerciantului doar jumătate crede în. recovery fie, astfel încât o pauză ar fi nerecuperabil.
{
"commerce": {
"roles": {
"catalog_search": { "operation": "acme_search_products", "transport": "http" },
"order_get": { "operation": "acme_get_order", "transport": "http" },
"order_create": { "operation": "acme_create_order", "transport": "http",
"recovery": "acme_get_order" }
}
}
}
connector_contract.json este generat și seturile sale schema additionalProperties:false, astfel încât un bloc manual autor acolo ar eșua validare și apoi să fie suprascris pe următoarea alergare generator.
Un rol în CommerceRole nu există. OpsIQ niciodată nu deduce unul dintr-un nume de operație, deoarece un nume nu este o promisiune.
Operaţia trebuie să apară în... actions.json. Declararea unei persoane care nu există promite clientului ceva ce apoi nu produce nimic.
Cea mai periculoasă pauză este cea după ce platforma ar fi putut deja să facă munca. Fără un "idepotent" l-a căutat pământul meu scris, singurele opțiuni sunt reîncercarea orbească sau pierderea comenzii.
Orice rol de clasă de plăți declară, de asemenea, payment_profile cu mediu, webhook_verify utilizarea schemei proprii a furnizorului și event_mapUn mediu neevaluat este modul în care un furnizor de mod de testare ia o plată live.
OpsIQ vs a Integrare DIY.
Ce platformă de contractare, semnată şi auditată îţi oferă faptul că rularea propriilor tale site-uri web şi instalaţii de acţiune AI nu vor face niciodată.
| Capacitatea | Rostogoleşte-te singur. | OpsIQ |
|---|---|---|
| Suport de acoperire API + cârlige web cu semnătură HMAC | Cu o grosime de minimum 0,75 mm, dar maximum 0,35 mm | ✓ |
| Reluare cu succes a șervețelului + 24- oră | DIY | ✓ |
| 1m→5m→30m→ 2h → 12hretries | Coadă de diy | ✓ |
| Registrul de acţiune-contract (AI nu poate inventa apeluri) | — | ✓ |
| Politica de confirmare înaintea efectelor secundare | — | ✓ |
| Pachet de eroare stabil + ID-uri cerere | Exploatarea manuală | ✓ |
| Opțiuni directe HTTP + client generate | Scrie-ţi propriul tău nume. | ✓ |
| OpenAPI 3.0.3 contract de citire automată | Poate. | ✓ |
| Constructor în şase etape + poartă de eliberare pachet | Construiește un lanț de unelte | ✓ |
| Cheile cu piniaj în spațiu de lucru și limitele orare | Variază | ✓ |
| Model Conector: codul platformei rămâne izolat | — | ✓ |
Întrebări de dezvoltator, Răspuns.
Autentificare, contracte, retries, generarea de clienti, testarea în condiții de siguranță și modelul conectorului, înainte de prima cerere de producție.
Authorization: Bearer opq_…Cheile pot fi nelimitate, restricţionate sau citite numai, să aibă lunete de interes minim, să respecte o limită orară şi poate fi fixat la un spaţiu de lucru. Semnarea prin webhook este separată: livrările în afara drumului X-OpsIQ-Signature, X-OpsIQ-Timestamp, X-OpsIQ-Event şi X-OpsIQ-Delivery.hash_hmac('sha256', $rawBody, $secret) și compara digerat hexazecimal cu X-OpsIQ-Signature cu hash_equals. Validarea X-OpsIQ-Timestamp în fereastra de reluare şi utilizare X-OpsIQ-Delivery ca identificator de livrare trasabil.dry_run privind acțiunile al căror contract generat îl susține, executați testul de conectare delimitată al Connector Builder-ului, inspectați fișierele generate și treceți de conformitatea pachetului și eliberați porțile înainte de a trata conectorul ca fiind pregătit.settings.json, opțional actions.json, un contract de capacitate generata, documentatii si extensii opţionale ale intreprinderilor. Constructorul in sase etape il asambleaza; registrul il descoperi; conformarea şi eliberarea portilor valideaza-l.