Skip to main content

Event types

The event types Evinor emits today, and the roles each one extracts. These are the payload.eventCodeName values you gate on and the details.roles[].code values you read — see Receiving webhooks for the envelope these roles arrive in.

Wire contract: protocolVersion 0.1

We intend event type codeNames to be stable, and treat renaming one as a breaking change. Role codeNames may still change before 1.0 — read them defensively and skip codes you do not recognize.

roles is a list, not a map

The same code may appear more than once: a round backed by three investors arrives as three INVESTING_COMPANY_NAME entries. Roles that can repeat are tagged repeatable in the tables below. Do not key by code — Object.fromEntries(roles.map(r => [r.code, r.textValue])) keeps the last entry and silently discards the others. Group by code instead.

Each role table below has a Type column — the role's value type, and which parsed companion it carries on the wire:

TypeMeaning
NAMED_ENTITYAn organization or person named in the event. Carries namedEntityId when the text resolved to a known entity.
CURRENCYA monetary amount. Carries a parsed parsedAmount; a role that does not parse is dropped rather than delivered unparsed.
NUMBERA plain count or percentage. Carries a parsed parsedAmount, the same guarantee as CURRENCY.
DURATIONA span of time, validated as text. May carry parsedAmount, but only sometimes.
CATEGORICALOne value from a fixed vocabulary, delivered as an uppercase token in textValue. No parsed companion.
NONEFree text with no parsing — the value is in textValue only.

01. Acquisition​

ACQUISITION · Established

A company acquires another company.

Role codeNameTypeDescription
ACQUIRING_COMPANY_NAMEAcquiring Company NameNAMED_ENTITYThe company taking ownership in the deal.
COMPANY_BEING_ACQUIREDCompany Being AcquiredNAMED_ENTITYThe company that is being taken over.
VALUE_OF_ACQUISITIONValue of the AcquisitionCURRENCYThe reported price paid for the deal.
ACQUISITION — roles on the wire
{
"eventCodeName": "ACQUISITION",
"details": {
"roles": [
{
"code": "ACQUIRING_COMPANY_NAME",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "COMPANY_BEING_ACQUIRED",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "VALUE_OF_ACQUISITION",
"textValue": "…",
"parsedAmount": 1000000
}
]
}
}

02. Investment​

FUND_RAISING · Established

A company completes a fundraising round.

Role codeNameTypeDescription
INVESTING_COMPANY_NAME (repeatable)Investing Company NameNAMED_ENTITYAn investor backing the round. A round with several investors yields one entry per investor.
COMPANY_RAISING_FUNDSCompany Raising FundsNAMED_ENTITYThe startup that raised the capital.
AMOUNT_RAISEDAmount RaisedCURRENCYTotal capital secured in this round.
FUNDING_ROUND_TYPEFunding Round TypeNONEThe round's stage label, such as Seed or Series A.
FUND_RAISING — roles on the wire
{
"eventCodeName": "FUND_RAISING",
"details": {
"roles": [
{
"code": "INVESTING_COMPANY_NAME",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "INVESTING_COMPANY_NAME",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "COMPANY_RAISING_FUNDS",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "AMOUNT_RAISED",
"textValue": "…",
"parsedAmount": 1000000
},
{
"code": "FUNDING_ROUND_TYPE",
"textValue": "…"
}
]
}
}

03. Layoff​

LAYOFF · Established

A company lays off employees.

Role codeNameTypeDescription
COMPANY_NAMECompany NameNAMED_ENTITYThe employer reducing its headcount.
AFFECTED_EMPLOYEES_COUNTNumber of Employees AffectedNUMBERHow many roles were eliminated.
PERCENTAGE_OF_WORKFORCE_AFFECTEDPercentage of Workforce AffectedNUMBERShare of total staff let go, as a percentage.
ANNOUNCED_REASONReason for LayoffNONEThe publicly stated rationale for the cuts.
CATEGORY_OF_EMPLOYEES_AFFECTEDCategory of Employees AffectedNONEWhich team or function bore the cuts, such as sales.
LAYOFF — roles on the wire
{
"eventCodeName": "LAYOFF",
"details": {
"roles": [
{
"code": "COMPANY_NAME",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "AFFECTED_EMPLOYEES_COUNT",
"textValue": "…",
"parsedAmount": 1000000
},
{
"code": "PERCENTAGE_OF_WORKFORCE_AFFECTED",
"textValue": "…",
"parsedAmount": 1000000
},
{
"code": "ANNOUNCED_REASON",
"textValue": "…"
},
{
"code": "CATEGORY_OF_EMPLOYEES_AFFECTED",
"textValue": "…"
}
]
}
}

04. Leadership Change​

LEADERSHIP_CHANGE · Established

A company's senior leadership changes through an appointment, a departure, or a succession.

