{% from "_macros.html" import decision_link %} {% set head %}{{ icon("file-text") }} {{ (o.attributes or {}).get('name') or o.observation_id }}observation{% endset %} {% include "_panel_head.html" %}
Source
{{ icon("database", 14) }} type{{ o.source.type }}
{{ icon("hash", 14) }} id{{ o.source.id }}
{% for k, v in o.source.locator.items() %}
{{ icon("map-pin", 14) }} {{ k }}{{ fmt(v) }}
{% endfor %}
{{ icon("clock", 14) }} ingested{{ fmt(o.ingested_at) }}
Attributes
{% if o.attributes is none %}
Redacted {{ fmt(o.redacted_at) }}
{% endif %} {% for k, v in (o.attributes or {}).items() %}
{{ icon(ATTRIBUTE_ICONS.get(k, 'circle-dashed'), 14) }} {{ k|replace('_', ' ') }}{{ fmt(v) }}
{% endfor %}
Identity
{{ icon("building", 14) }} entity {% if entity_id %}{{ entity_name }}{% else %}unresolved{% endif %}
{% for e in history if e.event_type.value.startswith('MEMBERSHIP') %}
seq {{ e.seq }}{{ 'joined' if e.event_type.value == 'MEMBERSHIP_ACCEPTED' else 'left' }} {{ e.entity_id }} {% if e.decision_id %}{{ decision_link(e.decision_id) }}{% endif %}
{% endfor %}
{{ icon("hash", 14) }} id{{ o.observation_id }}