Создайте свою платформу Работает с ИИ.
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.
Запрос был сбит. Подписано событие.
Позволить действию /api/v1.php с помощью ключа Bearer. OpsIQ закрепляет рабочее пространство, проверяет договор действия и разрешения, затем выполняет или обрабатывает его. Подписанные канонические события уходят через подписываемую HMAC очередь доставки с отслеживаемыми попытками и ограниченными повторами.
От ключа к регулируемой интеграции Три шага.
Выдайте ключ с наименьшими привилегиями, узнайте созданный контракт, запустите запись, а затем подпишитесь на веб-хук, когда вашему приложению нужна доставка фоновых событий.
Получить ключ
Зарегистрируйтесь и создайте ограниченный ключ Bearer API (opq_…) в настройках разработчика и придавать каждой интеграции только те поверхности, которые ей необходимы.
Discover & Validate
Читать meta.actions, meta.action и meta.scopes; использование dry_run Проверка записей перед казнью.
Исполнитель & Подписка
Добавьте ключ идемпотентности для записи, а затем подпишитесь на конечную точку канонических событий, необходимых вашему приложению.
Один шаблон разъема. Пять чистых примитивов.
Все, что касается платформы, живет в разъеме. Ядро OpsIQ остается общим, ИИ остается предсказуемым, а ваша интеграция остается поддающейся аудиту.
Рассказать OpsIQ Что только что произошло.
Выйти канонические события с вашей платформы, или определить регулируемое пользовательское событие. Абоненты получают событие через зарегистрированный приоритет и правила доставки.
Ссылка на событиеinvoice.paid, ticket.created, subscription.cancelled, customer.signed_up Или свой собственный.
Подписчики Fan-outМозг ИИ, правила автоматизации, зеркальные разъемы и конечные точки вашего веб-хука реагируют.
Приоритетный порядокДетерминистическая посылка, так что зеркала пишут перед тем, как предупредить о пожаре.
Скажите 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-отправители ссылок, а также клиенты интеграции Node и Python охватывают подписанные события и потоки веб-хуков; любой стек может называть то же самое 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.",
},
)
Построй один раз, подключи что угодно.
Разъем - это управляемый пакет, генерируемый или импортируемый через идентификатор, аутентификацию, тест, действия, триггеры и обзор. его манифест заявляет, что поверхности возможностей OpsIQ могут быть раскрыты.
Откройте шестиступенчатый конструкторПросто английский. Проверенная операция.
OpsIQ никогда не изобретает правильный вызов. Он проходит через зарегистрированные контракты, готовит полезную нагрузку, просит подтверждения, когда это требуется действием, и производит полную строку аудита, когда он выполняется, поэтому ИИ, который может действовать Никогда не становитесь ИИ, которому нельзя доверять.
API поверхность С первого взгляда.
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.writeСухой_рюн + идемпотенцияНастроенный / часACTION security.reportsecurity.writeСухой_рюн + идемпотенцияНастроенный / час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.writeСухой_рюн + идемпотенцияНастроенный / часACTION hr.org.treehr.readЧитать толькоНастроенный / часhr Получается отказ, а не пустой список. Что такое PeopleOS HR.Ограничения ставок настроены для ключа в почасовом окне. X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-ResetОтклоненный запрос возвращается 429 с Retry-AfterИспользуй OpenAPI 3.0.3 контракт или Коллекция Postman генерируется из тех же реестров времени выполнения.
Создать, протестировать и выпустить в Шесть этапов.
Начните с управляемого профиля или определите контракт сами. Строитель проверяет каждый этап, прежде чем он генерирует автономный пакет разъема.
Проверяйте безопасно, затем пройдите ворота выпуска.
Использовать dry_run на поддерживаемых действиях записи, запустить тест ограниченного соединения Строителя и проверить сгенерированный манифест и контракт до выпуска. Проверка пакета проверяет имена возможностей, настройки, происхождение и необходимые файлы; фоновые работники обрабатывают реактивный опрос и исходящую доставку.
Пакет не может претендовать на способность Его код не имеет.
OpsIQ\Connectors\ConnectorContract Раскрытие времени выполнения, Строитель, пакеты первой партии, соответствие, Генерал API и каждая ссылка гласила, что один реестр. Объявить возможность и три файла должны согласиться друг с другом прежде чем OpsIQ Путешествуйте по одной строке к вам.
- 01 connector.php класс Runtime
- 02 IdentityProvider.php стабильный внешний ключ
- 03 SalesIngest.php Для сравнения()
- 04 actions.json Названы операции
- 05 settings.json конфигурация оператора
- 06 connector_contract.json машиночитаемый авторитет
hmac-sha256 - по детерминированной полезной нагрузке каждого файла SHA-256 хэш-ответов Это было изменено с момента подписанияАн. 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.
Мутация никогда не применялась.
Текст поиска не совпадал, файл был нетронут, пакет прошёл, а доказательство записано Зеленый под старым кодом Код, который никогда не был старым. Пойман с помощью точного совпадения текста и сравнения хешей файлов с обеих сторон.
Мутация сломала что-то другое.
Сюита покраснела, потому что файл перестал разбирать или загрузочный шлюп умер, а доказательство зафиксировало красный цвет, который не имел ничего общего с охранником. названный Тестирование среди неудач.
Он не может оставить мутанта на диске.
Каждая мутация копирует оригинал в коляску за пределами дерева, обслуживаемого веб-сайтом, пишет маркер, называя выдающееся изменение, и отменяется обработчиком остановки на каждом пути выхода. Маркер из разбившегося пробега почитается перед следующей мутацией этого файла.
Сертификация – это команда с выходным кодом.
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 Посмотреть и согласиться друг с другом
- возможности существуют в классе Runtime
- interfaces осуществляется в том случае, если объявленное
- files Каждый необходимый файл
- действия Соответствие действиям манифеста
- destructive заявлять о подтверждении
- личность Стабильный внешний ключ, а не электронная почта
- переигрывать Повторяющиеся обновления, никогда не дублируются
- предприятие Заявления соответствуют продлению
- документы ЧИТАЙТЕ, ДЕВЕЛОПЕР, КАНДЖЕЛОГ
- схемы Все 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. Наличие файла - претензия. Он появляется в настройках продажи в момент объявления и исчезает, когда он прекращается. Нет списка для присоединения и никого не спрашивайте.
канонический писать Соответствие структурно: существительное хранилища рядом с мутирующим глаголом, независимо от вашего соглашения об именах. Написание бизнес-ряда напрямую пропускает цены платформы, блокировку доступности и почту подтверждения и производит заказ, в который собственная система продавца верит только наполовину. 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.jsonОбъявление того, что не существует, обещает клиенту то, что затем ничего не производит.
Самый опасный тайм-аут — это тот, который после того, как платформа, возможно, уже сделала работу. Без идемпотентного поиска «сделала свою письменную землю», единственные варианты — это повторно ослепнуть или потерять заказ.
Любая роль класса оплаты также декларируется payment_profile с помощью окружающая среда, webhook_verify использование собственной схемы поставщика, а также event_mapНезаявленная среда - это то, как поставщик тестового режима принимает оплату в реальном времени.
OpsIQ против a Интеграция DIY.
Что связанная контрактом, подписанная, проверенная платформа дает вам, что прокатка ваших собственных веб-хуков и сантехника с искусственным интеллектом никогда не даст.
| способность | Свернуть свой собственный | OpsIQ |
|---|---|---|
| Scoped Bearer API + HMAC-подписанные веб-хуки | ручной | ✓ |
| Dry-run пишет + 24-час успешной переигровки | ДИЙ | ✓ |
| 1 мкм → 5 метров → 30 мкм → 2h → 12h повторные попытки | Очередь для DIY | ✓ |
| Реестр договоров действия (AI не может изобретать звонки) | — | ✓ |
| Политика подтверждения до побочных эффектов | — | ✓ |
| Стабильный конверт ошибок + идентификаторы запросов | Ручная рубка | ✓ |
| Direct HTTP + генерируемые клиентские опции | Напиши свой собственный | ✓ |
| OpenAPI 3.0.3 машиночитаемый контракт | Может быть | ✓ |
| Шестиступенчатый Builder + пакетный выпуск шлюза | Создайте инструментальную цепочку | ✓ |
| Ключи, привязанные к рабочему пространству и почасовые ограничения | Вариации | ✓ |
| Паттерн подключения: код платформы остается изолированным | — | ✓ |
Вопросы разработчиков, ответил.
Аутентификация, контракты, повторные заказы, генерация клиентов, безопасное тестирование и модель разъема перед первым производственным запросом.
Authorization: Bearer opq_…Ключи могут быть неограниченными, ограниченными или только для чтения, иметь минимальные привилегии, соблюдать почасовой лимит и могут быть прикреплены к рабочему пространству. Подписание Webhook отдельно: исходящие поставки несут 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- сгенерированный контракт на предоставление возможностей, документация и дополнительные расширения предприятия. Шестиступенчатый конструктор собирает его; реестр обнаруживает его; соответствие и выпуск шлюзов подтверждают его.