Skip to main content

Data Models

This page documents the complete data structures returned by the Corpus Product API.

EventResponse

The standard event object returned by list endpoints.

Fields

FieldTypeDescription
idUUIDUnique event identifier
titlestringEvent title/headline
descriptionstringDetailed event description
event_datedateDate when the event occurred (YYYY-MM-DD)
event_categorystringCategory ID (e.g., “conflict”, “cyber”)
event_typestringType ID within category
event_subtypestringSubtype ID within type
countrystringCountry where event occurred
locationstringSpecific location/city
latitudefloatLatitude coordinate (nullable)
longitudefloatLongitude coordinate (nullable)
source_urlstringURL to source article (nullable)
created_atdatetimeWhen record was created

Example JSON

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "title": "Cyber attack targets financial institutions",
  "description": "A sophisticated ransomware attack affected multiple banks...",
  "event_date": "2026-02-15",
  "event_category": "cyber",
  "event_type": "cyber_attack",
  "event_subtype": "ransomware",
  "country": "United States",
  "location": "New York",
  "latitude": 40.7128,
  "longitude": -74.0060,
  "source_url": "https://example.com/article",
  "created_at": "2026-02-15T14:30:00Z"
}

EventDetailResponse

Extended event object with actors and category-specific metadata. Includes all fields from EventResponse plus:
FieldTypeDescription
actorsActorInEvent[]List of actors involved in the event
metadataobjectCategory-specific metadata fields

ActorInEvent Structure

FieldTypeDescription
idUUIDActor unique identifier
canonical_namestringActor’s canonical name
actor_typestringActor type classification
positionstringActor’s role: PRINCIPAL, SECONDARY, SUB_PRINCIPAL, SUB_SECONDARY, SUPPORTING_PRINCIPAL, SUPPORTING_SECONDARY

Metadata by Category

The metadata field contains category-specific fields. See each category’s taxonomy page for field definitions. Example for Conflict event:
{
  "id": "...",
  "title": "Armed clash between government and rebel forces",
  "event_category": "conflict",
  "event_type": "battles",
  "event_subtype": "armed_clash",
  "actors": [
    {
      "id": "actor-uuid-1",
      "canonical_name": "National Army",
      "actor_type": "military",
      "position": "PRINCIPAL"
    },
    {
      "id": "actor-uuid-2",
      "canonical_name": "Rebel Group X",
      "actor_type": "rebel_group",
      "position": "SECONDARY"
    }
  ],
  "metadata": {
    "disorder_type": "Political violence",
    "fatalities": 15,
    "injuries": 23,
    "civilian_targeting": false
  }
}

ActorResponse

The standard actor object returned by list endpoints.

Fields

FieldTypeDescription
idUUIDUnique actor identifier
canonical_namestringActor’s canonical/standardized name
actor_typestringActor type classification
aliasesstring[]Alternative names/spellings (nullable)
created_atdatetimeWhen record was created

Example JSON

{
  "id": "660e8400-e29b-41d4-a716-446655440000",
  "canonical_name": "National Liberation Front",
  "actor_type": "rebel_group",
  "aliases": ["NLF", "Liberation Front"],
  "created_at": "2026-01-10T09:00:00Z"
}

ActorDetailResponse

Extended actor object with statistics and relationships. Includes all fields from ActorResponse plus:
FieldTypeDescription
event_countintegerNumber of events this actor is involved in
first_event_datedateDate of first associated event (nullable)
last_event_datedateDate of most recent event (nullable)

PaginatedEventsResponse

Wrapper for paginated event listings.
FieldTypeDescription
itemsEventResponse[]Array of events
totalintegerTotal number of matching events
pageintegerCurrent page number
page_sizeintegerNumber of items per page
total_pagesintegerTotal number of pages

Example JSON

{
  "items": [...],
  "total": 1234,
  "page": 1,
  "page_size": 50,
  "total_pages": 25
}

PaginatedActorsResponse

Same structure as PaginatedEventsResponse but with items as ActorResponse[].

CountryAggregation

Country with event count.
FieldTypeDescription
countrystringCountry name
event_countintegerNumber of events in this country

RegionAggregation

Location/region with event count.
FieldTypeDescription
locationstringCity/region name
countrystringCountry name
event_countintegerNumber of events in this location

MetadataValueCount

Generic metadata value with count.
FieldTypeDescription
valuestringThe metadata value
countintegerNumber of occurrences
Used in responses from:
  • /v1/corpus/metadata/event-categories
  • /v1/corpus/metadata/event-types
  • /v1/corpus/metadata/event-subtypes
  • /v1/corpus/metadata/actor-types

Export Formats

The /v1/corpus/events/export endpoint supports multiple output formats:

CSV Format

Standard comma-separated values with headers. Includes all event fields plus actor information.

JSON Format

Array of EventDetailResponse objects with full metadata and actors.

GeoJSON Format

Geographic data format suitable for mapping applications:
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [-74.0060, 40.7128]
      },
      "properties": {
        "id": "...",
        "title": "...",
        "event_category": "...",
        ...
      }
    }
  ]
}

ACLED Format

Compatible with ACLED (Armed Conflict Location & Event Data Project) schema.

Flat Format

Denormalized JSON with one object per event-actor combination, suitable for spreadsheet import. ← Back to Taxonomy Overview