Role codeNameTypeDescription
COMPANY_NAMECompany NameNAMED_ENTITYThe organization whose leadership shifted.
ROLE_TITLERole TitleNONEThe executive position that changed hands.
INCOMING_PERSONIncoming PersonNAMED_ENTITYThe individual stepping into the role.
OUTGOING_PERSONOutgoing PersonNAMED_ENTITYThe individual departing the role.
REASONReasonNONEThe publicly stated rationale for the move.
LEADERSHIP_CHANGE — roles on the wire
{
"eventCodeName": "LEADERSHIP_CHANGE",
"details": {
"roles": [
{
"code": "COMPANY_NAME",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "ROLE_TITLE",
"textValue": "…"
},
{
"code": "INCOMING_PERSON",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "OUTGOING_PERSON",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "REASON",
"textValue": "…"
}
]
}
}

05. IPO​

IPO · Established

A company makes a concrete move toward going public: an exchange filing, a priced offering, or a first day of trading. A filing alone counts, so this Event can arrive long before any share changes hands.

Role codeNameTypeDescription
COMPANY_NAMECompany NameNAMED_ENTITYThe business seeking or completing a public listing.
VALUATIONValuationCURRENCYWhat the company is valued at for the offering. On a filing this is a target or an expectation, not a settled market price.
AMOUNT_RAISEDAmount RaisedCURRENCYHow much capital the share sale brings in. Sought or projected until the offering actually prices.
STOCK_EXCHANGEStock ExchangeNONEThe exchange named for the listing, such as NYSE. It can be announced before anything trades there.
IPO — roles on the wire
{
"eventCodeName": "IPO",
"details": {
"roles": [
{
"code": "COMPANY_NAME",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "VALUATION",
"textValue": "…",
"parsedAmount": 1000000
},
{
"code": "AMOUNT_RAISED",
"textValue": "…",
"parsedAmount": 1000000
},
{
"code": "STOCK_EXCHANGE",
"textValue": "…"
}
]
}
}

06. Partnership Announcement​

PARTNERSHIP_ANNOUNCEMENT · Emerging

Two companies form a strategic partnership or alliance.

Emerging — noisier to detect; we recommend gating on confidence.band = HIGH.

Role codeNameTypeDescription
FIRST_PARTNER_COMPANYFirst Partner CompanyNAMED_ENTITYOne of the two collaborating organizations.
SECOND_PARTNER_COMPANYSecond Partner CompanyNAMED_ENTITYThe other collaborating organization.
VALUE_OF_PARTNERSHIPValue of the PartnershipCURRENCYThe reported financial size of the deal.
DURATION_OF_PARTNERSHIPDuration of the PartnershipDURATIONHow long the arrangement is set to run.
PARTNERSHIP_ANNOUNCEMENT — roles on the wire
{
"eventCodeName": "PARTNERSHIP_ANNOUNCEMENT",
"details": {
"roles": [
{
"code": "FIRST_PARTNER_COMPANY",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "SECOND_PARTNER_COMPANY",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "VALUE_OF_PARTNERSHIP",
"textValue": "…",
"parsedAmount": 1000000
},
{
"code": "DURATION_OF_PARTNERSHIP",
"textValue": "…"
}
]
}
}

07. Product Launch​

PRODUCT_LAUNCH · Emerging

A company introduces a product, adds a major new feature, ships a new version, expands what an existing product can do, debuts creative work, or opens a product to a wider audience.

Emerging — noisier to detect; we recommend gating on confidence.band = HIGH.

Role codeNameTypeDescription
COMPANY_NAMECompany NameNAMED_ENTITYThe organization behind the launch.
PRODUCT_OR_SERVICE_NAMEProduct or Service NameNAMED_ENTITYThe product or service being introduced.
LAUNCH_TYPELaunch TypeCATEGORICALWhich kind of launch this was, delivered as an uppercase token drawn from a fixed vocabulary rather than free text.
HOST_PRODUCTHost ProductNAMED_ENTITYThe existing product that a newly added feature or capability plugs into. Absent when the launch stands on its own.
COMPANY_SHORT_DESCRIPTIONCompany Short DescriptionNONEA brief phrase describing what the company does.
PRODUCT_DESCRIPTIONProduct DescriptionNONEA brief phrase describing what the product does.
PRODUCT_LAUNCH — roles on the wire
{
"eventCodeName": "PRODUCT_LAUNCH",
"details": {
"roles": [
{
"code": "COMPANY_NAME",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "PRODUCT_OR_SERVICE_NAME",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "LAUNCH_TYPE",
"textValue": "…"
},
{
"code": "HOST_PRODUCT",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "COMPANY_SHORT_DESCRIPTION",
"textValue": "…"
},
{
"code": "PRODUCT_DESCRIPTION",
"textValue": "…"
}
]
}
}

08. Job opening posted​

JOB_OPENING_POSTED · Established

A vacancy appears on the careers page an organization runs. Each listing becomes one event, built from the listing’s structured data rather than extracted from article text.

