Welcome to the CLEAR API - your gateway to humanitarian intelligence.
The CLEAR API gives you programmatic access to signals, events, alerts, data sources, and geographic location data through a single GraphQL endpoint. Whether you’re building a monitoring dashboard, integrating alerts into your workflow, or analysing humanitarian patterns, this API has you covered.
Everything here is accessible via GraphQL at /graphql. You send a query describing exactly the data you want, and you get back precisely that — nothing more, nothing less.
Look up an alert by ID. Requires authentication. Non-admins can only access alerts within their team scope.
id: String!
signals
[Signal!]!
List signals. Requires authentication. includeDummy defaults to false.
teamId: StringincludeDummy: Boolean
signal
Signal
Look up a signal by ID. Requires authentication. Non-admins can only access signals within their team scope.
id: String!
signalsByLocation
[Signal!]!
List signals by location. Returns all signals whose origin, destination, or general location is within the given location (including descendants).
locationId: String!
events
[Event!]!
List events. Requires authentication. includeDummy defaults to false.
teamId: StringincludeDummy: Boolean
event
Event
Look up an event by ID. Requires authentication. Non-admins can only access events within their team scope.
id: String!
eventsByLocation
[Event!]!
List events by location. Returns all events whose origin, destination, or general location is within the given location (including descendants).
locationId: String!
alertsByLocation
[Alert!]!
List alerts by location. Returns all alerts whose event's location is within the given location (including descendants).
locationId: String!status: AlertStatus
dataSources
[DataSource!]!
List all data sources.
dataSource
DataSource
Look up a data source by ID.
id: String!
locations
[Location!]!
List locations, optionally filtered by hierarchy level (0 = country, 1 = state, etc.).
level: Int
location
Location
Look up a location by ID.
id: String!
notifications
[Notification!]!
List notifications, optionally filtered by status.
status: NotificationStatus
notification
Notification
Look up a notification by ID.
id: String!
featureFlags
[FeatureFlag!]!
List all feature flags.
featureFlag
FeatureFlag
Look up a feature flag by its unique key.
key: String!
disasterTypes
[DisasterType!]!
List all disaster type classifications (flat list of level-3 rows).
disasterType
DisasterType
Look up a disaster type by ID.
id: String!
disasterTypeHierarchy
[DisasterLevel1!]!
List disaster types grouped into the 3-level hierarchy (level1 > level2 > level3).
locationMetadata
[LocationMetadata!]!
List metadata entries for a location, optionally filtered by type.
By default only the CURRENT value is returned (validTo is null). Pass
current: false to include the full history.
locationId: String!type: Stringcurrent: Boolean
allLocationMetadata
[LocationMetadata!]!
List every locationMetadata entry of a given type across all locations.
By default only current values. Pass current: false for the full history.
type: String!current: Boolean
locationMetadataHistory
[LocationMetadata!]!
History of a (location, type) pair — newest first. Includes the current
row plus every superseded one.
locationId: String!type: String!
myApiKeys
[ApiKey!]!
List all API keys belonging to the authenticated user. Requires authentication.
myOrganisations
[Organisation!]!
List organisations the authenticated user belongs to.
organisation
Organisation
Look up an organisation by ID. Requires membership or global admin.
id: String!
myTeams
[Team!]!
List teams the authenticated user belongs to.
team
Team
Look up a team by ID. Requires membership or global admin.
id: String!
pendingInvites
[Invitation!]!
List pending invitations for an organisation. Requires org admin.
organisationId: String!
invitationByToken
InvitationInfo
Look up an invitation by token (public — used on accept-invite page).
token: String!
myAlertSubscriptions
[AlertSubscription!]!
List the authenticated user's alert subscriptions.
alertSubscriptionsByLocation
[AlertSubscription!]!
List all alert subscriptions for a location (admin only).
locationId: String!
crises
[Crisis!]!
List all crises.
crisis
Crisis
Look up a crisis by ID.
id: String!
Mutations
Name
Returns
Description
createApiKey
CreateApiKeyPayload!
Create a new API key for the authenticated user.
input: CreateApiKeyInput!
revokeApiKey
ApiKey!
Revoke an API key by ID. Only the key owner or an admin can revoke.
id: String!
requestEmailVerification
Boolean!
Request an email verification link for the authenticated user.
verifyEmail
Boolean!
Verify email using a token from the verification link.
token: String!
updateProfile
User!
Update the authenticated user's profile and notification preferences.
input: UpdateProfileInput!
createAlert
Alert!
Create an alert from an event, notifying subscribers.
input: CreateAlertInput!
updateAlert
Alert!
Update an existing alert.
id: String!input: UpdateAlertInput!
deleteAlert
Boolean!
Delete an alert.
id: String!
archiveStaleAlerts
ArchiveStaleAlertsResult!
Archive published alerts whose event.lastSignalCreatedAt is older than
olderThanDays (default: 14). Sets alerts.status to 'archived'. Admin or
pipeline only. Returns the number of rows affected.
olderThanDays: Int
createSignal
Signal!
Create a signal from a data source.
input: CreateSignalInput!
createManualSignal
Signal!
Create a manual signal from a field officer, partner, or government source.
Persists the signal and sends it to the pipeline for event grouping and auto-escalation.
input: CreateManualSignalInput!
updateSignalSeverity
Signal!
Update a signal's severity score.
id: String!severity: Int!
deleteSignal
Boolean!
Delete a signal.
id: String!
createEvent
Event!
Create a new event from signals.
input: CreateEventInput!
updateEvent
Event!
Update an existing event.
id: String!input: UpdateEventInput!
deleteEvent
Boolean!
Delete an event.
id: String!
escalateEvent
EventEscalation!
Escalate an event: creates an alert (published) and records the user escalation.
If the event already has a published alert, just records the user escalation.
eventId: String!userId: String!
createDataSource
DataSource!
Create a new data source.
input: CreateDataSourceInput!
updateDataSource
DataSource!
Update an existing data source.
id: String!input: UpdateDataSourceInput!
deleteDataSource
Boolean!
Delete a data source.
id: String!
createLocation
Location!
Create a new location.
input: CreateLocationInput!
updateLocation
Location!
Update an existing location.
id: String!input: UpdateLocationInput!
deleteLocation
Boolean!
Delete a location.
id: String!
updateLocationGeometry
Location!
Replace a location's geometry with the given GeoJSON (admin/pipeline only).
id: String!geometry: GeoJSON!
updateLocationPopulation
Location!
Set a location's cached population (admin/pipeline only).
id: String!population: String!
updateCrisisPopulation
Crisis!
Set a crisis's populationAffected + populationInArea (admin/pipeline only).
id: String!input: UpdateCrisisPopulationInput!
upsertLocationMetadata
LocationMetadata!
Create or update a location's metadata entry for a given type (admin/pipeline only).
Upsert keyed by (locationId, type).
input: UpsertLocationMetadataInput!
upsertLocationMetadataBatch
[LocationMetadata!]!
Bulk-upsert multiple (locationId, type, data) rows in a single call (admin/pipeline only).
Returns the resulting rows. Rows whose locationId doesn't exist are skipped silently.
inputs: [UpsertLocationMetadataInput!]!
deleteLocationMetadata
Boolean!
Delete a location's metadata entry for a given type (admin only).
locationId: String!type: String!
createNotification
Notification!
Create a notification for a user.
input: CreateNotificationInput!
createBulkNotifications
Int!
Create notifications for multiple users at once. Returns the count of notifications created.
input: CreateBulkNotificationsInput!
notifyAlertSubscribers
Int!
Notify all subscribers of a single alert (immediate frequency). Matches on event types and locations.
input: AlertNotifyInput!
notifyAlertDigest
Int!
Send a digest notification for multiple alerts to subscribers of the given frequency (daily/weekly/monthly).
input: AlertDigestInput!
deleteNotification
Boolean!
Delete a notification.
id: String!
markNotificationRead
Notification!
Mark a notification as read.
id: String!
markAllNotificationsRead
Boolean!
Mark all notifications as read for the authenticated user.
addFeedback
UserFeedback!
Add feedback (rating + optional text) to a signal or event.
input: AddFeedbackInput!
deleteFeedback
Boolean!
Delete your own feedback.
id: String!
addComment
UserComment!
Add a comment to a signal or event.
input: AddCommentInput!
replyToComment
UserComment!
Reply to an existing comment.
input: ReplyToCommentInput!
deleteComment
Boolean!
Delete your own comment.
id: String!
tagUsersInComment
UserComment!
Tag users in a comment.
commentId: String!userIds: [String!]!
createOrganisation
Organisation!
Create a new organisation. The creator becomes the owner.
input: CreateOrganisationInput!
updateOrganisation
Organisation!
Update an existing organisation. Requires org owner or admin.
id: String!input: UpdateOrganisationInput!
addOrgMember
OrgMember!
Add a member to an organisation.
orgId: String!userId: String!role: OrgMemberRole
removeOrgMember
Boolean!
Remove a member from an organisation.
orgId: String!userId: String!
deleteOrganisation
Boolean!
Delete an organisation and all its teams, members, and invitations. Requires global admin.
id: String!
createTeam
Team!
Create a new team within an organisation. Requires org admin or owner.
Set the locations a team is scoped to. Replaces all existing locations.
teamId: String!locationIds: [String!]!
setDefaultTeam
Team!
Set the authenticated user's default team (for frontend convenience).
teamId: String!
inviteUser
Invitation!
Invite a user to an organisation (and optionally a team). Sends invite email.
input: InviteUserInput!
acceptInvite
Boolean!
Accept an invitation. Creates user account if new, adds to org and team.
input: AcceptInviteInput!
cancelInvite
Boolean!
Cancel a pending invitation.
id: String!
resendInvite
Invitation!
Resend an invitation email (resets expiry to 7 days).
id: String!
requestPasswordReset
Boolean!
Request a password reset email (public, always returns true).
email: String!
resetPassword
Boolean!
Reset password using a token from the reset email.
token: String!newPassword: String!
subscribeToAlerts
AlertSubscription!
Subscribe to alerts for a specific type and location.
input: SubscribeToAlertsInput!
subscribeToAlertsBatch
[AlertSubscription!]!
Subscribe to alerts for multiple (location × alertType) combinations in a single call.
Returns the list of created subscriptions. Duplicates are skipped silently.
input: SubscribeToAlertsBatchInput!
updateAlertSubscription
AlertSubscription!
Update an existing alert subscription (channel, frequency, active).
id: String!input: UpdateAlertSubscriptionInput!
unsubscribeFromAlerts
Boolean!
Unsubscribe - deletes the subscription.
id: String!
createCrisisFromEvents
Crisis!
Create a new crisis from a list of event IDs. Links all provided events to the new crisis.
input: CreateCrisisFromEventsInput!
addEventToCrisis
EventCrisis!
Add an existing event to an existing crisis. Idempotent - returns the existing link if one already exists.
crisisId: String!eventId: String!
Types
All types in the schema, auto-generated from the running server.
DateTimescalar
ISO 8601 date-time string (e.g. 2024-01-15T09:30:00.000Z).
GeoJSONscalar
JSONscalar
Arbitrary JSON value — objects, arrays, strings, numbers, booleans, or null.
Uploadscalar
File upload scalar (via graphql-upload).
AlertStatusenum
Publication status of an alert.
Value
Description
draft
—
published
—
archived
—
Channelenum
Notification channel for alert subscriptions.
Value
Description
email
—
sms
—
DetectionStatusenum
Processing status of a detection (retained for potential future use).
Value
Description
raw
—
processed
—
ignored
—
Frequencyenum
How often a user receives alert notifications.
Value
Description
immediately
—
daily
—
weekly
—
monthly
—
InvitationStatusenum
Status of an invitation.
Value
Description
pending
—
accepted
—
expired
—
NotificationStatusenum
Value
Description
PENDING
—
DELIVERED
—
FAILED
—
READ
—
OrgMemberRoleenum
Role within an organisation.
Value
Description
owner
—
admin
—
member
—
TeamMemberRoleenum
Role within a team.
Value
Description
lead
—
analyst
—
viewer
—
AcceptInviteInputinput
Field
Type
Description
token
String!
—
name
String!
—
password
String!
—
AddCommentInputinput
Field
Type
Description
eventId
String
Provide exactly one of eventId, signalId, or crisisId.
signalId
String
—
crisisId
String
—
comment
String!
—
tagUserIds
[String!]
User IDs to tag in the comment.
AddFeedbackInputinput
Field
Type
Description
eventId
String
Provide exactly one of eventId, signalId, or crisisId.
signalId
String
—
crisisId
String
—
rating
Int!
Rating from 1 to 5.
text
String
Optional textual feedback.
AlertDigestInputinput
Field
Type
Description
alertIds
[String!]!
List of alert IDs to include in the digest.
frequency
String!
Frequency: daily, weekly, or monthly.
AlertNotifyInputinput
Field
Type
Description
alertId
String!
Alert ID to notify subscribers about (uses immediate frequency).
CreateAlertInputinput
Field
Type
Description
eventId
String!
The event ID to create an alert from.
status
AlertStatus
—
CreateApiKeyInputinput
Input for creating a new API key.
Field
Type
Description
name
String!
A descriptive name for this key (e.g. my-app-prod).
expiresAt
DateTime
Optional expiration date. Omit for a key that never expires.
CreateBulkNotificationsInputinput
Field
Type
Description
userIds
[String!]!
List of user IDs to notify.
message
String!
—
notificationType
String!
—
actionUrl
String
—
actionText
String
—
CreateCrisisFromEventsInputinput
Field
Type
Description
title
String
—
summary
String
—
severity
Float!
—
locationId
String
—
needs
JSON!
Needs as JSON.
eventIds
[String!]!
Event IDs to link to the newly created crisis (must not be empty).
CreateDataSourceInputinput
Field
Type
Description
name
String!
—
type
String!
—
isActive
Boolean
—
baseUrl
String
—
infoUrl
String
—
CreateEventInputinput
Field
Type
Description
signalIds
[String!]!
—
title
String
—
description
String
—
descriptionSignals
JSON
—
validFrom
String!
—
validTo
String!
—
firstSignalCreatedAt
String!
—
lastSignalCreatedAt
String!
—
originId
String
—
destinationId
String
—
locationId
String
—
types
[String!]!
—
severity
Int
Severity score (1–5). Aggregated from signal severities.
populationAffected
String
—
populationDisplaced
String
Estimated population displaced (BigInt as string).
casualties
Int
Aggregated casualties for the event (max across constituent signals).
rank
Float!
—
lat
Float
Latitude for automatic geo-resolution (resolves to nearest location in hierarchy).
lng
Float
Longitude for automatic geo-resolution.
CreateLocationInputinput
Field
Type
Description
geoId
Int
—
osmId
String
—
pCode
String
—
name
String!
—
level
Int!
—
parentId
String
—
CreateManualSignalInputinput
Field
Type
Description
sourceId
String!
Data source ID (must be field_officer, partner, or government type).
title
String!
—
description
String!
—
severity
Int
Severity score (1–5).
url
String
URL or reference link.
mediaUrls
[String!]
Media URLs (pre-uploaded via /api/upload endpoint).
media
[Upload!]
Media files (direct upload via graphql-upload, alternative to mediaUrls).
locationId
String
—
originId
String
—
destinationId
String
—
lat
Float
Latitude for automatic geo-resolution.
lng
Float
Longitude for automatic geo-resolution.
metadata
JSON
Arbitrary internal metadata stored in rawData (e.g. notes, recommendAlert).
Not surfaced in the UI - use freely without schema changes.
CreateNotificationInputinput
Field
Type
Description
userId
String!
—
message
String!
—
notificationType
String!
—
actionUrl
String
—
actionText
String
—
CreateOrganisationInputinput
Fields for creating a new organisation.
Field
Type
Description
name
String!
Display name for the organisation.
slug
String!
URL-friendly identifier. Must be unique.
CreateSignalInputinput
Field
Type
Description
sourceId
String!
—
externalId
String
Stable upstream identifier for idempotent ingestion. If a signal with
the same (sourceId, externalId) already exists, createSignal returns the
existing row instead of creating a duplicate. Recommended prefix scheme:
"dataminr:{alertId}", "gdacs:{eventid}", "acled:{event_id_cnty}".
rawData
JSON!
—
publishedAt
String!
—
collectedAt
String
—
url
String
—
title
String
—
description
String
—
severity
Int
Severity score (1–5). From data source or estimated by pipeline.
casualties
Int
Reported casualties for the signal.
media
[String!]
Media URLs (source URLs for images, videos, etc.).
originId
String
—
destinationId
String
—
locationId
String
—
lat
Float
Latitude for automatic geo-resolution (resolves to nearest location in hierarchy).
lng
Float
Longitude for automatic geo-resolution.
CreateTeamInputinput
Field
Type
Description
organisationId
String!
—
name
String!
—
slug
String!
—
description
String
—
InviteUserInputinput
Field
Type
Description
email
String!
—
organisationId
String!
—
role
String
Organisation role: owner, admin, member (default: member).
teams
[TeamAssignmentInput!]!
Team assignments — at least one team is required. Each entry grants the
invitee membership in that team with the given role on acceptance.
ReplyToCommentInputinput
Field
Type
Description
repliedToCommentId
String!
ID of the comment to reply to.
comment
String!
—
tagUserIds
[String!]
User IDs to tag in the reply.
SubscribeToAlertsBatchInputinput
Field
Type
Description
locationIds
[String!]!
One or more location IDs.
alertTypes
[String!]!
One or more disaster/event types (glideNumbers). A subscription is created for every (location × alertType) pair.
channel
Channel!
—
frequency
Frequency!
—
minSeverity
Int
Minimum event severity (1-5). Applied to all created subscriptions.
SubscribeToAlertsInputinput
Field
Type
Description
locationId
String!
—
alertType
String!
Disaster/event type (glideNumber from disaster_types, e.g. 'fl', 'eq').
channel
Channel!
—
frequency
Frequency!
—
minSeverity
Int
Minimum event severity (1-5) to notify on. Defaults to 1 (all alerts).
TeamAssignmentInputinput
One (team, role) assignment passed to inviteUser.
Field
Type
Description
teamId
String!
—
teamRole
TeamMemberRole!
—
UpdateAlertInputinput
Field
Type
Description
status
AlertStatus
—
UpdateAlertSubscriptionInputinput
Field
Type
Description
channel
Channel
—
frequency
Frequency
—
active
Boolean
—
minSeverity
Int
Minimum event severity (1-5).
UpdateCrisisPopulationInputinput
Field
Type
Description
populationAffected
String
Population directly affected by the events (BigInt as string).
populationInArea
String
Total population residing within the event admin areas (BigInt as string).
title
String
AI-generated crisis title.
summary
String
AI-generated crisis summary.
UpdateDataSourceInputinput
Field
Type
Description
name
String
—
type
String
—
isActive
Boolean
—
baseUrl
String
—
infoUrl
String
—
UpdateEventInputinput
Field
Type
Description
signalIds
[String!]
—
title
String
—
description
String
—
descriptionSignals
JSON
—
validFrom
String
—
validTo
String
—
firstSignalCreatedAt
String
—
lastSignalCreatedAt
String
—
originId
String
—
destinationId
String
—
locationId
String
—
types
[String!]
—
severity
Int
—
populationAffected
String
—
populationDisplaced
String
Estimated population displaced (BigInt as string).
casualties
Int
Aggregated casualties for the event (max across constituent signals).
rank
Float
—
UpdateLocationInputinput
Field
Type
Description
geoId
Int
—
osmId
String
—
pCode
String
—
name
String
—
level
Int
—
parentId
String
—
UpdateOrganisationInputinput
Fields for updating an existing organisation.
Field
Type
Description
name
String
New display name.
slug
String
New URL-friendly identifier.
isActive
Boolean
Set active/inactive status.
UpdateProfileInputinput
Field
Type
Description
name
String
—
phoneNumber
String
—
image
String
—
enableInAppNotification
Boolean
—
enableEmailNotification
Boolean
—
enableSMSNotification
Boolean
—
UpdateTeamInputinput
Field
Type
Description
name
String
—
slug
String
—
description
String
—
UpsertLocationMetadataInputinput
Field
Type
Description
locationId
String!
—
type
String!
Type string (e.g. "iom_dtm_displacement").
data
JSON!
JSON payload for this type.
Alertobject
An alert created from an event, distributed to subscribed users.
Field
Type
Description
id
String!
—
event
Event!
The event this alert was created from.
status
AlertStatus!
—
userAlerts
[UserAlert!]!
Users who received this alert.
AlertSubscriptionobject
A user's subscription to alerts of a specific type at a specific location.
Field
Type
Description
id
String!
—
userId
String!
—
user
User!
—
location
Location!
—
alertType
String!
Disaster/event type to subscribe to (e.g. 'fl' for flood, 'eq' for earthquake).
active
Boolean!
—
minSeverity
Int!
Minimum event severity (1-5) to notify on. Alerts with event.severity < minSeverity are suppressed for this user.
channel
Channel!
—
frequency
Frequency!
—
createdAt
DateTime!
—
updatedAt
DateTime!
—
ApiKeyobject
A personal API key for programmatic access. The full key is only shown once at creation.
Field
Type
Description
id
String!
—
name
String!
Descriptive name you chose when creating the key.
prefix
String!
Short prefix for identification (e.g. sk_live_abc1).
expiresAt
DateTime
Optional expiration date. Expired keys are rejected automatically.
lastUsedAt
DateTime
When this key was last used to authenticate a request.
revokedAt
DateTime
When this key was revoked, if applicable. Revocation is permanent.
createdAt
DateTime!
—
updatedAt
DateTime!
—
ArchiveStaleAlertsResultobject
Result of the archiveStaleAlerts bulk mutation.
Field
Type
Description
alertsArchived
Int!
—
CommentTagobject
A tag linking a user to a comment.
Field
Type
Description
user
User!
—
comment
UserComment!
—
CreateApiKeyPayloadobject
Returned only from createApiKey. Contains the full plaintext
key that will never be retrievable again.
Field
Type
Description
apiKey
ApiKey!
—
key
String!
The full API key. Copy this immediately — it cannot be retrieved later.
Crisisobject
A crisis aggregates multiple events into a single coherent narrative.
Field
Type
Description
id
String!
—
title
String
—
summary
String
—
severity
Float!
Severity score (aggregated from linked events).
generalLocation
Location
General location of the crisis.
needs
JSON!
Needs associated with the crisis (JSON structure).
populationAffected
String
Population directly affected by linked events (BigInt as string).
populationInArea
String
Total population residing within the admin areas of linked events (BigInt as string).
events
[Event!]!
Events that are part of this crisis.
feedbacks
[UserFeedback!]!
User feedback on this crisis.
comments
[UserComment!]!
User comments on this crisis.
DataSourceobject
An external data source that feeds signals into the system.
Field
Type
Description
id
String!
—
name
String!
—
type
String!
Source type identifier (e.g. satellite, sensor, manual).
isActive
Boolean!
—
baseUrl
String
Base URL of the data source API.
infoUrl
String
URL with more information about this source.
createdAt
DateTime!
—
updatedAt
DateTime!
—
signals
[Signal!]!
Signals collected from this data source.
DisasterLevel1object
A level-1 category with its level-2 groups.
Field
Type
Description
name
String!
—
groups
[DisasterLevel2!]!
—
DisasterLevel2object
A level-2 group with its distinct classification codes.
Field
Type
Description
name
String!
—
codes
[String!]!
Classification codes belonging to this level-2 group (usually one).
subTypes
[DisasterType!]!
Level-3 sub-types under this level-2 group.
DisasterTypeobject
A disaster classification in a 3-level hierarchy (level1 > level2 > level3).
Events store arrays of codes (GLIDE or CLEAR IDs).
An event grouping related signals into a coherent narrative.
Field
Type
Description
id
String!
—
title
String
—
description
String
—
descriptionSignals
JSON
LLM-generated signal descriptions as JSON.
validFrom
DateTime!
—
validTo
DateTime!
—
firstSignalCreatedAt
DateTime!
—
lastSignalCreatedAt
DateTime!
—
originLocation
Location
Origin location of the event.
destinationLocation
Location
Destination location of the event.
generalLocation
Location
General location (when no origin/destination).
types
[String!]!
Event type tags.
severity
Int
Severity score (1–5). Aggregated from signal severities.
isDummy
Boolean!
Whether this is seed/demo data.
populationAffected
String
Estimated population affected.
populationDisplaced
String
Estimated population displaced by the event (BigInt as string).
casualties
Int
Aggregated casualties for the event (max across constituent signals).
rank
Float!
—
signals
[Signal!]!
Signals linked to this event.
alerts
[Alert!]!
Alerts created from this event.
feedbacks
[UserFeedback!]!
User feedback on this event.
comments
[UserComment!]!
User comments on this event.
escalations
[EventEscalation!]!
Escalations by users.
EventCrisisobject
Link between a crisis and an event.
Field
Type
Description
id
String!
—
crisisId
String!
—
eventId
String!
—
collectedAt
DateTime!
—
crisis
Crisis!
—
event
Event!
—
EventEscalationobject
Tracks a user escalating an event, optionally to a crisis.
Field
Type
Description
id
String!
—
user
User!
—
event
Event!
—
isCrisis
Boolean!
Whether this has been escalated to a crisis.
validFrom
DateTime!
—
validTo
DateTime!
—
FeatureFlagobject
A feature toggle that controls runtime behavior.
Field
Type
Description
id
Int!
—
key
String!
Unique key used to look up this flag (e.g. dark_mode).
enabled
Boolean!
—
updatedAt
DateTime!
—
Invitationobject
An invitation to join an organisation, with one or more team assignments.
Field
Type
Description
id
String!
—
email
String!
—
organisation
Organisation!
—
team
Team
Single team — legacy field, populated only for invitations created
before the multi-team join existed. New invitations use `teams`.
role
String!
Organisation role assigned on acceptance.
teamRole
String
Legacy single-team role. Use `teams` for new invitations.
teams
[InvitationTeam!]!
Team assignments granted to the invitee on acceptance. Empty list
means org-only access (no team).
expiresAt
DateTime!
—
acceptedAt
DateTime
—
invitedBy
User!
—
createdAt
DateTime!
—
status
InvitationStatus!
Computed from acceptedAt and expiresAt.
InvitationInfoobject
Public invitation info returned by token lookup (limited fields).
Field
Type
Description
id
String!
—
email
String!
—
organisationName
String!
—
teamName
String
Legacy single-team name (populated only for old invitations).
role
String!
—
teamRole
String
Legacy single-team role (populated only for old invitations).
teams
[InvitationInfoTeam!]!
Team assignments the invitee will be granted on acceptance.
expiresAt
DateTime!
—
status
InvitationStatus!
—
InvitationInfoTeamobject
One (team, role) assignment as returned by the public token lookup.
Field
Type
Description
teamId
String!
—
teamName
String!
—
teamRole
TeamMemberRole!
—
InvitationTeamobject
One (team, role) assignment attached to an invitation.
Field
Type
Description
team
Team!
—
teamRole
TeamMemberRole!
—
Locationobject
A geographic location in a hierarchy (country > state > city, etc.).
Field
Type
Description
id
String!
—
geoId
Int
GeoNames identifier.
osmId
String
OpenStreetMap identifier.
pCode
String
P-Code identifier.
name
String!
—
level
Int!
Hierarchy level: 0 = country, 1 = state/province, 2 = city, etc.
geometry
GeoJSON
Geometry as GeoJSON (Point or MultiPolygon).
parent
Location
Parent location in the hierarchy.
children
[Location!]!
Child locations one level below.
ancestorIds
[String!]!
IDs of all ancestor locations (parent, grandparent, etc.).
ancestors
[Location!]!
All ancestor locations (parent, grandparent, etc.).
population
String
Population residing within this location's geometry. Null for point locations or when not yet computed.
metadata
[LocationMetadata!]!
Per-type metadata (IOM DTM, INFORM, etc). Pass a type argument to filter.
By default only the current value is returned (validTo is null).
Pass current: false to include the full history.
type: Stringcurrent: Boolean
LocationMetadataobject
Arbitrary per-location metadata keyed by type. History is preserved:
writes close the current row (set validTo = now()) and insert a new one.
The CURRENT value for a (location, type) is the row where validTo is null.
Field
Type
Description
id
String!
—
location
Location!
—
type
String!
Free-form type string (e.g. "iom_dtm_displacement", "acaps_inform").
data
JSON!
Source-specific payload stored as JSON.
validFrom
DateTime!
When this value became current.
validTo
DateTime
When this value was superseded. Null means still current.
createdAt
DateTime!
—
updatedAt
DateTime!
—
Notificationobject
Field
Type
Description
id
String!
—
user
User!
—
message
String!
—
notificationType
String!
—
actionUrl
String
—
actionText
String
—
status
NotificationStatus!
—
emailNotificationStatus
NotificationStatus
—
smsNotificationStatus
NotificationStatus
—
createdAt
DateTime!
—
updatedAt
DateTime!
—
Organisationobject
An organisation that owns teams and has members.
Field
Type
Description
id
String!
—
name
String!
—
slug
String!
URL-friendly identifier.
isActive
Boolean!
Whether this organisation is active. Inactive organisations are hidden from non-admin users.
createdAt
DateTime!
When this organisation was created.
updatedAt
DateTime!
When this organisation was last updated.
teams
[Team!]!
Teams belonging to this organisation.
members
[OrgMember!]!
Members of this organisation.
OrganisationUserobject
Links a user to an organisation with a role.
Field
Type
Description
id
String!
—
userId
String!
—
organisationId
String!
—
role
String!
—
OrgMemberobject
Links a user to an organisation with an org-level role.
Field
Type
Description
id
String!
—
user
User!
—
role
String!
Organisation-level role: owner, admin, or member.
createdAt
DateTime!
When this membership was created.
Signalobject
A signal derived from a data source.
Field
Type
Description
id
String!
—
source
DataSource!
The data source this signal was collected from.
externalId
String
Stable upstream identifier (e.g. "dataminr:{alertId}"). Used to
deduplicate ingestion — (source, externalId) is unique.
rawData
JSON!
Original signal payload as JSON.
publishedAt
DateTime!
—
collectedAt
DateTime!
—
url
String
—
title
String
—
description
String
—
severity
Int
Severity score (1–5). From data source or estimated by pipeline.
casualties
Int
Reported casualties for the signal. Sourced from ACLED's fatalities
field; for Dataminr, parsed from raw text via regex.
media
[String!]!
Media URLs (S3 keys for manual uploads, or source URLs for pipeline signals).
isDummy
Boolean!
Whether this is seed/demo data.
originLocation
Location
Origin location of the signal.
destinationLocation
Location
Destination location of the signal.
generalLocation
Location
General location (when no origin/destination).
events
[Event!]!
Events this signal is linked to.
feedbacks
[UserFeedback!]!
User feedback on this signal.
comments
[UserComment!]!
User comments on this signal.
Teamobject
A team within an organisation, scoped to specific locations.
Field
Type
Description
id
String!
—
name
String!
—
slug
String!
URL-friendly identifier, unique within the organisation.
description
String
—
organisation
Organisation!
The organisation this team belongs to.
members
[TeamMember!]!
Members of this team.
locations
[Location!]!
Locations this team is scoped to. Empty means global monitoring.
createdAt
DateTime!
—
updatedAt
DateTime!
—
TeamMemberobject
Links a user to a team with a team-level role.
Field
Type
Description
id
String!
—
user
User!
—
role
String!
Team-level role: lead, analyst, or viewer.
createdAt
DateTime!
—
Userobject
A registered user with role-based access.
Field
Type
Description
id
String!
—
email
String!
—
name
String!
—
emailVerified
Boolean!
—
phoneNumber
String
—
image
String
—
role
String!
User role: viewer, editor, or admin.
isActive
Boolean!
—
enableInAppNotification
Boolean!
—
enableEmailNotification
Boolean!
—
enableSMSNotification
Boolean!
—
createdAt
DateTime!
—
updatedAt
DateTime!
—
alerts
[UserAlert!]!
Alerts received by this user.
notifications
[Notification!]!
—
defaultTeam
Team
The user's default team (last selected).
organisations
[OrganisationUser!]!
Organisations this user belongs to.
teamMemberships
[TeamMember!]!
Teams this user belongs to.
feedbacks
[UserFeedback!]!
Feedback given by this user.
comments
[UserComment!]!
Comments made by this user.
escalations
[EventEscalation!]!
Events/alerts escalated by this user.
UserAlertobject
Tracks an alert delivered to a user — view status.
Field
Type
Description
id
String!
—
user
User!
—
alert
Alert!
—
viewedAt
DateTime
When the user viewed this alert.
UserCommentobject
A user comment on a signal, event, or crisis, with reply support.
Field
Type
Description
id
String!
—
user
User!
—
event
Event
—
signal
Signal
—
crisis
Crisis
—
comment
String!
—
isCommentReply
Boolean!
Whether this comment is a reply to another comment.
repliedToCommentId
String
ID of the comment being replied to, if any.
tags
[CommentTag!]!
Users tagged in this comment.
createdAt
DateTime!
—
updatedAt
DateTime!
—
UserFeedbackobject
User feedback on a signal, event, or crisis — rating and optional text.