The Pattern
- Build an HTTP endpoint (Logic App, Lambda, internal API) that accepts an indicator and returns structured data
- Register it as a provider in Calseta via the REST API
- Configure field extractions to tell Calseta which fields to surface to agents
- Configure malice rules to map response fields to verdicts
Example: Internal Threat Intel via Logic App
Suppose you have an internal threat intel database exposed through an Azure Logic App. The Logic App accepts an IP address and returns context from your internal systems.Step 1: Build the Logic App
Your Logic App accepts a POST request with the indicator value and returns JSON: Request:Step 2: Register the Provider
Step 3: Configure Field Extractions
Tell Calseta which fields from your Logic App’s response to surface to agents:Builtin providers ship with system extractions that cannot be deleted — only toggled on/off. Custom extractions you create can be fully edited or removed. When you delete a provider, all its field extractions are automatically cleaned up.
Step 4: Test It
Trigger on-demand enrichment:Example: AWS Lambda for CMDB Lookup
An AWS Lambda that checks your CMDB for asset context on IP addresses:If your custom source provides context rather than threat intelligence (like a CMDB), set
default_verdict to "Benign" with no conditions. The provider adds context without affecting malice verdicts.Response Format Requirements
Your endpoint must return valid JSON. Calseta’s field extraction system uses dot-notation paths (data.results.score) to extract values from the response, so you can nest data however you like.
If your endpoint returns an error (non-2xx status code), Calseta records success: false for that provider and moves on — it never blocks other providers.
What Agents See
Agents receive theextracted fields from all providers — builtin and custom — in the same structure. Your internal threat intel data appears alongside VirusTotal and AbuseIPDB results, giving agents a complete picture without custom integration code.
