Developer Docs
API Data Reference

Handelsregister Company History (Publications)

The organization publication events returned by the Fusionbase v2 relation resolve API. Each event is a point‑in‑time, published fact derived from the German Handelsregister — a person joining or leaving a role, or a change to the company’s own master data. Together, the events for a company form its register history.

POST /api/v2/resolve/2533389984/{fb_entity_id} relation_id 2533389984 entity_type "EVENT" entity_subtype "PUBLICATION"

1How the data is delivered

The history is retrieved through the generic relation‑resolve endpoint, using the organization‑publications relation id:

POST /api/v2/resolve/2533389984/{fb_entity_id}
  • {fb_entity_id} — the 32‑character id of the organization whose history you want.
  • Optional request body: { "params": { ... } } (no parameters are required for this relation).

The response is a JSON array. Each array element is one history event, wrapped in a small relation envelope. The actual event lives under the entity key of each element (see §3). An empty array ([]) means no history events are available for that organization.

2 · Background: the German Handelsregister

The Handelsregister is the German commercial register, maintained by the local Registergerichte (district courts). Every change to a registered company is recorded as an Eintragung (entry) and published; these events are derived from those publications.

A company is identified by court + division + number (e.g. Kempten HRB 16388).

DivisionContains
HRA (Abteilung A)Sole traders (e.K.) and partnerships (OHG, KG, GmbH & Co. KG).
HRB (Abteilung B)Corporations (GmbH, UG (haftungsbeschränkt), AG, SE).
PR / VR / GnRPartnerships of liberal professions, associations, cooperatives.

Register entries are Neueintragung (initial registration), Veränderung (change), or Löschung (deletion). The events mirror that: role/member events are people joining or leaving a company; organization change events are modifications of a company’s own master data.

3Response structure

Required always present, never null Nullable always present, value may be null Optional the key may be absent Reserved present but always null

Important contract detail. Inside the entity object, the event keys are always present even when their value is null. So you can rely on every key in §3.2 existing on every event; only its value varies.

3.1 Response envelope (array item)

Each array element contains only these top‑level keys:

FieldTypeNullabilityNotes
labelstringRequiredThe relation label. For this relation: "PUBLICATION" (the organization → event link).
entity_fromobjectRequiredThe company the event belongs to. See below.
entity_toobjectRequiredA reference to the event entity. See below. Its fb_entity_id equals entity.fb_entity_id.
entityobjectRequiredThe event itself — see §3.2.
sourceobjectOptionalWhen present, { "id": string } — the data‑source id of the relation. May be absent; id may be null.
metaobjectNullable{ "start_date": <ISO|null>, "end_date": <ISO|null> } — the validity interval of this event’s value. start_date is when the value took effect; end_date is when it was superseded by the next value in the same timeline, or null if it is the current value. Always present in current responses. See §3.7.

entity_from (the company)

FieldTypeNullabilityNotes
fb_entity_idstringRequiredThe organization id (matches the id in the request path).
entity_typestringRequired"ORGANIZATION".
display_namestringNullableThe organization’s name; null if unknown.
attributesobjectOptionalPresent in current responses. Small reference block: { "display_name": { "en": "<company name>" } }. (Occasionally the inner name is a placeholder like "Organization (110fe0da…)"; the sibling display_name is the reliable one.)

entity_to (reference to the event)

FieldTypeNullabilityNotes
fb_entity_idstringRequiredThe event id (equals entity.fb_entity_id).
entity_typestringRequired"EVENT".
attributesobjectOptionalPresent in current responses. { "display_name": { "de": "…", "en": "…" } } (the event’s bilingual label).

3.2 The entity object (the event)

These keys are always present on every event (value may be null):

