vanhecke/celmex/3.0.0

Unavailable. Nobody can download this version any more, with elm or with the Lamdera compiler: github.com/vanhecke/celmex is gone (deleted or private); Software Heritage not asked yet (this run's --swh-calls were used up); no fork with the same repo name found; no cached copy. Use another version.

Details

Cortex.Api.Biocs

Cortex behavioral indicators of compromise (BIOCs).

type alias SearchArgs =
{ filters : List Filter
, sort : Maybe Sort
, range : Maybe Range
, timeframe : Maybe Timeframe
, extra : List ( String, Value )
}

Arguments to list. All fields are optional; pass defaultSearchArgs for an unfiltered request. extra is merged last into request_data and overrides any SDK-generated key on collision — e.g. extended_view is reachable through it.

defaultSearchArgs : SearchArgs

A SearchArgs with no filters, sort, pagination, or timeframe.

type alias Bioc =
{ ruleId : Maybe Int
, name : Maybe String
, type_ : Maybe String
, severity : Maybe String
, status : Maybe String
, comment : Maybe String
, isXql : Maybe Bool
, mitreTacticIdAndName : List String
, mitreTechniqueIdAndName : List String
, indicator : Maybe Value
}

A single BIOC rule.

type alias BiocsResponse =
{ objectsCount : Maybe Int
, objects : List Bioc
, objectsType : Maybe String
}

Top-level envelope returned by list. Not wrapped in the standard reply.

list : SearchArgs -> Request BiocsResponse

POST /public_api/v1/bioc/get

Response is top-level {objects_count, objects, objects_type} — NOT wrapped in the usual reply envelope.

type alias InsertArgs =
{ items : Value }

Arguments to insert. items is the raw request_data array of BIOC objects — each entry must include at least name, type, severity, status, is_xql, and indicator. The indicator field is the deeply nested investigation-rule DSL (see Bioc) so the SDK does not type it ahead of time; callers build the JSON shape themselves and pass it through. Pass an existing rule_id on an item to upsert that BIOC instead of inserting a new one.

type alias InsertResult =
{ addedObjects : List BiocChange
, updatedObjects : List BiocChange
, errors : List String
}

Outcome of an insert call. addedObjects lists the newly created BIOC IDs and the server's status string for each; updatedObjects lists upserts; errors collects per-item failures the server flagged without aborting the batch.

type alias BiocChange =
{ id : Int
, status : String
}

One row in the InsertResult addedObjects / updatedObjects arrays — the rule ID the server assigned and the matching human-readable status it returned.

insert : InsertArgs -> Request InsertResult

POST /public_api/v1/bioc/insert — insert or upsert a batch of BIOCs. The response carries the rule IDs of every BIOC the server touched, which a test can use to delete what it inserted.

type alias DeleteArgs =
{ filters : List DeleteFilter }

Arguments to delete. filters is AND-ed server-side; pass multiple entries to narrow the match further. Build entries via deleteFilter so the wire shape stays an SDK detail.

One {field, operator, value} predicate accepted by bioc/delete. The delete endpoint accepts only a constrained operator set (EQ, NEQ, IN, GTE, LTE) and a closed field set (name, severity, type, is_xql, comment, status, indicator, mitre_*); the SDK does not validate either — the server will reject invalid combinations.

{ field : String
, operator : String
, value : Value
}

Build a DeleteFilter from the raw triple. The operator should already be one of the API's uppercase keywords (EQ, NEQ, IN, GTE, LTE); the encoder writes it through verbatim.

type alias DeleteResult =
{ objectsCount : Int
, objects : List Int
}

Outcome of a delete call. objectsCount is the number of BIOCs the server removed; objects is the list of rule IDs it removed.

delete : DeleteArgs -> Request DeleteResult

POST /public_api/v1/bioc/delete — remove every BIOC matching the filters.