Gumawa ng iyong plataporma Opera ng Aida.
Call 2,415 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.
Iprito ang kahilingan. Tandaan.
IPAGPUTOS ang isang pagkilos /api/v1.php na may accessed Bearer key. OpsIQ pink ang workspace, pinapatunayan ang kontrata sa aksiyon at mga pahintulot, pagkatapos ay isinasagawa o pinapatuyo-runs ito. ihinatawan ang kanonikal na mga pangyayari na nag-iiwan sa isang HMAC-signed delivery queue na may mga matutuntong pagtatangka at nakataling retries.
Mula sa susi hanggang sa pinamamahalaang pagsasama - sama tatlong hakbang.
Issue a thin-privilege key, diskubre ang nalikhang kontrata, dry-run a was write, pagkatapos ay mag-skripto ng isang webhook kapag ang inyong aplikasyon ay nangangailangan ng background na pangyayari na paghahatid.
Kumuha ng susi
Magsenyas at gumawa ng isang tagapalibot API ( keyopq_…) sa mga landscaper setting, at ibigay ang bawat pagsasanib lamang ng mga ibabaw na kailangan nito.
Natuklasan & Patotoo
Basahin meta.actions, meta.action at meta.scopes; gamitin dry_run upang patunayan na siya'y sumulat bago patayin.
Exective & kripto
Magdagdag ng isang idempotensiyal na susi para sa pagsusulat, pagkatapos ay i-script ang inyong endpoint sa kanonikal na mga pangyayari na kailangan ng inyong aplikasyon.
Isang connektor na padron. Limang malilinis na primado.
Anumang platform-specific ay nakatira sa isang connektor. Ang platform. OpsIQ Ang core ay nananatiling generic, ang AI ay nananatiling mahuhulaan, at ang inyong pagsasama - sama ay nananatiling hindi mababago.
Sabihin OpsIQ kung ano ang nangyari.
Ang mga kanonikal na pangyayari mula sa iyong plataporma, o ang pagbibigay ng kahulugan sa isang pinamamahalaang kaganapang pang-ugali. Ang mga subscriber ay tumatanggap ng pangyayari sa pamamagitan ng nakarehistrong mga tuntuning priyoridad at pahatid.
Pangyayaring reperensiyainvoice.paid, ticket.created, subscription.cancelled, customer.signed_up o ikaw.
Mga subscriber na Fan-outAng utak ng AI, mga tuntunin sa automation, mga koneksiyon sa salamin at ang iyong mga webhook endpoint ay pawang tumutugon.
presidensiyal na kaayusanAng tiyak na mga pahatid kaya ang mga salamin ay sumusulat bago mag - anunsyo ng apoy.
Sabihin OpsIQ kung ano ang pinahihintulutang gawin ng AI.
Ang bawat isang operasyong pinangalanan ay tumatanggap ng kontratang panglikha: saklaw, tampok, pagbasa o pagsusulat ng uri, panganib, patakarang kumpil, kahilingan at tugon sa sekwensiya, suportang dry-run, idempotensiya at matatag na mga pagkakamali.
Aksiyong schema{
"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"] }
}
Ilagay ang mga pangyayari sa iyong salansanan ng cryptographic proof.
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
Gumamit ng direktang HTTP o lumikha ng kliyente na gusto mo.
Ang Buong HeneralAPI ay inilalathala bilang OpenAPI 3.0.3 at Postman. PHP reference senderss plat Node and Python integration clients sumasaklaw sa mga napirmang pangyayari at mga daloy ng webhook; ang anumang salansan ay maaaring tumawag ng parehong talaksan JSON tuwirang lumilitaw ang pagkilos.
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.",
},
)
Magtayo ng isang beses.
Ang isang connektor ay isang pinamamahalaang pakete na nililikha o inangkat sa pamamagitan ng Identity, Auth, Test, Actions, Triggers and Review. OpsIQ ay hinahayaang magbilad.
Buksan ang anim-na-stage na TagapagtayoAng wikang Ingles ay ginagamit. Ang indibidwal na operasyon.
OpsIQ Ito ay hindi nag-imbento ng tamang tawag. ito ay naglalakad sa mga nakarehistrong kontrata, naghahanda ng payload, humihingi ng kumpil kapag ang aksiyon ay nangangailangan nito, at gumagawa ng isang kumpletong audit row kapag ito ay nagpapatupad, kaya isang AI na maaaring mag-isyu ng isang AI na pwedeng gumawa ng isang ganap na audit kumilos Huwag kang maging AI na hindi mo mapagkakatiwalaan.
API pang - ibabaw sa isang sulyap.
One JSON POST surface exposes 2,415 named actions. Each generated contract declares auth scopes, read/write kind, risk, confirmation, request schema, dry-run, idempotency and stable errors.
ACTION tickets.replytickets.writetuyong_run + idempotensiyaNakukumpirma / orasACTION security.reportsecurity.writetuyong_run + idempotensiyaNakukumpirma / orasACTION platform.routes.writeadminkumpil + susiNakukumpirma / orasACTION meta.actionsPagkatuklas ng publikoMagbasa lamangNakukumpirma / orasACTION tickets.listtickets.readMagbasa lamangNakukumpirma / orasACTION connectors.listconnectors.readMagbasa lamangNakukumpirma / orashr.* kontrata · hr.read / hr.write saklawACTION hr.people.listhr.readMagbasa lamangNakukumpirma / orasACTION hr.people.createhr.writetuyong_run + idempotensiyaNakukumpirma / orasACTION hr.org.treehr.readMagbasa lamangNakukumpirma / orashr ay tumatanggi, hindi sa walang - saysay na listahan. Ang HR ng PeopleOS.Ang mga limitasyon sa bilis ay nakaayos sa bawat susi sa isang bintanang may oras. X-RateLimit-Limit, X-RateLimit-Remaining at X-RateLimit-Reset; nagbalik ang tinanggihang kahilingan 429 kasama Retry-After. Gamitin ang OpenAPI 3.0.3 kontrata o Pamumuhunan pagkatapos ngman na mula sa parehong runtime registry.
Magtayo, subukin at ilabas anim na yugto.
Magsimula mula sa isang pinamamahalaang profile o bigyan ng kahulugan ang kontrata. Ang Tagapagtayo ay nagbibigay-diin sa bawat yugto bago ito lumikha ng sariling-contaited connector na pakete.
Maging maingat, pagkatapos ay dumaan sa pintong de - free.
Gamitin dry_run sa suportadong mga gawa ng pagsulat, pangasiwaan ang naka-taling pagsubok sa koneksyon ng Magtatayo, at siyasatin ang nalikhang maniprodyus at kontrata bago ilabas. pakete aficiation checks may kakayahang pangalan, settings, resoundance at nangangailangan ng files; background workers hawakan ang reactitive polling at outbound delivery.
Hindi maaaring mag-angkin ng kakayahan ang pakete Wala ang kodigo nito.
OpsIQ\Connectors\ConnectorContract ay ang awtoridad. Runtime Discovery, ang Tagapagtayo, first-party packages, paayon, ang General API at bawat reperensiya ay kababasahan na ang isang rehistro ay nagpapahayag ng kakayahan at tatlong files na kailangang magkasundo muna bago OpsIQ ay may iisang hanay na patungo sa iyo.
- 01 connector.php ang klase sa oras ng pagtakbo
- 02 IdentityProvider.php matatag na panlabas na key
- 03 SalesIngest.php Mga couple()
- 04 actions.json Mga operasyong ipinangalan sa pangalan
- 05 settings.json pagsasaayos ng operator
- 06 connector_contract.json machine-basahing awtoridad
hmac-sha256 sa ibabaw ng isang deterministikong payload ng per-file SHA-256 mga kasagutan ay binago mula nang pumirma. An. ed25519 Mga sagot sa lagda ang nilagdaan nito Nabtech, na-secure sa pamamagitan ng naka-breast na public key at walang kabahaging lihim. Edit isang byte at ang unang paghinto ay nagtutugma.
marketplace.json ay nasa labas ng lagda sa pamamagitan ng pagpapakahulugan: ang installer ay sumusulat nito pagkatapos pumirma, kaya hindi ito maaaring nilagdaan ng mamamahayag.
Isang bantay na hindi kailanman nabigo ay hindi mapatunayan.
Hindi sinasabi sa iyo ng mga bagong pagsubok na ang bantay na iyong isinulat ay itigil ang bagay na ito, sapagkat ang isang guwardiya na hindi kailanman nag - eehersisyo ay dumaraang kagayang - kagaya ng isang guwardiyang walang ginagawa. Kaya't ating pinipigil ang puso nito sa layunin, at hinihiling na ang monitor ay sumigaw.
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.
Hindi kailanman ginamit ang mutasyon.
Ang tekstong hinahanap ay hindi tugma, ang talaksan ay hindi pa tapos, ang suite ay lumipas, at ang patotoong naitala berde sa ilalim ng matandang kodigo Napaliligiran ng isang eksaktong pag - uugnay ng teksto at paghahambing ng talaksang hashes sa magkabilang panig.
Ang mutasyon ay sumira ng iba pang bagay.
Ang suite ay namula dahil ang file ay tumigil sa parsing o ang bootrap ay namatay, at ang patunay ay nag-rekord ng isang pula na walang kaugnayan sa bantay. Pangalan subukin ang mga kabiguan.
Hindi ito makapag - iiwan ng isang mutant sa disk.
Bawat mutasyon ay naggaya ng orihinal sa isang sidecar sa labas ng punong web-served, sumulat ng marka na ipinangalan ang katangi-tanging pagbabago, at muling ginagawa ng isang deflux handler sa bawat daanang labasan. Ang isang marker mula sa isang nakabanggang pagtakbo ay pinararangalan bago ang susunod na mutasyon ng file na iyon.
Ang certification ay isang utos na may kodigo ng labasan.
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/ Ang mga setting sa pabalat, pagkilos, paggawa ng mga spec, paglalakbay at mga paligsahan sa komersiyo na ginagawang mapa, mga resipi sa trabaho, mga kontrata sa pag - uugnay at paglalabas ay makikita.
- manifests I-parse at magkasundo
- kakayahan Umiiral sa klase ng runtime
- interfaces Ikinapit kung saan ipinahayag
- files ang bawat hinihiling na talaksang naroroon
- pagkilos ang ipinakikita ng mga kilos
- destructive sabi ng kumpil
- Kung sino matatag na panlabas na key, hindi email
- Muling pag - iensayo isang paulit - ulit na update, hindi kailanman kinopya
- Negosyo Ang mga deklarasyon ay tumutugma sa ekstensiyon
- mga doc PAGBABASA, PAGTANGGAP SA ESPER, ATBELOG
- Mga schema bawat isa JSON Mga Patotoo
$ 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
Ituro ang una sa isang tunay na hindi-produksiyon na account kasama ang --live-settings=/secure/test-acme.json. Habang ikaw ay nag - iinteriya pa, ipagpalit mo ang huling nabanggit sa --unsigned-ok: itinuturing nito ang nawawalang lagda bilang isang inaasahang babala sa halip na pagkukunwari ito ay mainam.
Pagsasabi ng puwede mong ipagbili ay isang file, hindi isang pagpaparehistro.
Ang isang kawing na maaaring magbenta ay nagpapahayag kung alin sa sarili nito sagot ng mga operasyon OpsIQAng pag-aangkin ay lumilitaw sa mga marketing settings ang sandaling ito ay nagpapahayag at naglalaho kapag tumigil na ito. walang listahan upang sumali at walang sinuman na magtatanong.
Isang kanonikal sumulat Ang papel na ipinasulat sa isang rekord ng generic ay ang kayarian: isang panaguring pangngalan sa tabi ng pandiwang panlapi, anuman ang pangalan mo. Ang pagsulat ng hanay ng negosyo ay tuwirang pag - anap sa prising ng plataporma, madaling pagkuha at pagbibigay ng sulat, at paggawa ng utos na bahagya lamang pinaniniwalaan ng mismong sistema ng negosyante. recovery Isa pa, hindi rin naman maaaring alisin ang isang timeout.
{
"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 ay nililikha at ang mga set nito ng schema additionalProperties:false, kaya ang isang hand-authored block doon ay hindi ma-fixation at pagkatapos ay overriged sa susunod na generator run.
Isang papel na wala sa CommerceRole ay hindi umiiral. OpsIQ Hindi kailanman umaagaw sa pangalan ng isang operasyon, sapagkat ang pangalan ay hindi isang pangako.
Ang operasyon ay dapat na lumitaw sa iyong katawan actions.json. Ang paghahayag sa isa na hindi umiiral ay nangangako sa parokyano ng isang bagay na pagkatapos ay walang anumang nagagawa.
Ang pinakamapanganib na timeout ay ang isa pagkatapos marahil ay nagawa na ng plataporma ang trabaho. Walang isang idempotenteng "ginawa ang aking lupang panulat" na hitsura, ang tanging mga pagpipilian ay retry blind o pagkawala ng order.
Ipinahayag din ang anumang papel na pay-class payment_profile kasama ng kapaligiran, webhook_verify paggamit ng sariling pakana ng tagapaglaan, at event_map. Ang isang hindi nabanggit na kapaligiran ay kung paano kumukuha ng live na kabayaran ang isang test-mode provider.
OpsIQvs a PAGLILILILILIPAS ng DIY.
Ang isang kontrata-bound, napirmahan, audited platform ay nagbibigay sa iyo na ang paggulong ng iyong sariling mga webhook at AI-action tubercum ay hindi kailanman magiging.
| May Kakayahan | Igulong ang sarili mong lakas | OpsIQ |
|---|---|---|
| Nakopyang Oso API + HMAC-signed webhooks | Naka-roled | ✓ |
| Si Dry-run ay nagsusulat + 24-oras matagumpay na muling pag-play | DIY | ✓ |
| 1m→5m→30m→ 2h → 12hMga retrition | MADIG NA queue | ✓ |
| Action-contract register (Hindi makaimbento ng tawag ang AI) | — | ✓ |
| patakarang kumpil sa harap ng mga side-productions | — | ✓ |
| Matutto error envelope + request IDs | Manu - manong pagtotroso | ✓ |
| Tuwirang HTTP + lumikha ng mga pagpipiliang kliyente | Isulat ang sarili mong mga akda | ✓ |
| OpenAPI 3.0.3 machine-readable kontrata | Siguro | ✓ |
| Anim na-stage Builder + pakete release gate | Gumawa ng isang kagamitan | ✓ |
| Mga susing pang-workspace-pined at mga limitasyong oras-oras | Mga Varyo | ✓ |
| Pattern: Ang kodigo ng plataporma ay nananatiling nakabukod | — | ✓ |
Mga tanong na bumabangon, ang sagot.
Ang awdisyon, kontrata, retries, client generation, ligtas na pagsubok at ang connektor model, bago ang unang produksyon kahilingan.
Authorization: Bearer opq_…. Mga susi ay maaaring hindi nalilimitahan, nililimitahan o nababasa-lamang, magdala ng mga di-pribilehiyong saklaw, sumunod sa isang oras na hangganan at maaaring i-incan sa isang workspace. Webhook signing ay hiwalay: outbound carry feeds X-OpsIQ-Signature, X-OpsIQ-Timestamp, X-OpsIQ-Event at X-OpsIQ-Delivery.hash_hmac('sha256', $rawBody, $secret) at ihambing ang hexadecimal na pagtunaw nito sa lusaw na sangkap X-OpsIQ-Signature paggamit hash_equals. E. Ebangheliko X-OpsIQ-Timestamp sa loob ng iyong replaying window at gamitin X-OpsIQ-Delivery bilang ang matutuntong pang-edukasyon na identifier.dry_run tungkol sa mga aksiyon na ang kontratang likha ay sumusuporta rito, nagpapatakbo ng naka-saklay na pagsubok ng connector Buildinger, nagreresulta sa mga talaksang lumilikha nito, at nagpapasa ng paketeng aayonansiya at naglalabas ng mga tarangkahan bago gamutin ang kompyuter bilang handa na.settings.json, opsyonal actions.json, isang gawang kontrata sa kakayahan, dokumentasyon at opsyonal na mga ekstensyon ng negosyo. Ang anime-stage Builder ay nagtitipon nito; natutuklasan ito ng registry; ang pag-ayon at pagpapalabas ng mga tarangkahan ay nagpapatunay dito.