FieldTypeNullabilityNotes / values
fb_entity_idstringRequiredStable 32‑character id of the event.
fb_entity_versionstringRequiredContent fingerprint (changes if the event content changes).
entity_typestringRequiredAlways "EVENT".
entity_subtypestringRequiredAlways "PUBLICATION".
categorystringRequiredThe kind of event — see §5.
nameobjectNullableBilingual label: { "de": string, "en": string }.
descriptionobjectNullable{ "short": { "de": string, "en": string } }.
statusstringNullableEvent lifecycle status; for register publications normally "FINISHED". See §5.
start_datestringNullableEffective date as an ISO‑8601 string (e.g. "2024-09-19T00:00:00"). Populated on virtually all events; can be null only for older entries with no parseable date — see §7.
announce_datestringNullableRegister announcement date (ISO‑8601 string). In current data it equals start_date for person/role events (MEMBER_*, AUTHORITY_CHANGE) and is null for organization master‑data changes (NAME_CHANGE, SEAT_CHANGE, ADDRESS_CHANGE, CAPITAL_CHANGE, …).
detailsobjectRequiredThe event payload; shape depends on the event group — see §3.3 / §3.4.
sourceobjectNullable{ "id": string } — the data‑source id of the event (id may be null).
live_datenullReservedAlways null for these events.
end_datenullReservedAlways null (events are point‑in‑time).
origin_locationnullReservedAlways null.
event_locationnullReservedAlways null.
effect_locationnullReservedAlways null.

Dates are strings: start_date and announce_date are ISO‑8601 date‑time strings (e.g. "2024-09-19T00:00:00"), not numeric timestamps.

3.3 details — role / member events

For role/member events (MEMBER_* and AUTHORITY_CHANGE), details carries a value.role describing the role and a linked_entities block naming the participants.

PathTypeNullabilityNotes
details.value.role.namestringRequiredNormalised role name — see role names.
details.value.role.original_name_sourcestringNullableOriginal German role label, e.g. "Einzelprokura".
details.value.role.representation_schemearray<string>NullableWhen present, the raw authority/representation text(s); otherwise null.
details.value.role.responsibilitiesnullReservedAlways null.
details.value.role.liability_depositnullReservedAlways null.
details.linked_entities.personobjectOptionalThe person holding the role. Present for person‑held roles.
details.linked_entities.person.fb_entity_idstringNullablePerson id (null if the person is not resolved to an entity).
details.linked_entities.person.nameobjectRequired*{ given, family, maiden, aliases } (*when person is present).
details.linked_entities.organizationobjectRequiredThe company: { fb_entity_id, name }.

Events whose role is held by another organization (rather than a person) are not included in this response. Only person‑held roles and organization‑level events are returned. Consequently details.linked_entities contains only person and/or organization — no other participant keys appear.

ENTITY_DATA_CORRECTED and OTHER_ENTITY_EVENT are entity‑level events, not person roles. Their details.value shape is not yet characterized and may differ from the role shape above — do not assume they carry value.role or a linked_entities.person. Inspect the actual payload before relying on a specific structure.

3.4 details — organization change events

For organization change events (NAME_CHANGE, LEGAL_FORM_CHANGE, SEAT_CHANGE, ADDRESS_CHANGE, COURT_CHANGE, CAPITAL_CHANGE, PURPOSE_CHANGE, REPRESENTATION_SCHEME_CHANGE, STATUS_CHANGE), details.value carries the new value after the change, and linked_entities.organization names the company.

PathTypeNullabilityNotes
details.linked_entities.organization.fb_entity_idstringRequiredThe company id.
details.linked_entities.organization.namestringRequiredThe company name.
details.valuevariesRequiredThe new value after the change. Type depends on category (table below).
categorydetails.value typeExample
NAME_CHANGEstring"FILLITUP GmbH"
LEGAL_FORM_CHANGEstring"GmbH"
PURPOSE_CHANGEstringbusiness‑purpose text
REPRESENTATION_SCHEME_CHANGEstringrepresentation‑rule text
STATUS_CHANGEstringa status code (e.g. "INACTIVE")
SEAT_CHANGELOCATION object (city level)see §3.5
ADDRESS_CHANGELOCATION object (street level)see §3.5
COURT_CHANGEregistration‑authority objectsee §3.5
CAPITAL_CHANGEMonetaryAmount object{ "@type": "MonetaryAmount", "value": 66667.0, "currency": "EUR" }

