अपना मंच बनाएं एआई-operable।
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.
में अनुरोध दायर किया गया। साइन आउट किया गया घटना।
एक कार्रवाई करने के लिए पोस्ट /api/v1.php एक स्कोप्ड बियरर कुंजी के साथ। OpsIQ वर्कस्पेस को पिन करें, कार्रवाई अनुबंध और अनुमतियों को मान्य करता है, फिर इसे निष्पादित या सूखा कर देता है। सब्सक्राइब्ड कैनोनिकल इवेंट्स एक HMAC-signed डिलीवरी कतार के माध्यम से ट्रेसेबल प्रयासों और बाध्य रिट्रीज के साथ छोड़ देते हैं।
कुंजी से नियंत्रित एकीकरण तक तीन चरण
कम से कम प्रिविलेज कुंजी जारी करें, उत्पन्न अनुबंध की खोज करें, एक लिखने को सूखा दें, फिर जब आपके आवेदन को पृष्ठभूमि घटना वितरण की आवश्यकता होती है तो वेबहुक को सब्सक्राइब करें।
एक कुंजी प्राप्त करें
साइन अप करें और एक स्कोप्ड बियरर उत्पन्न करें API कुंजीopq_…) डेवलपर सेटिंग्स में, और प्रत्येक एकीकरण को केवल इसकी आवश्यकताओं की सतहों को ही देते हैं।
खोज और मान्य करें
पढ़िए meta.actions, meta.action और meta.scopesउपयोग dry_run निष्पादन से पहले लिखने के लिए मान्य करने के लिए।
निष्पादित और सदस्यता
लिखने के लिए एक आइडमेटेंसी कुंजी जोड़ें, फिर अपनी आवेदन आवश्यकताओं को अपने आवेदन की घटनाओं के लिए अपने समापन बिंदु को सब्सक्राइब करें।
एक कनेक्टर पैटर्न। पांच स्वच्छ आदिम।
कुछ भी प्लेटफॉर्म-विशिष्ट जीवन एक कनेक्टर में। OpsIQ कोर सामान्य रहता है, AI पूर्वानुमान योग्य रहता है और आपका एकीकरण लेखा परीक्षा योग्य रहता है।
टेल OpsIQ क्या हुआ?
अपने मंच से एमिट कैनोनिकल इवेंट्स, या एक शासित कस्टम इवेंट को परिभाषित करते हैं। सब्सक्राइबरों को पंजीकृत प्राथमिकता और वितरण नियमों के माध्यम से कार्यक्रम प्राप्त होता है।
घटना संदर्भinvoice.paid, ticket.created, subscription.cancelled, customer.signed_up या आपका खुद का।
फैन-आउट सब्सक्राइबरएआई मस्तिष्क, स्वचालन नियम, दर्पण कनेक्टर और आपका वेबहुक सभी प्रतिक्रियाएं इंगित करता है।
प्राथमिकतानियतिवादी प्रेषण इसलिए दर्पण आग की चेतावनी से पहले लिखते हैं।
टेल OpsIQ एआई को क्या करने की अनुमति है।
हर नामित ऑपरेशन को एक उत्पन्न अनुबंध प्राप्त होता है: गुंजाइश, फीचर, रीड या राइट टाइप, रिस्क, कन्फर्मेशन पॉलिसी, अनुरोध और प्रतिक्रिया स्कीमा, ड्राई रन सपोर्ट, आइडिमेटेंसी और स्थिर त्रुटियों।
कार्य स्कीमा{
"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"] }
}
अपने स्टैक के लिए घटनाओं पुश - क्रिप्टोग्राफिक सबूत के साथ।
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
प्रत्यक्ष उपयोग करें या क्लाइंट को उत्पन्न करें जिसे आप पसंद करते हैं HTTP।
पूर्ण जनरलAPI OpenAPI के रूप में प्रकाशित किया गया है 3.0.3 और पोस्टमैन। PHP संदर्भ प्रेषकों प्लस नोड और पायथन एकीकरण ग्राहकों ने हस्ताक्षरित घटना और वेबहुक प्रवाह को कवर किया; किसी भी स्टैक को उसी तरह कॉल कर सकता है JSON सीधे कार्रवाई।
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.",
},
)
एक बार बनाएँ। कुछ में प्लग करें।
एक कनेक्टर पहचान, Auth, टेस्ट, एक्शन, ट्रिगर्स और समीक्षा के माध्यम से उत्पन्न या आयातित एक शासी पैकेज है। इसका प्रकटन क्षमता सतहों की घोषणा करता है OpsIQ को उजागर करने की अनुमति है।
छह चरण बिल्डर खोलेंमें सादा अंग्रेजी। लेखापरीक्षित ऑपरेशन बाहर।
OpsIQ कभी सही कॉल नहीं आविष्कार करता है. यह पंजीकृत अनुबंधों के माध्यम से चलता है, पेलोड तैयार करता है, पुष्टि के लिए पूछता है जब कार्य की आवश्यकता होती है, और एक पूर्ण ऑडिट पंक्ति उत्पन्न करता है जब यह निष्पादित होता है, इसलिए एक एआई जो कर सकता है कार्य कभी भी एआई नहीं बन सकता है।
API सतह एक नज़र में।
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.writeDry_run + idempotencyकॉन्फ़िगर / घंटेACTION security.reportsecurity.writeDry_run + idempotencyकॉन्फ़िगर / घंटेACTION platform.routes.writeव्यवस्थापकपुष्टि + कुंजीकॉन्फ़िगर / घंटेACTION meta.actionsसार्वजनिक खोजकेवलकॉन्फ़िगर / घंटेACTION tickets.listtickets.readकेवलकॉन्फ़िगर / घंटेACTION connectors.listconnectors.readकेवलकॉन्फ़िगर / घंटेhr.* अनुबंध · hr.read / hr.write गुंजाइशACTION hr.people.listhr.readकेवलकॉन्फ़िगर / घंटेACTION hr.people.createhr.writeDry_run + idempotencyकॉन्फ़िगर / घंटेACTION hr.org.treehr.readकेवलकॉन्फ़िगर / घंटेhr एक इनकार हो जाता है, कोई खाली सूची नहीं। क्या है PeopleOS HR.दर सीमा एक घंटे की खिड़की पर प्रति कुंजी को कॉन्फ़िगर किया गया है। जवाब X-RateLimit-Limit, X-RateLimit-Remaining और X-RateLimit-ResetA recessed request return to a अस्वीकार अनुरोध रिटर्न 429 साथ Retry-AfterTo use the way of a suffering. ओपनएपीआई 3.0.3 अनुबंध या पोस्टमैन संग्रह उसी समय रजिस्ट्रार से उत्पन्न।
निर्माण, परीक्षण और रिलीज में छह चरणों।
एक शासित प्रोफ़ाइल से शुरू करें या अनुबंध को खुद परिभाषित करें। बिल्डर प्रत्येक चरण को मान्य करता है इससे पहले कि वह स्वयं युक्त कनेक्टर पैकेज उत्पन्न करे।
सुरक्षित रूप से मान्य, फिर रिलीज गेट पास करें।
उपयोग dry_run समर्थित लिखने के कार्यों पर, बिल्डर की बाध्य कनेक्शन परीक्षण चलाएं और रिलीज से पहले उत्पन्न प्रकटन और अनुबंध का निरीक्षण करें। पैकेज सत्यापन क्षमता नामों, सेटिंग्स, सिद्धि और आवश्यक फ़ाइलों को जांचता है; पृष्ठभूमि कार्यकर्ता प्रतिक्रियाशील मतदान और आउटबाउंड डिलीवरी संभालते हैं।
एक पैकेज की क्षमता का दावा नहीं कर सकता इसके कोड में नहीं है।
OpsIQ\Connectors\ConnectorContract प्राधिकरण है। रनटाइम खोज, बिल्डर, प्रथम-पार्टी पैकेज, अनुरूपता, जनरल API प्रत्येक संदर्भ में पढ़ा जाता है कि एक रजिस्ट्री। एक क्षमता की घोषणा करें और तीन फाइलों को पहले से ही एक दूसरे के साथ सहमत होना चाहिए। OpsIQ आप के लिए एक पंक्ति मार्ग है।
- 01 connector.php रनटाइम क्लास
- 02 IdentityProvider.php स्थिर बाहरी कुंजी
- 03 SalesIngest.php (concileSales)
- 04 actions.json नाम का संचालन
- 05 settings.json ऑपरेटर विन्यास
- 06 connector_contract.json मशीन पठनीय प्राधिकरण
hmac-sha256 प्रति फ़ाइल SHA- का एक निश्चित पेलोड पर256 उत्तर है यह संकेत के बाद से संशोधित किया गया हैAnne ed25519 हस्ताक्षर जवाब यह Nabtech_, बंडल सार्वजनिक कुंजी के साथ चेक करने योग्य और कोई साझा रहस्य नहीं है। एक बाइट और पहला स्टॉप मिलान संपादित करें।
marketplace.json परिभाषा के अनुसार हस्ताक्षर से बाहर है: इंस्टॉलर ने साइन इन करने के बाद इसे लिखा, इसलिए प्रकाशक ने कभी भी इस पर हस्ताक्षर नहीं किया।
कभी असफल नहीं हुआ यह साबित नहीं हुआ है।
ग्रीन टेस्ट आपको आज कुछ भी नहीं टूटते। वे आपको बता नहीं देते कि आपने लिखा था गार्ड उस चीज़ को रोक देगा जिसे इसे रोकने के लिए लिखा गया था, क्योंकि एक गार्ड जो कभी भी व्यायाम नहीं किया जाता है वह बिल्कुल उसी तरह से गुजरता है जो कुछ नहीं करता है। इसलिए हम अपने दिल को उद्देश्य पर रोकते हैं और मांग करते हैं कि मॉनिटर चिल्लाती है।
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.
कभी भी लागू नहीं होता।
खोज पाठ मिलान नहीं किया, फ़ाइल को बिना किसी चीज से जोड़ा गया था, सूट पारित हो गया और रिकॉर्ड किए गए सबूत पुराने कोड के तहत ग्रीन कोड के बारे में जो कभी पुराना नहीं था। वास्तव में एक पाठ्य मैच की आवश्यकता होती है और फ़ाइल हेश की तुलना किसी भी पक्ष में की जाती है।
उत्परिवर्तन कुछ और तोड़ दिया।
सूट लाल हो गया क्योंकि फ़ाइल बंद कर दिया गया है या बूटस्ट्रैप मर गया, और सबूत एक लाल दर्ज की जो गार्ड के साथ कुछ नहीं था। उत्परिवर्ती को छोड़ने से पकड़ लिया और आवश्यकता पड़ने पर पकड़ा गया नाम असफलता के बीच परीक्षण।
यह डिस्क पर एक mutant छोड़ नहीं सकता है।
हर उत्परिवर्तन मूल को वेब-सर्वेड ट्री के बाहर एक साइडकार की प्रतिलिपि बनाता है, उत्कृष्ट परिवर्तन का नामकरण करने वाले मार्कर लिखते हैं और प्रत्येक निकास पथ पर शटडाउन हैंडलर द्वारा undone किया जाता है। उस फ़ाइल के अगले उत्परिवर्तन से पहले दुर्घटनाग्रस्त रन से मार्कर सम्मानित किया जाता हैं।
प्रमाणन एक आदेश है एक निकास कोड के साथ।
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/ कवर सेटिंग्स, कार्य, बिल्डर चश्मा, यात्रा और वाणिज्य घटना मैपिंग्स, वर्कफ़्लो व्यंजनों, कनेक्टर अनुबंधों और रिलीज प्रकट होता है।
- manifests पार्सेय और एक दूसरे के साथ सहमत
- क्षमताओं रनटाइम क्लास पर मौजूद
- interfaces जहां घोषणा की
- files हर आवश्यक फ़ाइल मौजूद
- क्रिया कार्रवाई प्रकट करने से मेल खाते हैं
- destructive पुष्टि की घोषणा
- पहचान एक स्थिर बाहरी कुंजी, ईमेल नहीं
- खेलना दोहराने की अद्यतनता कभी डुप्लिकेट नहीं होती
- उद्यम घोषणाएं विस्तार से मेल खाती हैं
- doc README, DEVELOPER, CHANGELOG
- स्कीमा हर JSON मान्यता
$ 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
पहले व्यक्ति को वास्तविक गैर-उत्पादन खाते में इंगित करें --live-settings=/secure/test-acme.jsonजबकि आप अभी भी परेशान हैं, आखिरी एक को स्वैप करें --unsigned-ok: यह एक लापता हस्ताक्षर को एक उम्मीद की चेतावनी के रूप में मानता है, बजाय यह दिखाने के लिए ठीक है।
क्या आप बेच सकते हैं घोषणा एक फ़ाइल है, पंजीकरण नहीं।
एक कनेक्टर जो घोषणा करता है कि किससे बेच सकता है खुद संचालन उत्तर OpsIQ के कैनोनिकल वाणिज्य भूमिकाएं। फ़ाइल की उपस्थिति दावा है। यह विक्रय सेटिंग्स में दिखाई देता है जब वह रुक जाता है तब वह घोषणा करता है और गायब हो जाता है। इसमें शामिल होने की कोई सूची नहीं है और पूछने के लिए कोई भी नहीं है।
एक canonical लिखना भूमिका एक सामान्य रिकॉर्ड लिखने के लिए मैप किया गया। मैच संरचनात्मक है: एक भंडारण दोपहर एक mutating क्रिया, जो भी अपने नामकरण सम्मेलन के बगल में। व्यापार पंक्ति प्रत्यक्ष लेखन मंच के मूल्य निर्धारण, उपलब्धता लॉकिंग और पुष्टि मेल छोड़ देता है, और एक आदेश का उत्पादन व्यापारी की अपनी प्रणाली केवल आधा में विश्वास करता है। नहीं कोई भी अपने नामांकित कन्वेंशन के अलावा, कोई भी विकल्प नहीं है। recovery तो एक समय-समय पर असुरक्षित होगा।
{
"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 उत्पन्न होता है और इसकी स्कीमा सेट additionalProperties:falseइसलिए एक हाथ से अधिकृत ब्लॉक वहाँ वैधीकरण विफल हो जाएगा और फिर अगले जनरेटर रन पर ओवरराइट किया जा सकता है।
नहीं CommerceRole वहाँ मौजूद नहीं है। OpsIQ कभी भी किसी ऑपरेशन नाम से एक को पसंद नहीं करता, क्योंकि कोई नाम वादा नहीं होता।
आपके ऑपरेशन में होना चाहिए actions.jsonTo घोषणा करना कि वह मौजूद नहीं है ग्राहक को कुछ ऐसा वादा करता है जो तब कुछ भी उत्पन्न नहीं होता।
सबसे खतरनाक टाइमआउट प्लेटफॉर्म के बाद पहले से ही काम किया जा सकता है। एक idempotent "मेरे लिखने वाली भूमि" लुकअप के बिना, एकमात्र विकल्प अंधेरे हैं या ऑर्डर खो देते हैं।
किसी भी भुगतान वर्ग की भूमिका को भी घोषित किया गया है payment_profile साथ वातावरण, webhook_verify प्रदाता की अपनी योजना का उपयोग करके और event_mapएक अस्थाई वातावरण यह है कि कैसे एक परीक्षण मोड प्रदाता को लाइव भुगतान मिलता है।
OpsIQ बनाम एक DIY एकीकरण।
अनुबंध के साथ, हस्ताक्षर किए गए, लेखापरीक्षित मंच आपको देता है कि अपने स्वयं के वेबहुक को रोल करना और एआई-एक्शन प्लंबिंग कभी नहीं होगा।
| क्षमता | अपना खुद का रोल | OpsIQ |
|---|---|---|
| स्कोप्ड बियरर API + HMAC-signed webhooks | हाथ से लुढ़का | ✓ |
| ड्राई रन लिखते हैं + 24_- घंटे सफल पुनः खेलना | DIY | ✓ |
| 1m → 5m → 30m →2h → 12h रिटारी | DIY कतार | ✓ |
| एक्शन-संविदा रजिस्ट्री (AI कॉल को आविष्कार नहीं कर सकता) | — | ✓ |
| साइड-इफेक्ट्स से पहले पुष्टिकरण नीति | — | ✓ |
| स्थिर त्रुटि लिफाफे + अनुरोध ID | मैनुअल लॉगिंग | ✓ |
| प्रत्यक्ष HTTP + उत्पन्न क्लाइंट विकल्प | अपना खुद का लिखना | ✓ |
| ओपनएपीआई 3.0.3 मशीन पठनीय अनुबंध | शायद | ✓ |
| छह चरण बिल्डर + पैकेज रिलीज गेट | एक टूलचेन बनाएँ | ✓ |
| कार्यक्षेत्र-pinned कुंजी और घंटे की सीमा | भिन्नता | ✓ |
| कनेक्टर पैटर्न: प्लेटफॉर्म कोड पृथक रहता है | — | ✓ |
डेवलपर प्रश्न, जवाब देना
प्रमाणीकरण, अनुबंध, रिट्राइज़, क्लाइंट जनरेशन, सुरक्षित परीक्षण और कनेक्टर मॉडल, पहले उत्पादन अनुरोध से पहले।
Authorization: Bearer opq_…कुंजी को प्रतिबंधित, प्रतिबंधित या केवल पढ़ने के लिए किया जा सकता है, कम से कम प्राइवेट गुंजाइश ले सकते हैं, एक घंटे की सीमा पर ध्यान दें और इसे वर्कस्पेस में पिन किया जा सके। वेबहुक हस्ताक्षर अलग है: आउटबाउंड डिलीवरी कैरी X-OpsIQ-Signature, X-OpsIQ-Timestamp, X-OpsIQ-Event और X-OpsIQ-Delivery.hash_hmac('sha256', $rawBody, $secret) और इसके साथ ही अपने हेक्साडेसिमल पाचन की तुलना करें X-OpsIQ-Signature उपयोग hash_equalsमान्य X-OpsIQ-Timestamp अपनी पुनः प्रदर्शन विंडो में और उपयोग करें X-OpsIQ-Delivery अनुरेखित वितरण पहचानकर्ता के रूप में।dry_run जिन कार्यों का निर्माण अनुबंध इसका समर्थन करता है, कनेक्टर बिल्डर के बाध्य कनेक्शन परीक्षण को चलाते हैं, अपनी उत्पन्न फ़ाइलों का निरीक्षण करते हैं और कनेक्टर को तैयार करने से पहले पैकेज अनुरूपता और रिलीज गेट्स पास करते हैं।settings.jsonवैकल्पिक actions.jsonएक उत्पन्न क्षमता अनुबंध, प्रलेखन और वैकल्पिक उद्यम एक्सटेंशन। छह चरण बिल्डर इसे इकट्ठा करता है; रजिस्ट्री को पता चलता है; अनुरूपता और रिलीज गेट्स इसे मान्य करते हैं।