Kau harus membuat panggungmu Boleh dioperasikan AI.
Call 2,418 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.
Permintaan Skop SANGAT masuk Acara ditandatangani.
KOSTA POS sebuah tindakan untuk /api/v1.php Spieper dengan kunci Bearer terskop.OpsIQMemindai area kerja, mengesahkan kontrak dan izin aksi, kemudian mengeksekusi atau mengeringkan.HMAC Saluran pengiriman yang ditandatangani dengan percobaan yang dapat dilacak dan retrie terikat.
Dari kunci untuk mengatur integrasi dalam Tiga langkah.
Keluarkan kunci yang paling tidak berharga, temukan kontrak yang dihasilkan, jalankan sebuah tulisan kering, lalu langgan webhook ketika aplikasi Anda membutuhkan pengiriman peristiwa latar belakang.
Cari kunci
Janda tangan dan hasilkan kunci API Bearer terskop (_PH)opq_…) dalam pengaturan pengembang, dan memberikan setiap integrasi hanya permukaan yang dibutuhkan.
Discover & validate
Bacalah meta.actions, meta.action BAHWA 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 pola konektor. Lima primitif bersih.
Apa pun yang spesifik platform hidup di konektor. inti OpsIQ tetap generik, AI tetap dapat diprediksi, dan integrasi Anda tetap dapat audit.
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, aturan otomatisasi, penyambung cermin dan titik akhir webhook Anda semua bereaksi.
Urutan Keutamaan Keprioritasan UGPemutusan deterministik , jadi cermin menulis sebelum peringatan kebakaran.
Beritahu OpsIQ apa yang AI diperbolehkan lakukan.
Setiap operasi bernama menerima kontrak yang dihasilkan: skop, fitur, jenis baca atau tulis, risiko, kebijakan konfirmasi, permintaan dan respon skema, dukungan dry-run, idemptensi dan kesalahan 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"] }
}
- Dengan bukti kriptografi.
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
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.
Konektor A adalah paket terkonektor yang dibuat atau diimpor melalui Identity, Auth, Test, Actions, Triggers and Review. manifestonya menyatakan permukaan kapabilitas OpsIQ diizinkan untuk mengekspos.
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 Kau tak bisa percaya pada AI.
API Permukaan Hanya sekilas.
One JSON POST surface exposes 2,418 named actions. Each generated contract declares auth scopes, read/write kind, risk, confirmation, request schema, dry-run, idempotency and stable errors.
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.* contracts · 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.Batasan angka UDDA dikonfigurasi per tombol pada jendela per jam. Respons ekspos X-RateLimit-Limit, X-RateLimit-Remaining BAHWA DAN X-RateLimit-Reset[5] ; sebuah permintaan ditolak kembali 429 DENGAN BAHASA Retry-AfterGunakan KemuaaaaAPI Buka 3.0.3 kontrak OR atau ORANG 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 didukung oleh pihak-pihak yang didukung, jalankan uji koneksi terbatas Builder, dan memeriksa manifes dan kontrak yang dihasilkan sebelum rilis. Paket validasi memeriksa nama kapabilitas, pengaturan, pembuktian dan berkas yang diperlukan; pekerja latar belakang menangani pemungutan suara reaktif dan pengiriman outbound.
Paket tidak bisa mengklaim kemampuan Kodenya tidak memiliki.
OpsIQ\Connectors\ConnectorContract Penemuan waktu berjalan, pembangun, paket pihak pertama, kesesuaian, Jenderal API Dan setiap referensi membaca bahwa satu registry. menyatakan kemampuan dan tiga file harus saling setuju satu sama lain sebelumnya OpsIQ Rute satu baris untuk 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 operator configuration
- 06 connector_contract.json otoritas mudah dibaca mesin
hmac-sha256 \"Fodin over a deterministik muatan dari per-berkas SHA-256 Whats hashes jawaban Ini sudah diubah sejak penandatangananAn ed25519 Jawaban tanda tangan Apa itu ditandatangani oleh Nabtech_Dicek dengan kunci publik yang dibundel dan tidak ada rahasia bersama.
marketplace.json onymous berada di luar tanda tangan dengan definisi: pemasang menulisnya setelah penandatanganan, sehingga penerbit tidak pernah bisa menandatanganinya.
Penjaga yang tidak pernah gagal Tidak terbukti.
Tes hijau mengatakan padamu bahwa tidak ada yang rusak hari ini mereka tidak memberitahu penjaga yang kau tulis akan menghentikan hal itu ditulis untuk berhenti karena seorang penjaga yang tidak pernah menjalankannya seperti penjaga yang tak melakukan apa-apa jadi kami sengaja menghentikan jantungnya dan menuntut bahwa monitor berteriak
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.
Kamar itu menjadi merah karena file berhenti parsing atau bootstrap mati, dan bukti mencatat merah yang tidak ada hubungannya dengan penjaga. Nama Tes di antara kegagalan.
Ini tidak bisa meninggalkan mutan di disk.
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.
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/ Pengaturan sampul, tindakan, spesifikasi pembangun, pemetaan acara perjalanan dan perdagangan, resep alur kerja, kontrak konektor dan manifes rilis.
- manifests (Dan mereka saling bersesuaian) dalam masalah agama (dan saling bermufakat) dalam setiap urusan
- 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 Ulang ulang pembaruan, jangan pernah duplikat
- syarikat deklarasi python cocok dengan ekstensi
- doc gelar doktor 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.
Memaktakan apa yang bisa kau jual Dia bukan sebuah berkas, bukan pendaftaran.
Sebuah penyambung yang bisa menjual menyatakan mana yang Milik mereka sendiri Operasi-operasi magazore menjawab peran perdagangan kanonik OpsIQ_. kehadiran file adalah klaim. itu muncul dalam pengaturan penjualan saat ia menyatakan dan menghilang ketika berhenti tidak ada daftar untuk bergabung dan tidak ada yang bertanya
Apa yang kau lakukan? write 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 Jadi, waktu habis juga tidak bisa 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 ada. OpsIQ _tidak pernah menyimpulkan satu dari nama operasi, karena sebuah nama bukanlah janji.
Operasi harus muncul dalam Anda actions.jsonMenyatakan satu yang tidak ada menjanjikan sesuatu pada pelanggan yang kemudian menghasilkan apa-apa.
The most dangerous timeout is the one after the platform may already have done the work. Without an idempotent "did my write land" lookup, the only options are retry blind or lose the order.
Setiap pekerjaan yang juga menyatakan peran kelas pembayaran payment_profile Dan dengan Persekitaran, webhook_verify Memanfaatkan skema penyedia sendiri, dan event_mapLingkungan yang tidak dinyatakan adalah bagaimana penyedia mode uji coba mengambil pembayaran langsung.
OpsIQ vs a Integrasi DIY.
Apa kontrak-bound, ditandatangani, audit platform memberi Anda bahwa bergulir webhooks Anda sendiri dan AI-action pipa tidak akan pernah.
| Kemampuan berbakat | Kau sendiri yang harus pergi | OpsIQ |
|---|---|---|
| Skop API + HMAC-signed webhooks | 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) | — | ✓ |
| Kebijakan pengesahan kejelasan sebelum efek samping | — | ✓ |
| Selubung galat stabil + ID permintaan | Pengelogan Manual Uggging | ✓ |
| HTTP langsung Ukraina + pilihan klien yang dihasilkan | Kau harus menulis sendiri. | ✓ |
| KehampaanAPI 3.0.3 kontrak mudah dibaca mesin | Mungkin | ✓ |
| Builder 6 tahap + gerbang pelepasan paket | Ufinah membangun sebuah rantaian alat | ✓ |
| Kunci dan batas per jam yang dipinda oleh Ruang Kerja-Cyword | Varian | ✓ |
| Pola konektor: kode platform tetap terisolasi | — | ✓ |
Pertanyaan pengembang, Dijawab oleh Meka.
Autentifikasi, kontrak, retries, generasi klien, pengujian aman dan model konektor, sebelum permintaan produksi pertama.
Authorization: Bearer opq_…Kunci dapat dibatasi, dibatasi atau hanya dibaca, membawa lingkup yang tidak layak, mematuhi batas per jam dan dapat disematkan ke ruang kerja. Penandatanganan Webhook terpisah: outbound pengiriman barang X-OpsIQ-Signature, X-OpsIQ-Timestamp, X-OpsIQ-Event BAHWA 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 pengiriman yang dapat dilacak.dry_run Tindakan yang kontraknya dijangkiti mendukungnya, menjalankan tes koneksi Terikat Connector Builder, memeriksa file-file yang dihasilkannya, dan melewati kesesuaian paket dan pintu gerbang rilis sebelum memperlakukan konektor sebagai siap.settings.json, opsional actions.json---- -- enam tahap membangunnya, registry menemukan itu; sesuai dan lepaskan gerbang validasi itu.