Two easily‑confused pairs: SEAT_CHANGE (the legal Sitz, a town) vs. ADDRESS_CHANGE (the physical Geschäftsanschrift, a street address); and AUTHORITY_CHANGE (one person’s representation authority) vs. REPRESENTATION_SCHEME_CHANGE (the company‑wide representation rule).

3.5 Shared sub-objects

Rich values carry extra fields. For the structured values below (LOCATION, registration authority) you receive the full object, which may include additional fields beyond those documented here. Treat the field lists below as “at least these”, not “exactly these”, and ignore any keys you don’t need.

LOCATION

Used by SEAT_CHANGE / ADDRESS_CHANGE details.value, and the court location in COURT_CHANGE. The useful fields:

FieldTypeNotes
entity_typestring"LOCATION".
entity_subtypestringLocation granularity (e.g. LOCALITY, STREET, CITY_POSTAL_CODE, CITY_NO_POSTAL_CODE).
formatted_addressstringe.g. "Badstraße 10, 73463 Westhausen, Deutschland".
coordinateobject{ "latitude": float, "longitude": float }. May be null.
address_componentsarray<object>When present, each { component_type, component_value } (e.g. house_number, street, postal_code, city, county, state, country).

This object is a full location record, so it additionally carries identifier and geo fields. Observed in live responses: fb_entity_id, fb_entity_version, fb_datetime, location_level (often null), elevation (often null), and alternative_names (often []). Treat these as extras — rely on the fields in the table above.

MonetaryAmount

The CAPITAL_CHANGE value: { "@type": "MonetaryAmount", "value": float, "currency": string }.

Registration authority (COURT_CHANGE value)

The new court. The fields are nested under registration_authority.local:

The exact shape of the COURT_CHANGE value (and the STATUS_CHANGE status code) is based on current data and may vary — confirm against an actual response before relying on every field below.

"value": {
  "registration_authority": {
    "local": {
      "registration_authority_id": "string",
      "registration_authority_name": "string",        // court town, e.g. "Kempten"
      "registration_authority_entity_id": "string",
      "registration_authority_entity_name": "string", // e.g. "Kempten HRB 16388"
      "registration_type": "string|null",             // HRA / HRB / PR / VR
      "registration_number": "string",
      "registration_id_extra": "string|null",
      "registration_authority_location": { /* LOCATION, may be null */ }
    }
  },
  "legal_form": { "label": { "de": { "short": "GmbH" } } }   // optional, only when present
}

Person name

details.linked_entities.person.name: { given: string, family: string, maiden: string|null, aliases: array<string> }. maiden is usually null; aliases is usually an empty array. (The person and organization blocks themselves are reduced to fb_entity_id + name only.)

3.6 Fields not included in the response

To keep the response focused, the following are not part of it — do not build against them:

  • Event timestamps and extra identifiers: there are no created_at / updated_at / fb_datetime timestamps, and no raw_data, fb_semantic_id, or external_ids at the event level.
  • source: contains only { "id": ... } — no other source fields.
  • details: contains only value and linked_entities. No other context fields (e.g. evidence excerpts, correction scope, or field keys) are present.
  • details.linked_entities: contains only person and/or organization. No other participant blocks appear, and events whose role is held by an organization are not part of this response.
  • Event types not included: events with category OTHER_PERSON_EVENT or PERSONAL_DATA_CORRECTED are never returned.

3.7 Validity intervals (meta.start_date / meta.end_date)

The list is a flat stream of point‑in‑time events; meta turns it into queryable history by giving each event a validity interval [start_date, end_date):

  • meta.start_date — when this value took effect.
  • meta.end_date — when this value was superseded by the next value in the same timeline, or null if this is the current value.

So to read the current state of any attribute, take the event in that timeline whose meta.end_date is null. (Note: entity.end_date is a different field — it is the event’s own end and is always null; the interval lives in meta.)

Timelines

