People
Natural persons, the roles they hold, and the limits of identity matching.
Person records
GET /persons/{id} returns a
natural person and the companies where they hold or held a role.
{
"person": {
"id": "02c414dd-…",
"full_name": "Mario Richter",
"first_name": "Mario",
"last_name": "Richter",
"city": null,
"birth_date": "1959-10-28",
"profiles": [
{
"id": "e1e52844-…",
"type": "representative",
"company_id": "05978cff-…",
"is_general_partner": false,
"is_confirmed": false,
"confidence_score": 0.8
}
]
}
}profiles is the link to companies. Each entry gives a company_id and the type of
role; resolve the company with
GET /companies/{id}.
`confidence_score` is a match score, not a fact
A profile with is_confirmed: false is a probabilistic link between a named role holder
and a company, not a verified one. confidence_score is that probability. Treat
anything below 1.0 as a candidate, and surface the score if you display the link.
Matching is name-based, and names are not unique
A person here is "a named role holder", assembled from register entries. Where the register gives a city and a year of birth, matching is reliable. Where it gives only a name — which is common in older entries — it is not.
Design for this:
- Do not treat a person id as an identity. Two
Rolf Müllerentries may be one human or two. - Check
cityandbirth_yearbefore merging a person into your own records. - Expect duplicates for common names, and expect a single human to appear under several ids across courts.
Roles at a company
GET /companies/{id}/officer-contacts
returns the role holders of a company. representatives being null means no register
extract has been parsed for that company, not that the company has no management.
Privacy
Register data about natural persons is personal data. Some people have exercised their right to object, and their records are suppressed.
GET /search/persons carries an
is_visible flag on every result and never returns a suppressed person.
Re-check suppression before you re-publish
Suppression is applied after the fact, so a person you fetched last month may have been removed since. Re-validate anything you have cached through search before displaying it again, and delete records that no longer come back.
Personal data from this API is subject to the GDPR in your hands as well as ours. A lawful basis for processing it is yours to establish.