Skip to main content
Wherever the API returns a person or company acting for a company, it describes their role twice: once as a coarse bucket you can match on exhaustively, and once as the precise office the register records. This applies to representation in company information and to management_positions in person information.
On person information the plain role field is deprecated. It carries the raw stored value, which is a German string for Prokura ("Einzelprokura", "Gesamtprokura", "Prokura") and a code otherwise. Use role_detail.code instead.

The two fields

role_detail is always present.
The role set is stable: a new register role is folded into an existing bucket rather than added, so you can match on it exhaustively. role_detail.code grows as new roles appear in the register — treat an unrecognised code as OTHER.

Why both

A Vorstand and a Geschäftsführer:in are both authorised to act for the company, so both are role: "DIRECTOR" — that is the field to use when you want “can this person represent the company?” in one branch. They are different offices, though, and role_detail is where that shows. The same holds for Einzelprokura and Gesamtprokura: both are role: "PROKURA", while role_detail.code distinguishes the sole signing authority from the joint one. Deriving the German title from the company’s legal form does not work as a substitute. An AG can appoint a Geschäftsführer:in for a branch, and an association carries board offices that no legal form implies. role_detail reports what the register actually recorded.

Role reference

All of these are role: "DIRECTOR".
Kommanditisten are an ownership stake rather than a right to represent the company, so they are not part of representation. Retrieve them from company owners as relation_type: "limited_partner".

Choosing a field

Use role

Filtering, branching and aggregation — anything where you need every case handled and the set to stay put.

Use role_detail.code

Telling offices apart: a Vorstand from a Geschäftsführer:in, a sole Prokura from a joint one.

Use label_de

Showing the role to users. The German term is the one the register uses and the one German users expect.

Use the short labels

Tables, badges and other dense layouts where the full title does not fit.