Events are grouped into independent timelines, and intervals are closed within each timeline (ordered by start_date; the latest stays open):

  • Organization changes — one timeline per category. E.g. all SEAT_CHANGE events form the seat history; the open one is the current seat.
  • Member / role events — one timeline per (person, role). A person’s Managing Director tenure is tracked independently from their Procura tenure, and two different people holding the same role are independent timelines. A MEMBER_ENTRY is closed at the start_date of that person’s next event in the same role (typically their MEMBER_EXIT_POSITION); the latest event for the pair stays open.

Worked example — two SEAT_CHANGE events:

{ "category": "SEAT_CHANGE", "meta": { "start_date": "2014-03-24…", "end_date": "2014-12-16…" } }  // superseded
{ "category": "SEAT_CHANGE", "meta": { "start_date": "2014-12-16…", "end_date": null } }            // current seat

Notes & limitations

end_date is set to the exact start_date string of the superseding event (so intervals are contiguous: end_date == next.start_date). An event with no parseable start_date is left open (end_date: null) and is not placed in the timeline. Within one timeline there is normally exactly one open (null) event — the current value; more than one can appear only if source data is incomplete. Array order is not significant and is not guaranteed stable between calls — always identify “current” via end_date == null, never by position.

4Event catalogue & semantics

All returned events have entity_type = "EVENT" and entity_subtype = "PUBLICATION"; the category field selects the kind of event.

A · Role / member events (person ↔ company)

These describe who held which governing or representative role at a company and when. The role is normalised to English in details.value.role.name, with the original German term in original_name_source. Common register roles:

Register term (German)role.nameMeaning
Geschäftsführer(in)Managing DirectorExecutive director of a GmbH/UG; statutory representative.
Vorstand / VorstandsvorsitzenderBoard Member / Board ChairManagement board of an AG/SE/eG, and its chair.
AufsichtsratSupervisory BoardSupervisory board member.
Prokurist (Prokura)ProcuraHolder of Prokura, a broad statutory commercial power of attorney (§ 48 HGB).
KommanditistLimited PartnerLimited partner of a KG (liability capped at the Hafteinlage).
Komplementär / persönlich haftender GesellschafterFully Liable PartnerGenerally/fully liable partner of a KG/OHG.
InhaberProprietor / OwnerSole proprietor of an e.K.
LiquidatorLiquidatorWinds up a dissolved company.
InsolvenzverwalterInsolvency AdministratorCourt‑appointed insolvency administrator.
CategoryMeaning
MEMBER_ENTRYA person entered / was appointed to a role (Bestellung / Eintritt). start_date is the role begin date when known.
MEMBER_EXIT_POSITIONA person left or vacated a role (Ausscheiden, e.g. „… ist nicht mehr Geschäftsführer", „Prokura erloschen").
MEMBER_ENTRY_EXITAn entry and exit recorded together (a role held only over a bounded period).
MEMBER_NEW_POSITIONA person’s role/position changed to a new one.
MEMBER_RETURNA person returned to a role.
MEMBER_CHANGEA change to a person’s membership/role details.
MEMBER_EXIT_UNKNOWNAn exit whose precise nature/date is not determinable from the entry.
AUTHORITY_CHANGEThe Vertretungsbefugnis of a specific person changed — e.g. joint (Gesamtvertretung) ↔ sole (Einzelvertretung), or a grant of exemption from § 181 BGB. Per‑person (contrast REPRESENTATION_SCHEME_CHANGE).
ENTITY_DATA_CORRECTEDA Berichtigung (fix) of company‑level data referenced in the entry — a register correction, not a real‑world change.
OTHER_ENTITY_EVENTA company‑related register publication that does not fit the other categories.

B · Organization change events (company master data)

Veränderungen of the company’s own master data; each carries the new value in details.value.

