Skip to content
CodamAI

Consistent APIs and precise queries

Every model gets the same set of actions with the same meaning. Clients decide exactly which data comes back and retrieve lists filtered, sorted and page by page.

A fixed set of actions per model

Every model gets create, read, replace, update, delete and search – for audited models optionally also history and roll back, for file models upload and download. You switch on which of these exist per model in the Hub. Structure, rules and permissions are the same across all models, and a machine-readable API description shows what is possible on each model.

Responses and errors have fixed shapes. Errors carry a fixed key instead of free text. The message in the person’s language is produced by the frontend.

Two special forms complete the set: a singleton – such as a person’s settings – needs no identifier, because the server knows which object is meant. And for an abstract model a single search finds objects of all sub-types, sorted and paged together.

Endpoints tab of a model with the enabled actions, including history and roll back
Which actions a model offers – here including history and roll back, because the model is audited.

Exactly the fields you need

Every reading request states which fields should come back – individually or with a shorthand for all simple fields. Related objects are expanded deliberately, level by level, and lists inside them can be filtered and sorted. The selection already shapes the database query: what is not requested is not read, and nothing is loaded behind the scenes.

At every level the permissions of the model the request reaches into apply.

Search, filter, page

You query lists with a structured filter:

  • conditions in AND and OR groups nested to any depth
  • comparisons for equality, search patterns, value lists, empty fields, date and time limits, and membership in lists
  • filtering and sorting across relationships, for example by the city of a contact’s company
  • several sort criteria and pages with the total number of hits

Reliable reads and writes

A filter that Data Management cannot apply is never dropped silently – the request is rejected and names the field concerned. Your conditions are also always combined with the security filters: you can narrow results, never widen them.

Replace describes the complete target state, update only the fields you name. Every request is one transaction: it is saved before the response goes back, or not at all. A success response therefore means “saved”, and it shows the state that is now actually in the database.

What this means day to day

Know one model’s API and you know them all.

  • Frontends, integrations and AI tools work against the same predictable structure.
  • Lean responses, because only what was requested is read.
  • Errors can be handled precisely in the client instead of interpreting text.

Does CodamAI fit your engineering setup?

The most honest way to find out is a technical conversation: about your stack, your delivery and the requirements you have to evidence.