Role codeNameTypeDescription
EMPLOYEREmployerNAMED_ENTITYThe organization that is hiring.
JOB_POSTING_REFERENCEJob Posting ReferenceNONEAn opaque identifier for the listing, stable across deliveries of the same opening.
JOB_TITLEJob TitleNONEThe position title exactly as the board shows it.
DEPARTMENTDepartmentNONEThe team or function label the board attaches to the listing. Absent when the board gives none.
SENIORITYSeniorityCATEGORICALHow senior the role is, delivered as an uppercase token from a fixed vocabulary.
EMPLOYMENT_TYPEEmployment TypeCATEGORICALThe employment arrangement for the role, delivered as an uppercase token from a fixed vocabulary. Absent when the board gives none.
WORKPLACE_TYPEWorkplace TypeCATEGORICALWhether the position is on-site, hybrid or remote, delivered as an uppercase token from a fixed vocabulary.
JOB_LOCATION (repeatable)Job LocationNAMED_ENTITYA location the listing gives for the role. A listing with several locations carries several entries.
SALARY_MINSalary MinimumCURRENCYThe low end of the pay range when the board publishes one in structured form.
SALARY_MAXSalary MaximumCURRENCYThe high end of the pay range when the board publishes one in structured form.
SALARY_PERIODSalary PeriodCATEGORICALThe interval the pay range is quoted over, such as per year or per hour, delivered as an uppercase token. Present whenever a pay range is.
JOB_OPENING_POSTED — roles on the wire
{
"eventCodeName": "JOB_OPENING_POSTED",
"details": {
"roles": [
{
"code": "EMPLOYER",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "JOB_POSTING_REFERENCE",
"textValue": "…"
},
{
"code": "JOB_TITLE",
"textValue": "…"
},
{
"code": "DEPARTMENT",
"textValue": "…"
},
{
"code": "SENIORITY",
"textValue": "…"
},
{
"code": "EMPLOYMENT_TYPE",
"textValue": "…"
},
{
"code": "WORKPLACE_TYPE",
"textValue": "…"
},
{
"code": "JOB_LOCATION",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "JOB_LOCATION",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "SALARY_MIN",
"textValue": "…",
"parsedAmount": 1000000
},
{
"code": "SALARY_MAX",
"textValue": "…",
"parsedAmount": 1000000
},
{
"code": "SALARY_PERIOD",
"textValue": "…"
}
]
}
}

09. Security advisory published​

SECURITY_ADVISORY_PUBLISHED · Established

A security advisory is issued for software packages in an open-source ecosystem, disclosing a vulnerability or malicious code. Filled directly from the advisory feed, one event per advisory.

Role codeNameTypeDescription
ADVISORY_ID (repeatable)Advisory IDNONEThe advisory’s own identifier first, then any other advisory identifiers it lists for the same issue (for example a CVE id). It tells two advisories apart.
AFFECTED_PACKAGE (repeatable)Affected PackageNAMED_ENTITYA package the advisory covers, by its published name. An advisory that covers several packages carries several entries.
ECOSYSTEMEcosystemCATEGORICALThe package registry the affected packages are distributed through, delivered as an uppercase token from a fixed vocabulary.
ADVISORY_SOURCEAdvisory SourceCATEGORICALThe vulnerability database that issued the advisory, delivered as an uppercase token from a fixed vocabulary.
ADVISORY_KINDAdvisory KindCATEGORICALWhat type of weakness the advisory describes, delivered as an uppercase token from a fixed vocabulary. Absent when the advisory is unclassified.
ADVISORY_SEVERITYAdvisory SeverityCATEGORICALThe severity rating the advisory assigns, delivered as an uppercase token from a fixed vocabulary. Absent when the advisory gives none.
SECURITY_ADVISORY_PUBLISHED — roles on the wire
{
"eventCodeName": "SECURITY_ADVISORY_PUBLISHED",
"details": {
"roles": [
{
"code": "ADVISORY_ID",
"textValue": "…"
},
{
"code": "ADVISORY_ID",
"textValue": "…"
},
{
"code": "AFFECTED_PACKAGE",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "AFFECTED_PACKAGE",
"textValue": "…",
"namedEntityId": "…"
},
{
"code": "ECOSYSTEM",
"textValue": "…"
},
{
"code": "ADVISORY_SOURCE",
"textValue": "…"
},
{
"code": "ADVISORY_KIND",
"textValue": "…"
},
{
"code": "ADVISORY_SEVERITY",
"textValue": "…"
}
]
}
}

In the samples above, … marks an elided value and any number is illustrative, not real data. namedEntityId, parsedAmount and parsedDate are all optional companions to textValue — present only when entity resolution or value parsing succeeded. A role that was not extracted is absent from roles entirely, never present with a null value.

See also​

  • Receiving webhooks — the envelope these roles are delivered in, and how to verify a delivery's signature.
  • Searching events — query the historical corpus by event type and role filters.