CategoryMeaning
NAME_CHANGEChange of the Firma (registered company name).
LEGAL_FORM_CHANGEChange of Rechtsform (e.g. UG → GmbH, GmbH → AG).
SEAT_CHANGESitzverlegung: the registered legal seat (Sitz, a town) moved.
ADDRESS_CHANGEChange of the inländische Geschäftsanschrift (business street address, § 24 HRV). Distinct from the Sitz.
COURT_CHANGEThe Registergericht holding the file changed (and with it the HRA/HRB number) — usually a consequence of a SEAT_CHANGE into another court’s district.
CAPITAL_CHANGEChange of registered capital: Stammkapital (GmbH) or Grundkapital (AG).
PURPOSE_CHANGEChange of the Unternehmensgegenstand (stated business purpose).
REPRESENTATION_SCHEME_CHANGEChange of the company’s general representation rule (company‑wide; contrast the per‑person AUTHORITY_CHANGE).
STATUS_CHANGEChange of the company’s lifecycle status — e.g. Auflösung (dissolution), in Liquidation, Löschung (deletion).

5Field values / enumerations

Constants

entity_type = EVENT · entity_subtype = PUBLICATION.

status

One of ISSUED, ONGOING, CANCELLED, FINISHED. Register publications are historical facts and are normally FINISHED.

category

category identifies the kind of event. The values you will encounter for German Handelsregister companies are:

  • Role / member: MEMBER_ENTRY, MEMBER_EXIT_POSITION, MEMBER_ENTRY_EXIT, MEMBER_NEW_POSITION, MEMBER_RETURN, MEMBER_CHANGE, MEMBER_EXIT_UNKNOWN.
  • Person/entity events: AUTHORITY_CHANGE, ENTITY_DATA_CORRECTED, OTHER_ENTITY_EVENT.
  • Organization changes: NAME_CHANGE, LEGAL_FORM_CHANGE, PURPOSE_CHANGE, COURT_CHANGE, SEAT_CHANGE, ADDRESS_CHANGE, STATUS_CHANGE, CAPITAL_CHANGE, REPRESENTATION_SCHEME_CHANGE.

Role names (details.value.role.name)

Role names you can expect for the German register include: Managing Director, Temporary Managing Director, Director, Board Member, Board Chair, Supervisory Board, Limited Partner, Fully Liable Partner, Partner, Shareholder, Owner, Proprietor, Procura, Representative, Signatory, Liquidator, and Insolvency Administrator. This is not exhaustive — other values may appear, so treat role names as an open set.

Other value sets (data‑driven, treat as open‑ended)

Currency (CAPITAL_CHANGE): EUR, DEM, GBP, … (ISO‑4217 codes).

Registration type (COURT_CHANGE): HRA, HRB, PR, VR.

Location subtype: e.g. LOCALITY, STREET, CITY_POSTAL_CODE, CITY_NO_POSTAL_CODE.

6Examples

These are complete array elements exactly as returned. The event is under entity; entity_from is the company.

6.1 Member entry — Managing Director (start_date null)

A Geschäftsführer appointment. The entry recorded no parseable begin date, so start_date is null. The authority text (sole representation + § 181 BGB exemption) is preserved in representation_scheme.

MEMBER_ENTRY — Managing Director
{
  "label": "PUBLICATION",
  "entity_from": {
    "fb_entity_id": "8bb2b58c965ce9920531bce5f9b7943b",
    "entity_type": "ORGANIZATION",
    "display_name": "Quatalis GmbH",
    "attributes": { "display_name": { "en": "Quatalis GmbH" } }
  },
  "entity_to": {
    "fb_entity_id": "269223b8a4ce94b85652b5e814cdd92f",
    "entity_type": "EVENT",
    "attributes": { "display_name": { "de": "Eintritt eines Mitglieds", "en": "Member entry" } }
  },
  "meta": { "start_date": null, "end_date": null },
  "entity": {
    "fb_entity_id": "269223b8a4ce94b85652b5e814cdd92f",
    "entity_type": "EVENT",
    "entity_subtype": "PUBLICATION",
    "category": "MEMBER_ENTRY",
    "name": { "de": "Eintritt eines Mitglieds", "en": "Member entry" },
    "description": { "short": { "de": "Ein Mitglied ist dem Unternehmen beigetreten", "en": "A member has joined the company" } },
    "status": "FINISHED",
    "start_date": null,
    "announce_date": null,
    "live_date": null,
    "end_date": null,
    "origin_location": null,
    "event_location": null,
    "effect_location": null,
    "details": {
      "value": {
        "role": {
          "name": "Managing Director",
          "original_name_source": "Geschäftsführer",
          "responsibilities": null,
          "representation_scheme": [
            "mit der Befugnis die Gesellschaft allein zu vertreten; mit der Befugnis Rechtsgeschäfte mit sich selbst oder als Vertreter Dritter abzuschließen"
          ],
          "liability_deposit": null
        }
      },
      "linked_entities": {
        "person": {
          "fb_entity_id": "a3009f8357871f87d73eee0c2eb2b926",
          "name": { "given": "Johannes", "family": "Pfützner", "maiden": null, "aliases": [] }
        },
        "organization": { "fb_entity_id": "8bb2b58c965ce9920531bce5f9b7943b", "name": "Quatalis GmbH" }
      }
    },
    "source": { "id": "data_sources/1051122944" }
  },
  "source": { "id": "data_sources/1051122944" }
}

