Jadikan platform anda Boleh dioperasikan AI.
Panggil 2,430 operasi bernama melalui satu API yang dijana daripada kontrak, dengan skop hak akses minimum, pengikatan ke ruang kerja, pengesahan percubaan dan penulisan yang selamat diulang. Langgan peristiwa kanonik melalui webhook latar belakang bertandatangan HMAC, atau bina pek terkawal dalam Connector Builder enam langkah.
Permintaan berskop masuk. Acara ditandatangani.
POST tindakan ke /api/v1.php dengan kunci Bearer berskop. OpsIQ menyematkan ruang kerja, mengesahkan kontrak tindakan dan kebenaran, kemudian melaksanakan atau menjalankannya secara percubaan. Peristiwa kanonik yang dilanggan keluar melalui baris gilir penghantaran bertandatangan HMAC dengan percubaan yang boleh dijejak dan cubaan semula yang terhad.
Dari kunci untuk mengatur integrasi dalam Tiga langkah.
Keluarkan kunci keistimewaan minimum, temui kontrak yang dijana, jalankan percubaan bagi satu penulisan, kemudian langgan webhook apabila aplikasi anda memerlukan penghantaran peristiwa di latar belakang.
Cari kunci
Janda tangan dan hasilkan kunci API Bearer terskop (_PH)opq_…) dalam tetapan pembangun, dan berikan setiap integrasi hanya permukaan yang diperlukannya.
Temui & Sahkan
Bacalah meta.actions, meta.action dan meta.scopes); gunakan dry_run Untuk mengesahkan penulisan sebelum eksekusi.
Langganan & Lakukan langgan
Tambahkan kunci idempotensi untuk menulis, lalu langgan titik akhir Anda ke acara kanonik yang diperlukan aplikasi Anda.
Satu corak penyambung. Lima primitif bersih.
Apa sahaja yang khusus untuk platform terletak dalam penyambung. Teras OpsIQ kekal generik, AI kekal boleh dijangka, dan integrasi anda kekal boleh diaudit.
TellVed OpsIQ Apa yang baru saja terjadi.
Apa yang terjadi di platform Anda, atau definisikan acara adat yang diatur.
Rujukan peristiwainvoice.paid, ticket.created, subscription.cancelled, customer.signed_up Kau sendiri atau kau.
pelanggan luar-anOtak AI, peraturan automasi, penyambung cermin dan titik akhir webhook anda semuanya bertindak balas.
Urutan Keutamaan Keprioritasan UGPemutusan deterministik , jadi cermin menulis sebelum peringatan kebakaran.
Beritahu OpsIQ apa yang AI diperbolehkan lakukan.
Setiap operasi bernama menerima kontrak yang dijana: skop, ciri, jenis baca atau tulis, risiko, dasar pengesahan, skema permintaan dan respons, sokongan larian cubaan, idempotensi dan ralat yang stabil.
Skema aksi{
"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"] }
}
Tolak acara ke sistem anda - dengan bukti kriptografi.
Langgan mana-mana URL kepada mana-mana daripada 53 peristiwa yang boleh dihantar. OpsIQ menghantar muatan JSON melalui POST, ditandatangani HMAC-SHA256 ke atas versi skema, cap masa, ID penghantaran dan isi bersama-sama, bukan isi sahaja, supaya penghantaran semalam tidak boleh dimainkan semula terhadap anda hari ini.
$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
Use HTTP langsung tanpa menggunakan nama samaran atau menghasilkan klien yang anda sukai.
Jenderal penuhAPI Buku ini diterbitkan sebagai OpenAPI 3.0.3 Dan Postman. Pengirim referensi PHP ditambah Node dan klien integrasi Python meliputi acara yang ditandatangani dan aliran webhook; setiap tumpukan dapat memanggil sama JSON Tindakan permukaan langsung.
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.",
},
)
Membina sekali.
Penyambung ialah pakej yang ditadbir yang dijana atau diimport melalui Identity, Auth, Test, Actions, Triggers dan Review. Manifesnya mengisytiharkan permukaan keupayaan yang dibenarkan untuk didedahkan oleh OpsIQ.
Buka gedung enam tahapBahasa Inggris masuk. Operasi Audited keluar.
OpsIQ Ini berjalan melalui kontrak terdaftar, mempersiapkan muatan, meminta konfirmasi ketika tindakan memerlukannya, dan menghasilkan baris audit lengkap ketika itu mengeksekusi, jadi AI yang dapat tindakan tidak sekali-kali menjadi AI yang tidak boleh anda percayai.
API Permukaan Hanya sekilas.
Satu permukaan JSON POST mendedahkan 2,430 tindakan bernama. Setiap kontrak yang dijana mengisytiharkan skop pengesahan, jenis baca/tulis, risiko, pengesahan, skema permintaan, larian percubaan, idempotensi dan ralat yang stabil.
ACTION tickets.replytickets.writeiranophry_run + idempotensiDikonfigurasi / jamACTION security.reportsecurity.writeiranophry_run + idempotensiDikonfigurasi / jamACTION platform.routes.writesistemdyakunci konfirmasi + konfirmasiDikonfigurasi / jamACTION meta.actionsPenemuan umum pada zaman kunoHanya Baca-bacaDikonfigurasi / jamACTION tickets.listtickets.readHanya Baca-bacaDikonfigurasi / jamACTION connectors.listconnectors.readHanya Baca-bacaDikonfigurasi / jamhr.* kontrak · hr.read / hr.write skopACTION hr.people.listhr.readHanya Baca-bacaDikonfigurasi / jamACTION hr.people.createhr.writeiranophry_run + idempotensiDikonfigurasi / jamACTION hr.org.treehr.readHanya Baca-bacaDikonfigurasi / jamhr Lufine mendapat penolakan, bukan daftar kosong. Apa itu HR PeopleOS.Had kadar dikonfigurasikan bagi setiap kunci pada tetingkap setiap jam. Respons mendedahkan X-RateLimit-Limit, X-RateLimit-Remaining dan X-RateLimit-Reset; permintaan yang ditolak dikembalikan 429 dengan Retry-AfterGunakan KemuaaaaAPI Buka 3.0.3 kontrak atau Koleksi Postman , dihasilkan dari aturan waktu berjalan yang sama.
Build, uji dan lepas masuk Tahap ke enam.
Dari profil yang diatur atau definisikan kontraknya sendiri.
Memvalidasi dengan selamat, lalu melewati pintu keluar.
Guna dry_run pada tindakan tulis yang disokong, jalankan ujian sambungan terhad Pembina, dan periksa manifes serta kontrak yang dijana sebelum keluaran. Pengesahan pakej menyemak nama keupayaan, tetapan, asal usul dan fail yang diperlukan; pekerja latar belakang mengendalikan semakan berkala reaktif dan penghantaran keluar.
Pakej tidak boleh menuntut sesuatu keupayaan Kodenya tidak memiliki.
OpsIQ\Connectors\ConnectorContract ialah sumber muktamad. Penemuan masa jalan, Builder, pakej pihak pertama, pematuhan, General API dan setiap rujukan membaca daripada satu daftar itu. Isytiharkan sesuatu keupayaan dan tiga fail mesti sepadan antara satu sama lain sebelum OpsIQ menghalakan walau satu baris kepada anda.
- 01 connector.php Kelas waktu berjalan
- 02 IdentityProvider.php Kunci eksternal stabil
- 03 SalesIngest.php Julukan Berdamai ()
- 04 actions.json Operasi yang dinamai
- 05 settings.json konfigurasi operator
- 06 connector_contract.json otoritas mudah dibaca mesin
hmac-sha256 ke atas muatan deterministik cincangan SHA-256 bagi setiap fail menjawab Ini sudah diubah sejak penandatangananAn ed25519 jawapan tandatangan Apa itu ditandatangani oleh Nabtech_Dicek dengan kunci publik yang dibundel dan tidak ada rahasia bersama.
marketplace.json berada di luar tandatangan secara takrifnya: pemasang menulisnya selepas menandatangani, jadi penerbit tidak mungkin pernah menandatanganinya.
Penjaga yang tidak pernah gagal Tidak terbukti.
Ujian hijau memberitahu anda bahawa tiada apa yang rosak hari ini. Ia tidak memberitahu anda bahawa pengawal yang anda tulis akan menghentikan perkara yang ia ditulis untuk dihentikan, kerana pengawal yang tidak pernah diuji akan lulus sama seperti pengawal yang tidak melakukan apa-apa. Jadi kami sengaja menghentikan jantungnya, dan menuntut agar monitor menjerit.
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.
Mutasi tidak pernah diterapkan.
Teks pencarian tidak cocok, filenya tidak tersentuh, suitenya lulus, dan buktinya direkam Hijau di bawah kode lama Tertangkap dengan memerlukan satu kecocokan tekstual dan membandingkan file hashes kedua sisi.
Mutasi mutasi itu merusak sesuatu yang lain.
Suit ujian menjadi merah kerana fail berhenti dihurai atau bootstrap mati, dan bukti merekodkan merah yang tiada kaitan dengan pengawal. Dikesan dengan menjalankan lint pada mutan dan mewajibkan Nama Tes di antara kegagalan.
Ia tidak boleh meninggalkan versi yang berubah pada cakera.
Setiap mutasi salinan asli ke sebuah sidecar di luar pohon yang diserved web, menulis penanda penamaan perubahan menonjol, dan dibatalkan oleh handler matikan pada setiap jalur keluar. Penanda dari run jatuh dihormati sebelum mutasi berikutnya file itu.
Sertifikasi adalah perintah Dengan kode keluar.
Bukan baris gilir semakan yang mana seseorang membaca kod anda dan membentuk pendapat. Jalankan set ujian yang sama seperti yang kami jalankan, pada mesin anda sendiri, sebelum menghantar. 8 skema JSON diterbitkan di doc/contracts/schemas/ merangkumi tetapan, tindakan, spesifikasi Builder, pemetaan peristiwa perjalanan dan perdagangan, resipi aliran kerja, kontrak penyambung dan manifes keluaran.
- manifests dihuraikan dan sepadan antara satu sama lain
- Kemampuan berbisa ada idi dalam kelas runtime
- interfaces Diimplementasikan di mana dinyatakan
- files Semua berkas yang diperlukan ada
- Tindakan usil Kecocokan dengan tindakan nyata
- destructive \"Penguatan\"
- identiti * Kunci eksternal stabil, bukan email
- [Redplay] replay pengulangan akan mengemas kini, tidak sekali-kali menduplikasi
- syarikat deklarasi python cocok dengan ekstensi
- docs INGGAL, BERLARANG, MENGUBAH
- Skema JSON _validasi
$ 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
Dia yang pertama di rekening non-produksi nyata dengan --live-settings=/secure/test-acme.jsonSementara kau masih merasa gatal, tukar yang terakhir untuk --unsigned-okIni menganggap tanda tangan yang hilang sebagai peringatan yang diharapkan daripada berpura-pura itu baik-baik saja.
Mengisytiharkan apa yang boleh anda jual Dia bukan sebuah berkas, bukan pendaftaran.
Penyambung yang boleh menjual mengisytiharkan yang mana antara Milik mereka sendiri operasi menjawab peranan dagangan kanonik OpsIQ. Kehadiran fail itu ialah tuntutannya. Ia muncul dalam tetapan jualan sebaik sahaja ia mengisytiharkan dan hilang apabila ia berhenti. Tiada senarai untuk disertai dan tiada sesiapa untuk ditanya.
Satu tulis Peranan lendir dipetakan ke penulisan catatan generik. Padanannya adalah struktural: sebuah noun penyimpanan disamping kata kerja mutating, apapun konvensi penamaan Anda. Menulis baris bisnis langsung melewati harga platform, penguncian ketersediaan dan konfirmasi surat, dan menghasilkan perintah sistem pedagang sendiri hanya setengah percaya. recovery juga, jadi tamat masa tidak akan dapat dipulihkan.
{
"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 Khagon dijana dan skemanya ditetapkan additionalProperties:falseJadi blok yang diberi izin akan gagal validasi dan kemudian ditulis ganti pada generator berikutnya dijalankan.
Peran A tidak masuk CommerceRole tidak wujud. OpsIQ tidak sekali-kali menyimpulkannya daripada nama operasi, kerana nama bukanlah satu janji.
Operasi itu mesti muncul dalam actions.jsonMenyatakan satu yang tidak ada menjanjikan sesuatu pada pelanggan yang kemudian menghasilkan apa-apa.
Masa tamat yang paling berbahaya adalah selepas platform mungkin telah selesai kerja. Tanpa carian "adakah saya menulis tanah" idempoten, satu-satunya pilihan ialah cuba semula secara buta atau hilang perintah.
Setiap pekerjaan yang juga menyatakan peran kelas pembayaran payment_profile Dan dengan Persekitaran, webhook_verify Memanfaatkan skema penyedia sendiri, dan event_map. Persekitaran yang tidak dinyatakan ialah cara penyedia dalam mod ujian menerima pembayaran sebenar.
OpsIQ vs a Integrasi DIY.
Apa yang diberikan oleh platform yang terikat kontrak, bertandatangan dan diaudit kepada anda, yang tidak akan pernah diberikan oleh webhook dan saluran tindakan AI buatan sendiri.
| Kemampuan berbakat | Bina sendiri | OpsIQ |
|---|---|---|
| Skop Bearer API + Webhooks ditandatangani HMAC | Tangan-digulung | ✓ |
| Penulisan Dry-run + 24_jam sukses replay | AYAH | ✓ |
| 1m → 5m → 30m → 2h → 12h retries | Antrian DIY | ✓ |
| Registrasi aksi-kontrak-aksi (AI tidak dapat menemukan panggilan) | — | ✓ |
| Dasar pengesahan sebelum kesan sampingan | — | ✓ |
| Selubung galat stabil + ID permintaan | Pengelogan Manual Uggging | ✓ |
| HTTP langsung Ukraina + pilihan klien yang dihasilkan | Tulis sendiri | ✓ |
| KehampaanAPI 3.0.3 kontrak mudah dibaca mesin | Mungkin | ✓ |
| Builder enam peringkat + get keluaran pakej | Ufinah membangun sebuah rantaian alat | ✓ |
| Kunci dan batas per jam yang dipinda oleh Ruang Kerja-Cyword | Varian | ✓ |
| Corak penyambung: kod platform kekal terasing | — | ✓ |
Soalan pembangun, Dijawab oleh Meka.
Pengesahan, kontrak, cuba semula, penjanaan klien, ujian selamat dan model penyambung, sebelum permintaan pengeluaran pertama.
Authorization: Bearer opq_…. Kunci boleh tanpa sekatan, bersekatan atau baca sahaja, membawa skop keistimewaan minimum, mematuhi had setiap jam dan boleh disematkan pada ruang kerja. Tandatangan webhook adalah berasingan: penghantaran keluar membawa X-OpsIQ-Signature, X-OpsIQ-Timestamp, X-OpsIQ-Event dan X-OpsIQ-Delivery.hash_hmac('sha256', $rawBody, $secret) Dan membandingkannya dengan digest heksadesimal X-OpsIQ-Signature jar menggunakan hash_equalsValidate X-OpsIQ-Timestamp Di dalam jendela replay dan penggunaan X-OpsIQ-Delivery sebagai pengecam penghantaran yang boleh dikesan.dry_run pada tindakan yang kontrak janaannya menyokongnya, jalankan ujian sambungan terhad Connector Builder, periksa fail yang dijana, dan lulus pematuhan pakej serta get keluaran sebelum menganggap penyambung itu sedia.settings.json, opsional actions.json---- -- enam tahap membangunnya, registry menemukan itu; sesuai dan lepaskan gerbang validasi itu.