Injector development
This page explains what OpenAEV expects from an Injector: a process that adds new types of Injects to the platform.
To set up a new Injector project (template, pyoaev dependency, local development), follow the Injectors repository README. For a working example, read the HTTP Injector. For a functional overview, see Injectors.
How an Injector works with OpenAEV
An Injector talks to OpenAEV through the REST API and a RabbitMQ queue, so you can write it in any language.
- Register. The Injector sends
POST /api/injectorsas a multipart request: aninputpart with itsinjector_id,injector_name,injector_typeandinjector_contracts, and an optional PNGiconpart. The response gives the RabbitMQconnectiondetails and the queue tolistento:<prefix>_injector_<injector_id>, where the prefix isopenaev.rabbitmq.prefix(openaevby default). The Injector then appears under Integrations > Deployed. - Consume. OpenAEV pushes each Inject to execute to this queue.
- Report. The Injector sends the result with
POST /api/injects/execution/callback/{injectId}, with at leastexecution_messageandexecution_status.
Contracts
A contract lists the fields of an Inject. OpenAEV uses it to build the Inject form in the UI, and the Injector uses it to read the values the user entered. An Injector can declare several contracts.
What's next?
- Deploy Injectors -- Deploy and configure an Injector
- Collector development -- Build a custom Collector
- REST API -- Authentication and API reference