6.2 Organization — name change

NAME_CHANGE
{
  "label": "PUBLICATION",
  "entity_from": {
    "fb_entity_id": "e79720c51aa09e8647cd879c7b1a5dfa",
    "entity_type": "ORGANIZATION",
    "display_name": "FILLITUP GmbH",
    "attributes": { "display_name": { "en": "FILLITUP GmbH" } }
  },
  "entity_to": {
    "fb_entity_id": "1be8dbbb5fed3079a7ff17e08af43ec3",
    "entity_type": "EVENT",
    "attributes": { "display_name": { "de": "Änderung des Unternehmensnamens", "en": "Change of company name" } }
  },
  "meta": { "start_date": "2022-07-15T00:00:00", "end_date": null },
  "entity": {
    "fb_entity_id": "1be8dbbb5fed3079a7ff17e08af43ec3",
    "entity_type": "EVENT",
    "entity_subtype": "PUBLICATION",
    "category": "NAME_CHANGE",
    "name": { "de": "Änderung des Unternehmensnamens", "en": "Change of company name" },
    "status": "FINISHED",
    "start_date": "2022-07-15T00:00:00",
    "announce_date": null,
    "live_date": null,
    "end_date": null,
    "origin_location": null,
    "event_location": null,
    "effect_location": null,
    "details": {
      "value": "FILLITUP GmbH",
      "linked_entities": {
        "organization": { "fb_entity_id": "e79720c51aa09e8647cd879c7b1a5dfa", "name": "FILLITUP GmbH" }
      }
    },
    "source": { "id": "data_sources/1051122944" }
  }
}

6.3 Organization — capital change

CAPITAL_CHANGE
{
  "label": "PUBLICATION",
  "entity_from": {
    "fb_entity_id": "f2efce26b0ee72de3301e5525d61315f",
    "entity_type": "ORGANIZATION",
    "display_name": "ALLFINCON International GmbH",
    "attributes": { "display_name": { "en": "ALLFINCON International GmbH" } }
  },
  "entity_to": {
    "fb_entity_id": "da402f2e6da532704796daaacf81ad98",
    "entity_type": "EVENT",
    "attributes": { "display_name": { "de": "Kapitaländerung", "en": "Change of capital" } }
  },
  "meta": { "start_date": "2023-07-25T00:00:00", "end_date": null },
  "entity": {
    "fb_entity_id": "da402f2e6da532704796daaacf81ad98",
    "entity_type": "EVENT",
    "entity_subtype": "PUBLICATION",
    "category": "CAPITAL_CHANGE",
    "name": { "de": "Kapitaländerung", "en": "Change of capital" },
    "status": "FINISHED",
    "start_date": "2023-07-25T00:00:00",
    "announce_date": null,
    "live_date": null,
    "end_date": null,
    "origin_location": null,
    "event_location": null,
    "effect_location": null,
    "details": {
      "value": { "@type": "MonetaryAmount", "value": 66667.0, "currency": "EUR" },
      "linked_entities": {
        "organization": { "fb_entity_id": "f2efce26b0ee72de3301e5525d61315f", "name": "ALLFINCON International GmbH" }
      }
    },
    "source": { "id": "data_sources/1051122944" }
  }
}

6.4 Organization — address change (superseded, closed interval)

