Buat platform Anda Bisa dioperasi.
OpsIQmengekspos REST yang bersihAPI, HMAC-signed webhooks, sebuah aksional-kontrak registry dan suidy- to-ship SDKs. Tentukan apa yang terjadi api dari sistem Anda, apa tindakan AI diperbolehkan untuk dijalankan, dan apa data aman untuk dibaca.OpsIQmenangani tanda tangan, pengulangan, catatan audit dan konfirmasi mengalir untuk Anda.
Permintaan masuk Signed webhook keluar.
Anda POST keOpsIQ APIdengan kunci pembina scoped Anda.OpsIQmemeriksa scope dan peran, menjalankan aksi dikontrak, menulis baris audit - kemudian kebakaran sebuah HMAC ditandatangani webhook kembali ke titik akhir Anda. Setiap hop dikonfirmasi, idempoten dan mencoba kembali pada kegagalan.
Dari nol untuk integrasi hidup dalam empat langkah.
Hasilkan sebuah kunci, kebakaran acara pertama Anda, berlangganan webhook, register sebuah aksi. Anda dapat menjalankan seluruh loop terhadap sandbox sebelum menyentuh data produksi.
Ambil kunci
Mendaftar dan menghasilkan Pemuat scopedAPIkunci (opq_…) dalam pengaturan pengembang, dan memberikan setiap integrasi hanya permukaan yang dibutuhkan.
& Berlangganan
POST sebuah signed events/fire (atau menggunakanSDK), kemudian titik apapunURLpada setiap acara, ditandatangani, dengan ID pengiriman dan back- off mengulang.
Mendaftar suatu aksi
Menyatakan kontrak aksi yang ditandatangani sehingga AI dapat dengan aman menjalankan operasi, dengan pemeriksaan peran, kebijakan konfirmasi dan jejak audit penuh.
Satu pola konektor. Lima primitif bersih.
Apa pun platform-spesifik tinggal di konektor.OpsIQinti tetap umum, AI tetap dapat diprediksi, dan integrasi Anda tetap audable.
Katakan OpsIQ apa yang baru saja terjadi.
Tembakkan peristiwa universal dari platform Anda - atau nama acara suai Anda sendiri. Setiap pelanggan bereaksi secara langsung, dalam urutan prioritas.
Referensi acarainvoice.paid, ticket.created, subscription.cancelled, customer.signed_up atau Anda sendiri.
Para pelangganOtak AI, aturan otomatisasi, konektor cermin dan titik akhir webhook Anda semua bereaksi.
Urutan prioritasDeterministik pengiriman sehingga cermin menulis sebelum waspada api.
KatakanOpsIQApa Al diperbolehkan untuk dilakukan.
Sebuah kontrak aksi adalah sebuah JSON deklarasi: apa yang dilakukan aksi, peran yang dapat menjalankannya, parameter apa yang diterima, apakah konfirmasi diperlukan, dan titik akhir untuk memanggil.
Skema aksi{
"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
}
Dorong peristiwa ke tumpukan Anda - dengan bukti kriptografi.
BerlanggananURLuntuk acara apapun.OpsIQPOSTSJSONMuatan ditandatangani dengan HMAC-SHA256 di atas tubuh mentah - verifikasi dalam beberapa baris.
$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);
Menjatuhkan klien untuk bahasa yang sudah kau gunakan.
Tiga SDK resmi menangani otentikasi, penandatanganan, coba ulang, kunci idempotensi dan tanggapan diketik. Atau tetap framework- bebas - setiapSDKadalah pembungkus tipis sekitar permukaan REST yang sama.
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",
})
Membangun sekali.
Konektor adalah folder dengan satu kelas PHP.OpsIQMenemukannya, registri menghubungkan peristiwa, dan platform-spesifik kode Anda tetap terpisah dari inti.
Panduan konektoridentityProviders(), contextProviders(), registerActions(), subscribers(), handleWebhook().
Terkait muatanactions.json dan settings.json Menyatakan kontrak dan kepercayaan.
Otomatis ditemukanJatuhkan folder, tanda tangani, aktifkan dalam admin.
Bahasa Inggris biasa masuk Operasi Audited keluar.
OpsIQtidak pernah menciptakan panggilan yang tepat. ia berjalan melalui kontrak yang terdaftar, menyiapkan muatannya, meminta konfirmasi ketika aksi membutuhkannya, dan menghasilkan sebuah baris audit lengkap ketika mengeksekusi, sehingga AI yang dapat tindakan tidak pernah menjadi AI Anda tidak bisa percaya.
API permukaan sekilas.
Setiap titik akhir inti, idempotensi, dan batas nilai per- kunci. Kontrak mesin yang dibaca penuh hidup dalam referensi OpenAPI 3.0.3.
POST /v1/events/fireHMACYaWHMCSPOST /v1/actions/runHMACYa200 / menitPOST /v1/webhooks/testHMACYa60 / menitGET /v1/customers/{id}HMACYaBometGET /v1/ticketsHMACYaBometGET /v1/connectorsHMACYaBometBatas rate per kunci dan dikembalikan pada setiap respon sebagai X-OpsIQ-RateLimit-Remaining(Dan melampaui batas) karena mereka dalam hal tersebut tiada lain daripada mereka yang lebih utama dari mereka. 429 dengan Retry-After tajuk. Kontrak yang mudah dibaca (setiap titik akhir, skema, dan galat) tinggal di Referensi OpenAPI 3.0.3.
Kirimkan konektor ke dalam lima langkah.
Sebuah konektor adalah folder yang sendiri-berisi.OpsIQMenemukan itu, registry kabel peristiwa, dan platform Anda - spesifik kode tidak pernah bocor ke dalam inti.
connector.php memperluas AbstractConnector.actions.json dan settings.json manifest.Kunci kotak pasir dan penguji webhook.
Setiap area kerja mengekspos kotak pasir: kunci yang discoped terpisah yang hits samaAPIpermukaan tanpa menyentuh data produksi. POST /v1/webhooks/test untuk menembakkan pengiriman sampel yang ditandatangani di titik akhir dan mengkonfirmasi verifikasi tanda tangan Anda sebelum siaran langsung. Self-hosted installs menjalankan jalur kode identik, tanpa disorot perilaku antara awan dan on- Prem.
OpsIQ vs a Integrasi DIY.
Apa kontrak-terikat, ditandatangani, diaudit platform memberi Anda bahwa bergulir sendiri webhook Anda dan pipa-tindakan AI- tidak akan pernah.
| Kapasyability | Gulung sendiri | 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) | Variunit-format | ✓ |
| Connector pattern: platform code stays isolated | — | ✓ |
Pertanyaan pengembang, Jawab.
Auth, tanda tangan, SDK, sandboxing dan model konektor: semua yang akan anda minta sebelum permintaan pertama.
Authorization: Bearer opq_…. OpsIQmemeriksa scope kunci dan peran aktor sebelum apapun berjalan. Pengait web terpisah: setiap webhookOpsIQMengirimkan sebuah X-OpsIQ-Signature (hex HMAC-SHA256 dari tubuh mentah) dan X-OpsIQ-Timestamp untuk kembali perlindungan, sehingga Anda dapat memverifikasi kami sebagai imbalan, dan inbound webdocks Anda kirim diverifikasi dengan cara yang sama.requires_confirmation muncul kartu pratilik ke manusia sebelum efek samping berjalan.hash_hmac('sha256', $rawBody, $secret) (hex dicerna tanpa awalan) dan membandingkannya dengan X-OpsIQ-Signature tajuk dengan pemeriksaan waktu constant (hash_equals). Setiap pengiriman juga membawa sebuah penanda waktu, sebuah kunci idempotensi dan ID pengiriman yang dapat anda lacak. snippet PHP pada halaman ini adalah seluruh verifikasi.POST /v1/webhooks/test Untuk menembakkan sampel yang ditandatangani pada titik akhir dan mengkonfirmasi verifikasi Anda sebelum pergi hidup.AbstractConnector, ditambah actions.json dan settings.json manifestasi. Anda mengimplementasikan identityProviders(), contextProviders(), registerActions(), subscribers() dan handleWebhook(). OpsIQauto- menemukan itu, kabel peristiwa dan menjaga platform-spesifik kode Anda secara bersih dipisahkan dari inti.