Lema
Visualize the third parties you manage in Lema, their risk assessments and their monitoring alerts. Map assessments and alerts to each vendor, and monitor vendor risk changes through queries and alerts.
- Installation
- Authorization
- Data Model
- Types
Installation
This integration connects to the Lema Public API (https://api.lema.ai) and ingests the third parties (vendors) you manage in Lema, their risk assessments, and the monitoring alerts raised on them. Every request is a read-only GET. The integration is managed by JupiterOne and runs in the JupiterOne cloud, so no collector is needed.
Prerequisites
- A Lema organization with your third-party inventory.
- A Lema Public API key for that organization.
- Access to JupiterOne with permission to configure integrations.
Configuration in Lema
The integration authenticates with a Lema Public API key, sent as Authorization: Bearer <key> on every request. The key grants read access to your organization's third parties, assessments and monitoring signals, so treat it as a credential.
API keys and their permissions are managed on the Lema side. Ask your Lema administrator or your Lema contact for a Public API key with read access to:
- Third parties (
GET /api/v1/third-parties) - Assessments (
GET /api/v1/assessments) - Signals (
GET /api/v1/signals)
Copy the key and store it somewhere safe; you will paste it into JupiterOne.
Configuration in JupiterOne
To install the Lema integration in JupiterOne, navigate to the Integrations tab in JupiterOne and select Lema. Click New Instance to begin configuring your integration.
Creating an instance requires the following:
-
The Account Name used to identify the Lema account in JupiterOne. Ingested entities will have this value stored in
tag.AccountNamewhen theAccountNametoggle is enabled. -
Description to assist in identifying the integration instance, if desired.
-
Polling Interval that you feel is sufficient for your monitoring needs. You may leave this as
DISABLEDand manually execute the integration. -
The API Key authentication fields below.
Authentication fields
| Field | Required | Description |
|---|---|---|
| API Key | Yes | The Lema Public API key. It is sent as Authorization: Bearer <key>. |
| API Base URL | No | The Lema API host. Defaults to https://api.lema.ai. Only https Lema hosts are accepted. |
When you save the instance, JupiterOne checks the key by requesting one third party from the Lema API. An invalid or revoked key is reported as an authentication error.
Click Create once all values are provided to finalize the integration.
Data Sources
Each data source can be enabled or disabled on its own. All data sources are disabled by default, so enable the ones you want to ingest. The lema_account entity is always created.
| Data Source | Description | Entities Created |
|---|---|---|
| Vendors | Third parties managed in Lema, with lifecycle (in evaluation, onboarded, unsanctioned, archived, offboarded), approval status, assessment score, inherent risk level, tags, linked sources, assessment counts and re-assessment due date. | lema_vendor |
| Assessments | Finalized and ongoing third-party risk assessments, with status, decision, score, inherent risk level, project, assessors, control counts by verification status, and start, completion and due dates. | lema_assessment |
| Alerts | Continuous-monitoring signals that a Lema alert rule promoted to an alert, with severity, status, type, alert rule, linked control, CVE identifier and references. | lema_alert |
Assessments and Alerts require Vendors. Both run after the Vendors data source and attach to the vendor they belong to. If Vendors is disabled, Assessments and Alerts are not ingested either. To ingest everything the integration supports, enable all three data sources.
Relationships are built only when every data source they need is enabled:
| Relationship | Requires |
|---|---|
lema_account HAS lema_vendor | Vendors |
lema_vendor HAS lema_assessment | Vendors and Assessments |
lema_vendor HAS lema_alert | Vendors and Alerts |
Example queries
Find onboarded vendors with no completed assessment:
FIND lema_vendor WITH lifecycle = 'onboarded'
THAT !HAS lema_assessment WITH status = 'completed'
Find unsanctioned third parties:
FIND lema_vendor WITH lifecycle = 'unsanctioned'
Find onboarded vendors with an open critical alert:
FIND lema_vendor WITH lifecycle = 'onboarded'
THAT HAS lema_alert WITH severity = 'critical' AND open = true
Find vendors whose re-assessment is overdue:
FIND lema_vendor WITH reAssessmentDueOn < date.now
Notes
- Every run is a full sync. Each run reads every third party, assessment and alert. Items that Lema no longer returns are removed from the graph on the next run.
- Only alerts are ingested. Monitoring signals that no alert rule promoted to an alert are not collected. Signals Lema marks as false positives are excluded by the Lema API.
- Contact details are not ingested. Third-party contacts and business-owner names and e-mail addresses are not stored in JupiterOne. Assessments carry the names of their assessors and assignees, not their e-mail addresses.
- Alert counts per vendor come from the related
lema_alertentities, so they can be filtered by severity and status in queries.
Next steps
Now that your integration instance has been configured, it will begin running on the polling interval you provided, populating data within JupiterOne. Continue on to our Instance management guide to learn more about working with and editing integration instances.
Additional resources
- Lema — for API keys and API access questions, contact your Lema team
Endpoints
API endpoints that the integration makes requests to.
Show Endpoints (3)
https://api.lema.ai/api/v1/assessmentshttps://api.lema.ai/api/v1/signalshttps://api.lema.ai/api/v1/third-parties
Documentation Links
Links to provider documentation relevant to setup and configuration.
Show Documentation Links (1)
Per-Step Breakdown
Detailed authorization requirements for each ingestion step.
Show all steps (2)
| Step | Endpoints |
|---|---|
| Fetch Alerts | https://api.lema.ai/api/v1/signals |
| Fetch Assessments | https://api.lema.ai/api/v1/assessments |
Entities
The following entities are created:
| Resources | Entity _type | Entity _class |
|---|---|---|
| Account | lema_account | Account |
| Alert | lema_alert | Finding |
| Assessment | lema_assessment | Assessment |
| Vendor | lema_vendor | Vendor |
Relationships
The following relationships are created:
Source Entity _type | Relationship _class | Target Entity _type |
|---|---|---|
lema_account | HAS | lema_vendor |
lema_vendor | HAS | lema_assessment |
lema_vendor | HAS | lema_alert |
Lema Account
lema_account inherits from Account
Lema Alert
lema_alert inherits from Finding
| Property | Type | Description | Specifications |
|---|---|---|---|
alertRuleName | string | null | Name of the alert rule that promoted the signal to an alert. | |
alertType | string | null | Signal type, e.g. data_breach, security_vulnerability_disclosure, service_outage_disclosure. | |
controlName | string | null | Name of the Lema control the signal is linked to, if any. | |
cveId | string | null | CVE identifier from the alert evidence (e.g. CVE-2025-12345), when the evidence is a CVE. | |
detectedOn | number | null | When Lema first detected the signal (epoch ms). | |
evidenceType | string | null | Evidence kind: cve, news or none. | |
id * | string | Lema signal ID. | |
mitigationSteps | array | null | Suggested remediation steps. | |
subtitle | string | null | Short secondary headline of the alert. |
Lema Assessment
lema_assessment inherits from Assessment
| Property | Type | Description | Specifications |
|---|---|---|---|
assessmentScore | string | null | Assessment score: acceptable, concerning, unacceptable or not_assessed. | |
assessmentType | string | null | finalized (concluded) or ongoing (in progress). | |
assignees | array | null | Names of the users assigned to an ongoing assessment. | |
decision | string | null | Final decision: approved, conditionally_approved or rejected. Null while ongoing. | |
dueOn | number | null | When the assessment is due (epoch ms). | |
gapControlCount | number | null | Number of the assessment controls with verification status gap. | |
inherentRiskLevel | string | null | The assessed third party's current effective inherent risk level: critical, high, medium or low. | |
isInherentRiskManuallyAssigned | boolean | null | Whether inherentRiskLevel came from a manual assignment rather than the system-computed score. | |
noEvidenceControlCount | number | null | Number of the assessment controls with verification status no_evidence. | |
notApplicableControlCount | number | null | Number of the assessment controls with verification status not_applicable. | |
notEvaluatedControlCount | number | null | Number of the assessment controls with verification status not_evaluated. | |
projectName | string | null | Assessment project (scope domain) name. | |
sentToReviewOn | number | null | When the assessment was submitted for approval (epoch ms). | |
validatedControlCount | number | null | Number of the assessment controls with verification status validated. |
Lema Vendor
lema_vendor inherits from Vendor
| Property | Type | Description | Specifications |
|---|---|---|---|
assessmentScore | string | null | Overall assessment score (worst score across the latest finalized assessment of each project): acceptable, concerning, unacceptable or not_assessed. | |
companySize | string | null | Company size band of the third party. | |
engagementNames | array | null | Names of the engagements this third party belongs to. | |
foundingYear | number | null | Year the third party was founded. | |
industrySector | string | null | Industry sector of the third party. | |
inherentRiskLevel | string | null | Effective inherent risk level (manual override if set, else system-computed): critical, high, medium or low. | |
inherentRiskUpdatedOn | number | null | When the inherent risk level was last updated (epoch ms). | |
isInherentRiskManuallyAssigned | boolean | null | Whether inherentRiskLevel came from a manual assignment rather than the system-computed score. | |
lifecycle | string | null | Lifecycle state: in_evaluation, onboarded, unsanctioned, archived or offboarded. | |
lifecycleChangedOn | number | null | When the lifecycle state last changed (epoch ms). | |
ongoingAssessments | number | null | Number of in-flight assessments. | |
parentId | string | null | Lema ID of the parent company (group affiliation), when the third party belongs to a group. | |
reAssessmentDueOn | number | null | When the next re-assessment is due (epoch ms). Null when no cadence is set. | |
sources | array | null | Display names of the data sources linked to this third party. | |
statusChangedOn | number | null | When the approval status last changed (epoch ms). | |
totalAssessments | number | null | Number of concluded assessments. |