Buat platform Anda Bisa dioperasi.
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.
Permintaan masuk. Tanda tangani acara keluar.
POST sebuah aksi ke /api/v1.php with a scoped Bearer kunci. OpsIQ mengikat ruang kerja, memvalidasi kontrak aksi dan izin, lalu melaksanakannya atau menjalankannya secara kering. Peristiwa kanonikal terdaftar keluar melalui baris tunggu pengiriman yang ditandatangani HMAC dengan upaya yang dapat dilacak dan upaya ulang terbatas.
Dari kunci ke integrasi yang diatur dalam tiga langkah.
Keluarkan kunci paling-hak istimewa, temukan kontrak yang dihasilkan, jalankan suatu tulis, lalu langganan webhook ketika aplikasi Anda memerlukan pengiriman latar belakang.
Ambil kunci
Daftar dan buatlah scope Bearer API kunci (opq_…) dalam pengaturan pengembang, dan memberikan setiap integrasi hanya permukaan yang dibutuhkan.
Temukan & validasi
Baca meta.actions, meta.action dan meta.scopes; gunakan dry_run untuk validasi menulis sebelum eksekusi.
Jalankan & langganan
Tambahkan kunci idempotensi untuk ditulis, lalu tulis titik akhir Anda dengan kejadian kanonikal yang diperlukan aplikasi Anda.
Satu pola konektor. Lima primitif bersih.
Apa pun platform-spesifik tinggal di konektor. OpsIQ inti tetap umum, AI tetap dapat diprediksi, dan integrasi Anda tetap audable.
Katakan OpsIQ apa yang baru saja terjadi.
Keluarkan peristiwa kanonikal dari platform Anda, atau definisikan acara kustom yang diatur. Subscriber menerima acara melalui aturan prioritas terdaftar dan pengiriman.
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.
Katakan OpsIQ Apa Al diperbolehkan untuk dilakukan.
Setiap operasi bernama menerima kontrak yang dihasilkan: scope, feature, read or write kind, risk, confirm policy, reqution and response schema, dry- run support, idempotency dan stable errors.
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"] }
}
Dorong peristiwa ke tumpukan Anda - 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
Gunakan HTTP langsung atau hasilkan klien yang Anda suka.
Seluruh Jenderal API diterbitkan sebagai OpenAPI 3.0.3 dan Postman. Pengirim referensi PHP plus klien integrasi Node dan Python mencakup peristiwa yang ditandatangani dan aliran webhook; tumpukan apapun dapat memanggil yang sama JSON Permukaan aksi 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.",
},
)
Membangun sekali.
Konektor adalah paket yang diatur yang dihasilkan atau diimpor melalui Identitas, Auth, Test, Aksi, Triggers dan Review. Berisi ini menyatakan kemampuan permukaan OpsIQ diperbolehkan untuk mengekspos.
Buka Pembangun enam tahapBahasa Inggris biasa masuk Operasi Audited keluar.
OpsIQ tidak 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.
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.writedry_run + idempotencyDikonfigurasi / jamACTION security.reportsecurity.writedry_run + idempotencyDikonfigurasi / jamACTION platform.routes.writeadminkonfirmasi + kunciDikonfigurasi / jamACTION meta.actionsPenemuan PublikHanya bacaDikonfigurasi / jamACTION tickets.listtickets.readHanya bacaDikonfigurasi / jamACTION connectors.listconnectors.readHanya bacaDikonfigurasi / jamhr.* Kontrak hr.read / hr.write skopACTION hr.people.listhr.readHanya bacaDikonfigurasi / jamACTION hr.people.createhr.writedry_run + idempotencyDikonfigurasi / jamACTION hr.org.treehr.readHanya bacaDikonfigurasi / jamhr mendapat penolakan, bukan daftar kosong. Apa itu HR PeopleOS.Batas rate ditata per kunci pada jendela jam. Menanggapi ekspos X-RateLimit-Limit, X-RateLimit-Remaining dan X-RateLimit-Reset(Dan apabila permohonan maaf diterima) dari langit dan dijadikan untuk tah di hari kiamat. 429 dengan Retry-AfterGunakan Kontrak OpenAPI 3.0.3 atau koleksi Postman yang dihasilkan dari yang sama daftar waktu-jalan.
Build, tes dan rilis di enam tahap.
Mulai dari profil diatur atau mendefinisikan kontrak sendiri. Pembangun memvalidasi setiap tahap sebelum menghasilkan paket konektor yang berisi diri sendiri.
Validate aman, kemudian lulus gerbang rilis.
Gunakan dry_run dalam aksi penulisan yang didukung, jalankan uji koneksi builder, dan periksa manifest dan kontrak yang dihasilkan sebelum rilis. Validasi paket memeriksa nama-nama kapabilitas, pengaturan, berkas yang diperlukan; pekerja latar menangani pengajuan reaktif dan pengantaran pengiriman.
Paket tidak dapat mengklaim kemampuan Kodenya tidak memiliki.
OpsIQ\Connectors\ConnectorContract Penemuan Runtime, Pembangun, paket pertama-partai, konformance, Umum API dan setiap referensi membaca bahwa satu registry. Menyatakan kemampuan dan tiga file harus setuju dengan satu sama lain sebelum OpsIQ Rute satu baris untuk Anda.
- 01 connector.php kelas waktu jalan
- 02 IdentityProvider.php kunci eksternal stabil
- 03 SalesIngest.php paralleSales ()
- 04 actions.json operasi bernama
- 05 settings.json konfigurasi operator
- 06 connector_contract.json otoritas mesin-dapat dibaca
hmac-sha256 lebih dari deterministik payload dari perfile SHA-256 hashes jawaban telah ini diubah sejak penandatangananDan ed25519 jawaban tanda tangan itu ditandatangani oleh Nabtech, dapat diperiksa dengan kunci publik bundled dan tanpa rahasia bersama. Sunting satu byte dan yang pertama berhenti cocok.
marketplace.json diluar tanda tangan berdasarkan definisi: pemasang menulis setelah penandatanganan, sehingga penerbit tidak pernah bisa menandatanganinya.
Penjaga yang tak pernah gagal. belum terbukti.
tes hijau tidak memberitahu kamu apa-apa hari ini mereka tidak memberitahumu penjaga yang kamu tulis akan menghentikan hal itu ditulis untuk berhenti karena seorang penjaga yang tidak pernah berolahraga melewati persis seperti penjaga yang tak melakukan apapun jadi kita hentikan jantungnya dengan sengaja dan menuntut bahwa 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.
Mutasinya tidak pernah diterapkan.
Teks pencarian tidak cocok, file itu tidak tersentuh, suite berlalu, dan bukti direkam hijau dibawah kode lama Kekurangan dengan satu pertandingan tekstual dan membandingkan hashes berkas kedua sisi.
Mutasinya merusak sesuatu yang lain.
Suite merah karena file berhenti parsing atau bootstrap mati, dan bukti merekam merah yang tidak ada hubungannya dengan penjaga tertangkap dengan menghubungkan mutan dan membutuhkan bernama tes diantara kegagalan.
Ini tidak bisa meninggalkan mutan di disk.
Setiap mutasi menyalin asli ke sespan di luar pohon web-served, menulis penanda penamaan perubahan yang luar biasa, dan dibatalkan oleh sebuah penanganan shutdown di setiap jalan keluar. Sebuah penanda dari run jatuh dihormati sebelum mutasi berikutnya dari file tersebut.
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, aksi, spesifikasi Builder, pemetaan acara perjalanan dan perdagangan, resep-resep mengalir kerja, kontrak konektor dan manifestasi rilis.
- manifests parse dan setuju dengan satu sama lain
- kemampuan ada di kelas waktu-jalan
- interfaces diimplementasikan dimana dideklarasikan
- files semua berkas yang diperlukan hadir
- aksi cocok dengan daftar aksi
- destructive konfirmasi konon
- identitas kunci eksternal stabil, bukan email
- ulang suatu pemutakhiran berulang, tak pernah menduplikasi
- perusahaan deklarasi cocok dengan ekstensi
- Dokumen README, DEVELOPER, CHANGELOG
- skema setiap JSON validates
$ 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
Arahkan yang pertama pada akun non-produksi nyata dengan --live-settings=/secure/test-acme.jsonSementara kau masih iterasi, menukar yang terakhir untuk --unsigned-ok: itu memperlakukan tanda tangan hilang sebagai peringatan yang diharapkan daripada berpura-pura baik-baik saja.
Mengungkapkan apa yang dapat Anda jual adalah file, bukan registrasi.
Konektor yang dapat menjual deklarasi mana sendiri jawaban operasi OpsIQPertukaran kanonik. keberadaan berkas adalah klaim yang muncul dalam pengaturan penjualan saat itu menyatakan dan menghilang ketika berhenti.
Sebuah kanonikal tulis peran dipetakan ke catatan generik menulis. Pertandingan adalah struktur: sebuah kata benda di samping sebuah verb bermutasi, apapun konvensi penamaan anda. Menulis baris bisnis langsung melewati harga platform, ketersediaan mengunci dan konfirmasi surat, dan menghasilkan urutan sistem pedagang sendiri hanya setengah percaya masuk recovery baik, sehingga timeout akan unrecoverable.
{
"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 dihasilkan dan skema set additionalProperties:false, sehingga tulisan tangan blok ada akan gagal validasi dan kemudian akan ditimpa pada generator berikutnya jalankan.
Peran tidak di CommerceRole OpsIQ tidak pernah memasukkan satu dari nama operasi, karena sebuah nama bukanlah janji.
Operasi harus muncul di Anda actions.jsonMengungkapkan satu yang tidak ada menjanjikan pelanggan sesuatu yang kemudian menghasilkan apa-apa.
Waktu istirahat yang paling berbahaya adalah satu setelah platform mungkin sudah selesai pekerjaan. Tanpa idempoten "apakah tanah tulis saya" lookup, satu-satunya pilihan adalah mengulang buta atau kehilangan urutan.
Peran kelas-gaji apapun juga mendeklarasikan payment_profile dengan lingkungan, webhook_verify menggunakan skema penyedia sendiri, dan event_mapLingkungan yang tidak disebutkan adalah bagaimana penyedia mode test- memerlukan pembayaran langsung.
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 |
|---|---|---|
| Scoped Bearer API + webhooks yang ditandatangani HMAC | Tangan digulung | ✓ |
| Dry- run menulis + 24-jam berhasil replay | DIY | ✓ |
| 1m→5m→30m→ 2h → 12hmencoba | Antrian DIY | ✓ |
| Aksi - kontrak registry (AI tidak dapat menciptakan panggilan) | — | ✓ |
| Konfirmasi kebijakan sebelum efek samping | — | ✓ |
| Galat stabil amplop + permintaan ID | Pengonaktifmanual | ✓ |
| Opsi klien HTTP + langsung yang dihasilkan | Tulis sendiri | ✓ |
| OpenAPI 3.0.3 kontrak mesin-dapat dibaca | Mungkin | ✓ |
| Enam-tahap Builder + paket rilis gerbang | Buat suatu toolchain | ✓ |
| Area kerja - tombol yang disematkan dan batas jam | Variunit-format | ✓ |
| Pola konektor: kode platform tetap terisolasi | — | ✓ |
Pertanyaan pengembang, Jawab.
Otentikasi, kontrak, retries, generasi klien, pengujian yang aman dan model konektor, sebelum permintaan produksi pertama.
Authorization: Bearer opq_…Kunci dapat dibatasi, dibatasi, atau hanya baca-baca, membawa lingkup paling jauh hak cipta, mematuhi batas jam dan dapat dihubungkan ke area kerja. Tanda tangan Webhook terpisah: pengiriman luar yang dibawa X-OpsIQ-Signature, X-OpsIQ-Timestamp, X-OpsIQ-Event dan X-OpsIQ-Delivery.hash_hmac('sha256', $rawBody, $secret) dan membandingkan heksadesimal digest dengan X-OpsIQ-Signature memakai hash_equalsValidasi X-OpsIQ-Timestamp dalam jendela replay Anda dan gunakan X-OpsIQ-Delivery sebagai identifikasi pengiriman dilacak.dry_run pada aksi yang menghasilkan kontrak mendukungnya, jalankan Tes koneksi Conektor Builder yang terbatas, memeriksa berkas yang dihasilkan, dan lulus konformance paket dan melepaskan gerbang sebelum memperlakukan connector sebagai siap.settings.json, opsional actions.json, sebuah kontrak kemampuan yang dihasilkan, dokumentasi dan ekstensi perusahaan opsional. Pembangunan enam tahap memperhitungkannya; registri menemukannya; konformansi dan melepaskan gerbang memvalidasi itu.