The new address is a geocoded LOCATION under details.value. This event has been superseded by a later address change, so its meta.end_date is populated (equal to the start_date of the next address event) rather than null — see §3.7.

ADDRESS_CHANGE
{
  "label": "PUBLICATION",
  "entity_from": {
    "fb_entity_id": "1bd7295693c121f136c19f294d7747aa",
    "entity_type": "ORGANIZATION",
    "display_name": "SEDDIO UG (haftungsbeschränkt)",
    "attributes": { "display_name": { "en": "SEDDIO UG (haftungsbeschränkt)" } }
  },
  "entity_to": {
    "fb_entity_id": "e3f1c982ed08cb915acde5be741e9276",
    "entity_type": "EVENT",
    "attributes": { "display_name": { "de": "Adressänderung", "en": "Change of address" } }
  },
  "meta": { "start_date": "2009-06-16T00:00:00", "end_date": "2015-02-11T00:00:00" },
  "entity": {
    "fb_entity_id": "e3f1c982ed08cb915acde5be741e9276",
    "entity_type": "EVENT",
    "entity_subtype": "PUBLICATION",
    "category": "ADDRESS_CHANGE",
    "name": { "de": "Adressänderung", "en": "Change of address" },
    "status": "FINISHED",
    "start_date": "2009-06-16T00:00:00",
    "announce_date": null,
    "live_date": null,
    "end_date": null,
    "origin_location": null,
    "event_location": null,
    "effect_location": null,
    "details": {
      "value": {
        "fb_entity_id": "33d929f63a6b5fc578159aa0f970e076",
        "fb_datetime": "2024-06-25T14:12:36.947000+00:00",
        "fb_entity_version": "0ddb93255ebf23f761144fb244ba85e7",
        "entity_type": "LOCATION",
        "entity_subtype": "LOCALITY",
        "coordinate": { "latitude": 48.10646, "longitude": 11.53716 },
        "location_level": null,
        "address_components": [
          { "component_type": "house_number", "component_value": "2" },
          { "component_type": "street", "component_value": "Flößergasse" },
          { "component_type": "postal_code", "component_value": "81369" },
          { "component_type": "city", "component_value": "München" },
          { "component_type": "county", "component_value": "München (Stadt)" },
          { "component_type": "state", "component_value": "Bayern" },
          { "component_type": "country", "component_value": "Deutschland" }
        ],
        "elevation": null,
        "alternative_names": [],
        "formatted_address": "Flößergasse 2, 81369 München, Deutschland"
      },
      "linked_entities": {
        "organization": { "fb_entity_id": "1bd7295693c121f136c19f294d7747aa", "name": "SEDDIO UG (haftungsbeschränkt)" }
      }
    },
    "source": { "id": "data_sources/1051122944" }
  }
}

7Nullability summary

start_datePopulated on virtually all events. It can be null only when the register entry has no parseable date (rare; mostly older member entries).
announce_dateIn current data: equals start_date for person/role events (MEMBER_*, AUTHORITY_CHANGE) and is null for organization master‑data changes (NAME_CHANGE, LEGAL_FORM_CHANGE, SEAT_CHANGE, ADDRESS_CHANGE, COURT_CHANGE, CAPITAL_CHANGE, PURPOSE_CHANGE, REPRESENTATION_SCHEME_CHANGE, STATUS_CHANGE).
role.representation_schemeIs null unless the entry stated an authority/representation text for that person; when present it is an array of raw text strings.
person.name.maidenIs null unless a birth/maiden name is on record; aliases is usually an empty array.
person.fb_entity_idIs null when the person could not be resolved to a stable entity.
meta.end_dateIs null for the current value in each timeline and an ISO date for superseded values — see §3.7. Do not confuse it with entity.end_date, which is a different field.
Always‑null fieldsentity.live_date, entity.end_date, entity.origin_location, entity.event_location, entity.effect_location, role.responsibilities, role.liability_deposit are always null for these events.
Always presentAll entity keys listed in §3.2 are always present, even when their value is null.
Never presentFields listed in §3.6 are never returned.