# JupiterOne Documentation > JupiterOne is a security and asset intelligence platform. This documentation covers the platform, API references, J1QL, the data model, and integrations. Source: / # JupiterOne Documentation JupiterOne provides continuous monitoring to surface problems impacting critical assets and infrastructure. Secure your attack surface with continuous asset discovery and attack path analysis. Reduce risk, triage incidents, and prioritize vulnerability findings with greater clarity and 85% fewer SecOps resources. ## Get Started Start configuring your JupiterOne workspace: [ ![](/icons/illustrations/shuttle.svg)![](/icons/illustrations/shuttle.svg) Assets Start importing your assets and devices to build out your environment. ](/features/assets/ingesting-assets.md)[ ![](/icons/illustrations/puzzle.svg)![](/icons/illustrations/puzzle.svg) Integrations Learn more about configuring integrations within your JupiterOne workspace. ](/integrations.md)[ ![](/icons/illustrations/orbit.svg)![](/icons/illustrations/orbit.svg) J1QL Explore J1QL and querying your data to gain a deeper understanding about your security posture. ](/j1ql.md)[ ![](/icons/illustrations/cloud-upload.svg)![](/icons/illustrations/cloud-upload.svg) API Reference Interface with JupiterOne's API to programmatically to streamline workflows and tool management. ](/reference.md) ### Join the Community JupiterOne is used to secure hundreds of organizations. Team up with others in the JupiterOne community using the following resources: - [Slack:](https://join.slack.com/t/askj1/shared_invite/zt-9b0a2htx-m8PmSWMbkjqCzF2dIZiabw) A great place for asking questions and sharing ideas. - [Twitter:](https://twitter.com/jupiterone) Where we post updates and share content from the JupiterOne community. - [GitHub:](https://github.com/jupiterone) JupiterOne ❤️'s Open Source Software! --- Source: /api/alert-rules # Alert rules API An **alert rule** runs one or more J1QL queries on a schedule, evaluates the results against a filter, and runs a configured set of actions when the filter matches. Actions can create alerts, send email or Slack, open Jira tickets, call webhooks, publish to AWS messaging services, and more. This page covers two things: - [**API operations**](#api-operations) — the GraphQL mutations and queries for managing rules programmatically. - [**Rule definition reference**](#rule-definition-reference) — the full schema of a rule's body: properties, operations, every action type, the templating language, parameters, and filtering. Rule [exemptions](#exemptions), which exclude individual entities from a rule's results, are covered under API operations. For the conceptual product overview, see [Alerts and rules](/features/insights-and-alerts/alerts.md). ## API operations ### List alert instances Returns the active, inactive, or dismissed alerts produced by your rules. ```graphql query ListAlertInstances( $alertStatus: AlertStatus $limit: Int $cursor: String ) { listAlertInstances( alertStatus: $alertStatus limit: $limit cursor: $cursor ) { instances { id accountId ruleId level status lastUpdatedOn lastEvaluationBeginOn lastEvaluationEndOn createdOn dismissedOn lastEvaluationResult { rawDataDescriptors { recordCount } } questionRuleInstance { id name description question { queries { query name } } } } pageInfo { endCursor hasNextPage } } } ``` **Variables**: Filtering for ACTIVE Alerts: ```json { "alertStatus": "ACTIVE" } ``` Filtering for INACTIVE Alerts: ```json { "alertStatus": "INACTIVE" } ``` Filtering for DISMISSED Alerts: ```json { "alertStatus": "DISMISSED" } ``` To apply a limit to the number of results returned, pass a limit variable: ```json { "limit": 10 } ``` To paginate through the results, pass the `endCursor` received in the response as the `cursor` variable in the request. If `endCursor` is `null` then there are no more results to retrieve. ### Create an inline alert rule from J1QL This operation was formerly named `createQuestionRuleInstance`. That name is now deprecated, and you should update all usages. ```graphql mutation CreateInlineQuestionRuleInstance( $instance: CreateInlineQuestionRuleInstanceInput! ) { createInlineQuestionRuleInstance(instance: $instance) { id name description version pollingInterval question { queries { query version } } operations { when actions } outputs } } ``` **Variables**: ```json { "instance": { "name": "unencrypted-prod-data", "description": "Data stores in production tagged critical and unencrypted", "version": "v1", "pollingInterval": "ONE_DAY", "outputs": ["alertLevel"], "operations": [ { "when": { "type": "FILTER", "version": 1, "condition": [ "AND", ["queries.unencryptedCriticalData.total", "!=", 0] ] }, "actions": [ { "type": "SET_PROPERTY", "targetProperty": "alertLevel", "targetValue": "CRITICAL" }, { "type": "CREATE_ALERT" } ] } ], "question": { "queries": [ { "query": "Find DataStore with (production=true or tag.Production=true) and classification='critical' and encrypted!=true as d return d.tag.AccountName as Account, d.displayName as UnencryptedDataStores, d._type as Type, d.encrypted as Encrypted", "version": "v1", "name": "unencryptedCriticalData" } ] } } } ``` Note that the recommended interval for query based alert rules (aka a `question`) is `ONE_DAY`. \\ Supported intervals for enterprise customers are: `DISABLED`, `THIRTY_MINUTES`, `ONE_HOUR`, `FOUR_HOURS`, `EIGHT_HOURS`, `TWELVE_HOURS`, `ONE_DAY`, and `ONE_WEEK`. Free accounts only have access to the `ONE_WEEK` interval by default, but any upgrades to Compliance, Security, or Integrations will provide access to the `ONE_DAY` polling interval too. ### Update an inline alert rule This operation was formerly named `updateQuestionRuleInstance`. That name is now deprecated, and you should update all usages. ```graphql mutation UpdateInlineQuestionRuleInstance( $instance: UpdateInlineQuestionRuleInstanceInput! ) { updateInlineQuestionRuleInstance(instance: $instance) { id name description version pollingInterval question { queries { query version } } operations { when actions } outputs } } ``` **Variables**: ```json { "instance": { "id": "b1c0f75d-770d-432a-95f5-6f59b4239c72", "name": "unencrypted-prod-data", "description": "Data stores in production tagged critical and unencrypted", "version": "v1", "pollingInterval": "ONE_DAY", "outputs": ["alertLevel"], "operations": [ { "when": { "type": "FILTER", "version": 1, "condition": [ "AND", ["queries.unencryptedCriticalData.total", "!=", 0] ] }, "actions": [ { "type": "SET_PROPERTY", "targetProperty": "alertLevel", "targetValue": "CRITICAL" }, { "type": "CREATE_ALERT" } ] } ], "question": { "queries": [ { "query": "Find DataStore with (production=true or tag.Production=true) and classification='critical' and encrypted!=true as d return d.tag.AccountName as Account, d.displayName as UnencryptedDataStores, d._type as Type, d.encrypted as Encrypted", "version": "v1", "name": "unencryptedCriticalData" } ] } } } ``` Note that the only difference for `update` is the `"id"` property associated with the rule instance. You can modify all settings of a rule instance. ### Create an alert rule by referencing a saved question ```graphql mutation CreateReferencedQuestionRuleInstance( $instance: CreateReferencedQuestionRuleInstanceInput! ) { createReferencedQuestionRuleInstance(instance: $instance) { id name description version pollingInterval questionId questionName operations { when actions } outputs } } ``` **Variables**: ```json { "instance": { "name": "unencrypted-prod-data", "description": "Data stores in production tagged critical and unencrypted", "version": "v1", "pollingInterval": "ONE_DAY", "outputs": ["alertLevel"], "operations": [ { "when": { "type": "FILTER", "version": 1, "condition": [ "AND", ["queries.unencryptedCriticalData.total", "!=", 0] ] }, "actions": [ { "type": "SET_PROPERTY", "targetProperty": "alertLevel", "targetValue": "CRITICAL" }, { "type": "CREATE_ALERT" } ] } ], "questionId": "uuid-of-saved-question", "questionName": "name-of-saved-question" // either questionId or questionName must be specified } } ``` Note that you must specify either `questionName` or `questionId` in the `instance` for creation. If you specify both, they must refer to the same question. After the rule is saved, subsequent requests will return both `questionId` and `questionName`. ### Update an alert rule with a referenced question ```graphql mutation UpdateReferencedQuestionRuleInstance( $instance: UpdateReferencedQuestionRuleInstanceInput! ) { updateReferencedQuestionRuleInstance(instance: $instance) { id name description version pollingInterval questionId questionName operations { when actions } outputs } } ``` **Variables**: ```json { "instance": { "id": "b1c0f75d-770d-432a-95f5-6f59b4239c72", "name": "unencrypted-prod-data", "description": "Data stores in production tagged critical and unencrypted", "version": "v1", "pollingInterval": "ONE_DAY", "outputs": ["alertLevel"], "operations": [ { "when": { "type": "FILTER", "version": 1, "condition": [ "AND", ["queries.unencryptedCriticalData.total", "!=", 0] ] }, "actions": [ { "type": "SET_PROPERTY", "targetProperty": "alertLevel", "targetValue": "CRITICAL" }, { "type": "CREATE_ALERT" } ] } ], "questionId": "uuid-of-saved-question", "questionName": "name-of-saved-question" } } ``` Note that the only difference in `update` is the `"id"` property associated with the rule instance. You can modify any of the settings of a rule instance. Updates are not required to specify `questionId` or `questionName`, but you can specify either for `update`, and if you specify both they must refer to the same saved question. ### Delete an alert rule You can use this operation to delete any rule instance, regardless of whether it uses an inline question or a referenced question. ```graphql mutation DeleteRuleInstance($id: ID!) { deleteRuleInstance(id: $id) { id } } ``` **Variables**: ```json { "id": "b1c0f75d-770d-432a-95f5-6f59b4239c72" } ``` > **NOTE** > > Deleting an alert rule this way does **not** dismiss active alerts already triggered by this rule. It is recommended that you **Disable** the rule from the Rules page instead of deleting one. ### Trigger an alert rule on demand ```graphql mutation EvaluateRuleInstance($id: ID!) { evaluateRuleInstance(id: $id) { outputs { name value } } } ``` **Variables**: ```json { "id": "b1c0f75d-770d-432a-95f5-6f59b4239c72" } ``` ### Exemptions EARLY ACCESS An **exemption** excludes one entity from a rule's results, so it is left out of the totals the rule's condition is evaluated against and triggers none of the rule's actions. For what exemptions do and which rules can accept them, see [Exemptions](/features/insights-and-alerts/rule-exemptions.md). Exemptions are not managed by the JupiterOne Terraform provider. #### Check whether results can be exempted Ask this before offering an exempt action. Exemptability is a property of **the evaluation whose rows you hold**, not of the rule alone, so `evaluatedRuleVersion` is required: pass the stored result's `collectionOwnerVersion`, which is the rule version that produced those rows. ```graphql query RuleExemptionEligibility($ruleId: ID!, $evaluatedRuleVersion: Int!) { ruleExemptionEligibility( ruleId: $ruleId evaluatedRuleVersion: $evaluatedRuleVersion ) { eligible reason message ruleSupported evaluationSupported queriesMatch } } ``` **Variables**: ```json { "ruleId": "b1c0f75d-770d-432a-95f5-6f59b4239c72", "evaluatedRuleVersion": 14 } ``` | Field | Description | | --- | --- | | `eligible` | True only when the rule accepts exemptions **and** these results came from the queries it runs now. | | `reason` | An `ExemptionUnsupportedReason`. Null when eligible. | | `message` | Display-ready explanation, suitable for showing to a user as-is. Null when eligible. | | `ruleSupported` | Whether the rule's current queries can accept an exemption at all. | | `evaluationSupported` | Whether the queries that produced these results could be exempted. | | `queriesMatch` | Whether those are the same queries. Compared by query text, so renaming, retagging, or rescheduling a rule does not invalidate its results. For a rule that references a saved question, only the question id is compared. | `eligible: false` with `ruleSupported: false` means the rule can never accept exemptions in its current shape. `eligible: false` with `ruleSupported: true` and `queriesMatch: false` means the rule is fine but these particular results are stale—re-run the rule and exempt from the new results. `reason: NOT_AVAILABLE` means exemptions are not enabled for the account. Treat it as "the feature is absent" rather than as a refusal. #### Exempt entities from a rule's results One call files one decision: the justification, reason, and expiry are shared across every entity in the request, and every row written carries the returned `groupId`. ```graphql mutation CreateRuleExemptions($input: CreateRuleExemptionsInput!) { createRuleExemptions(input: $input) { groupId exemptions { ruleId entityId entityDisplayName justification reason expiresOn status createdBy createdOn } } } ``` **Variables**: ```json { "input": { "ruleId": "b1c0f75d-770d-432a-95f5-6f59b4239c72", "entities": [ { "entityId": "5f9d1e2c-8a3b-4c7d-9e1f-2a3b4c5d6e7f", "entityKey": "arn:aws:ec2:us-east-1:123456789012:instance/i-0abc123", "entityScope": "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f80", "entityType": "aws_instance", "entityDisplayName": "bastion-prod-1" } ], "justification": "Bastion host is managed outside this policy; risk accepted by the platform team.", "reason": "RISK_ACCEPTED", "expiresOn": 1798761600000 } } ``` | Input field | Description | | --- | --- | | `ruleId` | The rule the entities are exempted from. | | `entities` | Up to 100 entities per request, and a rule may hold at most 100 unexpired exemptions in total. Only `entityId` is matched when results are filtered; the other fields are stored as diagnostic detail and are worth supplying, because they are what makes an exemption identifiable after the entity is gone. | | `justification` | Required, and must not be empty. | | `reason` | `RISK_ACCEPTED`, `NOT_APPLICABLE`, `FALSE_POSITIVE`, or `COMPENSATING_CONTROL`. | | `expiresOn` | Optional. Epoch milliseconds, and must be in the future. Omit for an exemption that never expires. | `entityId` is the graph entity `_id`. Re-exempting an entity replaces its previous exemption rather than creating a second one, so it does not count again toward the rule's total. A rule may hold at most **100 unexpired exemptions**. A request that would take it past that is refused, and the error reports how many the rule already has and how many the request would add. Expired exemptions do not count toward the limit, so a rule that has cycled through short-lived exemptions does not run out of room with nothing actually exempt. The mutation is refused when the rule's current queries cannot accept exemptions, and the error carries the same `message` that `ruleExemptionEligibility` returns. That refusal is judged from the rule's current queries only—it cannot detect that the entity ids you supplied came from a superseded query, so check eligibility for the evaluation you chose them from first. Exemptions take effect on the rule's **next scheduled evaluation**. Nothing is re-evaluated when the mutation returns. #### Revoke exemptions Revoke by `groupId` (the whole decision), by `entityIds`, or by both, which revokes the intersection. At least one selector is required—revoking a rule's entire set in one call is not supported. ```graphql mutation RevokeRuleExemptions($ruleId: ID!, $groupId: ID, $entityIds: [ID!]) { revokeRuleExemptions( ruleId: $ruleId groupId: $groupId entityIds: $entityIds ) { revokedCount } } ``` **Variables**: ```json { "ruleId": "b1c0f75d-770d-432a-95f5-6f59b4239c72", "groupId": "9c8b7a65-4321-4fed-cba9-876543210fed" } ``` Revocation works regardless of whether the rule still accepts new exemptions, so a rule that has been edited into an unsupported shape can always have its exemptions cleared. Up to 100 entity ids per request. #### Read a rule's exemptions ```graphql query RuleExemptions($id: ID!, $limit: Int, $cursor: String) { questionRuleInstance(id: $id) { exemptions(limit: $limit, cursor: $cursor, includeExpired: true) { items { groupId entityId entityKey entityScope entityType entityDisplayName justification reason expiresOn status createdBy createdOn } pageInfo { endCursor hasNextPage } } } } ``` **Variables**: ```json { "id": "b1c0f75d-770d-432a-95f5-6f59b4239c72", "limit": 100 } ``` `includeExpired` defaults to true, so an expired exemption stays visible instead of disappearing. > **NOTE** > > When `includeExpired` is false, a page can come back with fewer items than `limit` while more still exist. Follow `endCursor` until `hasNextPage` is false rather than stopping on a short page. `status` is derived when you read it and is never stored: | Status | Meaning | | --- | --- | | `ACTIVE` | In effect. | | `EXPIRED` | Past its `expiresOn`. It no longer applies, but it is retained so that a rule that started alerting again is explainable. | | `ORPHANED` | The entity it covers no longer exists, so the exemption no longer applies to anything. See [the limitations](/features/insights-and-alerts/rule-exemptions.md#limitations-to-plan-around) for what causes this. | `createdBy` is the caller that filed the exemption: a user name, an email address, or `token:` for an API token. #### Download the included or exempted result set `ruleEvaluationQueryResultsCSV` takes a `resultSet` argument. `INCLUDED` (the default) is the entities the evaluation counted; `EXEMPTED` is the entities it held back. ```graphql query RuleEvaluationQueryResultsCSV( $rawDataKey: String! $resultSet: RuleEvaluationQueryResultSet ) { ruleEvaluationQueryResultsCSV(rawDataKey: $rawDataKey, resultSet: $resultSet) { csvKey status } } ``` **Variables**: ```json { "rawDataKey": "", "resultSet": "EXEMPTED" } ``` Both sets come from the one stored result object for that evaluation, so the exempted set reflects what that particular run held back. Revoking an exemption later does not rewrite it. #### Exemption reference `ExemptionReason`, supplied when creating an exemption: | Value | Shown in the product as | | --- | --- | | `RISK_ACCEPTED` | Risk accepted | | `NOT_APPLICABLE` | Not applicable | | `FALSE_POSITIVE` | False positive | | `COMPENSATING_CONTROL` | Compensating control | `ExemptionUnsupportedReason`, returned by `ruleExemptionEligibility` and carried by a refused `createRuleExemptions`. Render `message` rather than mapping these to your own wording, so what you show cannot drift from what the API enforces. | Value | What it means | | --- | --- | | `NOT_AVAILABLE` | Exemptions are not enabled for this account. Says nothing about the rule. | | `NO_QUERIES` | The rule has no query to exempt entities from. | | `QUESTION_UNAVAILABLE` | The rule's saved question could not be loaded. | | `QUERY_NOT_PARSEABLE` | The rule's query could not be read. | | `AGGREGATED_QUERY` | The query aggregates, so its rows are counts and summaries. | | `DISTINCT_QUERY` | The query uses `FIND UNIQUE`, so its rows are deduplicated values. | | `TREE_RESULTS` | The query returns a graph, so it has no result rows. | | `NO_RETURNED_ENTITIES` | The query's `RETURN` names only values, so its rows carry no entity identity. | | `QUERY_CHANGED_SINCE_EVALUATION` | The rule's query changed after this evaluation ran. Re-run the rule and exempt from its current results. | | `EVALUATED_VERSION_UNAVAILABLE` | The rule version that produced these results can no longer be read. | The first four groups describe the rule's own queries and are reported by `ruleSupported: false`. The last two describe the stored evaluation rather than the rule, and can only come from `ruleExemptionEligibility`. ## Rule definition reference A rule uses the results of one or more queries to execute one or more actions. You can author the rule body in the JupiterOne UI, or pass it directly into the [API operations](#api-operations) above. ### Configuring a rule 1. Navigate to the JupiterOne Rules page ([https://apps.us.jupiterone.io/rules](https://apps.us.jupiterone.io/rules)) 2. Click **New rule** 3. Click **Advanced editor (JSON)** to open the advanced rule editor. JSON Example: ```json { "name": "unencrypted-critical-data-stores", "description": "Unencrypted data store with classification label of 'critical' or 'sensitive' or 'confidential' or 'restricted'", "version": 1, "specVersion": 1, "pollingInterval": "ONE_DAY", "question": { "queries": [ { "name": "query0", "query": "Find DataStore with classification=('critical' or 'sensitive' or 'confidential' or 'restricted') and encrypted!=true", "version": "v1" } ] }, "operations": [ { "when": { "type": "FILTER", "condition": "{{queries.query0.total > 0}}" }, "actions": [ { "type": "CREATE_ALERT" } ] } ], "outputs": ["queries.query0.total", "alertLevel"] } ``` You can also configure rules to include deleted data in the results. For example: ```json // ... "question": { "queries": [ { "name": "query0", "query": "Find DataStore with classification='critical' and encrypted=false as d return d.tag.AccountName as Account, d.displayName as UnencryptedDataStores, d._type as Type, d.encrypted as Encrypted", "version": "v1", "includeDeleted": true }, { "name": "query1", "query": "...", "version": "v1", "includeDeleted": false }, { "name": "query2", "query": "...", "version": "v1" } ] }, // ... } ``` ### Rule properties | Property | Type | Description | | --- | --- | --- | | `id` | `string` | Auto-generated, globally unique ID of each rule. | | `version` | `number` | Current version of the rule. Incremented each time the rule is updated. | | `name` | `string` | Name of the rule, which is unique to each account. | | `description` | `string` | Optional description of the rule. | | `specVersion` | `number` | Rule evaluation version in the case of breaking changes. This should always be `1`. | | `pollingInterval` | `PollingInterval` | Optional frequency of automated rule evaluation. Defaults to `ONE_DAY`. | | `question` | `Question` | Contains properties related to queries used in the rule evaluation. | | `questionId` | `string` | A known unique ID for a question in the question library. | | `operations` | `RuleOperation[]` | Actions that are executed when a corresponding condition is met. | | `templates` | `object` | Optional key/value pairs of template name to template. | | `outputs` | `string[]` | Names of properties that can be used throughout the rule evaluation process and will be included in each record of a rule evaluation (for example, `queries.query0.total`). | | `notifyOnFailure` | `boolean` | Will send a notification to stakeholders (account admins, assigned users) if the rule query or any of its actions does not succeed. This property defaults to true if not provided when creating a rule. | | `triggerActionsOnNewEntitiesOnly` | `boolean` | Will only trigger actions to be run when entities that did not exist during the previous rule evaluation appear in the question results. This property defaults to true if not provided when creating a rule. | #### PollingInterval Enumeration of the scheduled frequencies on which rules will automatically be evaluated. Possible values are `DISABLED`, `THIRTY_MINUTES`, `ONE_HOUR`, `FOUR_HOURS`, `EIGHT_HOURS`, `TWELVE_HOURS`, `ONE_DAY`, and `ONE_WEEK`. ### Question and queries #### Question A `Question` contains a collection of named queries that should be executed during the rule evaluation process and whose responses can be used in any `RuleOperation`. | Property | Type | Description | | --- | --- | --- | | `queries` | `QuestionQuery[]` | The collection of queries that are used during the rule evaluation. | #### QuestionQuery A named query that should be executed during the rule evaluation process and whose responses can be used in any `RuleOperation`. | Property | Type | Description | | --- | --- | --- | | `name` | `string` | Optional name to assign the query that will be used when referencing query data in `RuleOperation`s. If not provided, the query name is automatically assigned based on the index in the `queries` array (for example, `query0`, `query1`). | | `query` | `string` | JupiterOne query to execute. | | `version` | `string` | JupiterOne query language execution version (for example, `v1`). | | `includeDeleted` | `boolean` | Whether deleted data should be considered for the specific query (defaults to `false`). | ### Operations A `RuleOperation` is a single `condition` and series of `action`s that are executed when the `condition` is met. | Property | Type | Description | | --- | --- | --- | | `when` | `RuleOperationCondition|RuleOperationCondition[]` | Type of conditional used to determine whether the associated actions should be executed. | | `actions` | `RuleOperationAction[]` | Actions that should be executed when the `when` conditions have been met. | #### RuleOperationCondition The condition that determines whether the associated actions should be executed. The type of `RuleOperationCondition` is determined using the `type` property. ##### FilterRuleOperationCondition | Property | Type | Description | | --- | --- | --- | | `type` | `string` | Rule operation condition type: `FILTER`. | | `condition` | `string` | Template condition (for example, `{{queries.query0.total > 0}}`). | ### Actions Action that is executed when a corresponding condition is met. The type of `RuleOperationAction` is determined using the `type` property. #### `SET_PROPERTY` > Includes a property that can be used in rule evaluation input. | Property | Type | Description | | --- | --- | --- | | `type` | `string` | Rule operation action type: \`SET\_PROPERTY. | | `targetProperty` | `string` | Property to include in the evaluation input. | | `targetValue` | \`number | string | Example: ```json { "type": "SET_PROPERTY", "targetProperty": "alertLevel", "targetValue": "CRITICAL" } ``` #### `CREATE_ALERT` > Creates a JupiterOne alert that is visible in J1 Alerts. | Property | Type | Description | | --- | --- | --- | | `type` | `string` | Rule operation action type: `CREATE_ALERT` | Example: ```json { "type": "CREATE_ALERT" } ``` #### `TAG_ENTITIES` > Adds queryable tag values to result entities. With a value of `null`, the tag will be removed. | Property | Type | Description | | --- | --- | --- | | `type` | `string` | Rule operation action type: `TAG_ENTITIES` . | | `entities` | `obj[]` | Array of result entities with J1 metadata. Generally a direct reference to a query result set, e.g. `{{queries.query0.data}}` | | `tags` | `obj[]` | Array of objects containing `name` and `value` properties specifying tags to add. The `value` can be any JSON primitive. | Note: > Depending on result count, tags may take up to 10 minutes after rule evaluation completes to be available for query. Example: ```json { "type": "TAG_ENTITIES", "entities": "{{queries.query0.data}}", "tags": [ { "name": "myTag", "value":"tag-value" } ] } ``` #### `SEND_EMAIL` > Sends an email to a list of recipients with details related to alerts that are created during the rule evaluation. | Property | Type | Description | | --- | --- | --- | | `type` | `string` | Rule operation action type: `SEND_EMAIL`. | | `recipients` | `string[]` | Email addresses of the recipients of this alert. | | `body` | `string` | Optional additional body information of the email. | Example: ```json { "type": "SEND_EMAIL", "body": "Number of items above threshold: {{queries.query0.total}}", "recipients": ["recipient@example.com"] } ``` #### `CREATE_JIRA_TICKET` > Creates a Jira ticket using a specific JupiterOne Jira integration configuration. | Property | Type | Description | | --- | --- | --- | | `type` | `string` | Rule operation action type: `CREATE_JIRA_TICKET.` | | `integrationInstanceId` | `string` | The `id` of the JupiterOne Jira integration that should be used to create the ticket. | | `entityClass` | `string` | The `class` of the new ticket entity that should be created in JupiterOne. (for example,`Vulnerability`) | | `project` | `string` | The unique Jira project ID that the ticket is created in. | | `summary` | `string` | Summary of the Jira ticket. Used as the ticket title. | | `issueType` | `string` | The Jira issue type (for example, `Task`). | | `additionalFields` | `object` | Optional additional fields that are passed directly to the Jira API. (see table below for details) | | `createOnlyFields` | `array` | Optional list of top-level `additionalFields` keys set when the ticket is created and never rewritten. Use it for computed values, such as a due date, that must not shift on later runs. (see [computed additional fields](#computed-additional-fields)) | | `updateContentOnChanges` | `boolean` | Optional (default `false`). When `true`, later runs update the ticket already created for this rule instead of creating a new one. | | `autoResolve` | `boolean` | Optional (default `false`). When `true`, the ticket created for this rule is transitioned to `resolvedStatus` once the query returns no matching results. | | `resolvedStatus` | `string` | The Jira status the ticket is transitioned to when `autoResolve` is `true` (for example, `Closed`). Required for auto-resolve to take effect. | > **Note**: By default (when both `updateContentOnChanges` and `autoResolve` are `false`) this action creates a **new** Jira ticket on every run that matches results. Set either flag to have JupiterOne reuse the ticket it already created for the rule instead of creating duplicates. ##### Jira description field The `description` field can have a raw string value or be passed as depicted in these examples as Jira [ADF](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/). **NOTE**: string in either the `text` or `description` keys supports markdown syntax. ##### Computed additional fields `additionalFields` values support the full [rule evaluation templating language](#rule-evaluation-templating-language), including [custom transforms](#custom-templating-transforms), at any depth. This is how a mandatory date field is filled relative to each ticket instead of being hardcoded to a date that was current when the rule was written: ```json { "type": "CREATE_JIRA_TICKET", "integrationInstanceId": "", "entityClass": "Vulnerability", "project": "81198", "summary": "Ticket summary", "issueType": "Task", "updateContentOnChanges": true, "additionalFields": { "custom_date": "{{ evaluationBeginOn | dateAdd(90, 'days') | formatDate('YYYY-MM-DD') }}" }, "createOnlyFields": ["custom_date"] } ``` `evaluationBeginOn` is the timestamp of the run that creates the ticket — see [evaluation reference variables](#evaluation-reference-variables) — and [`dateAdd`](#dateaddamount-number-unit-string) and [`formatDate`](#formatdateformat-string-timezone-string) shift and format it. Whenever `updateContentOnChanges` is `true`, list computed fields in `createOnlyFields`. That flag re-sends every `additionalFields` value to the existing ticket on each run, so a value derived from the evaluation time is rewritten every time: a due date 90 days out would move 90 days further out on every run and never come due. Naming the field in `createOnlyFields` fixes its value at the moment the ticket was created, while the description keeps updating. **`autoResolve` on its own needs `createOnlyFields` too.** With `updateContentOnChanges` off, the ticket is matched each run by a fingerprint that includes the rendered `additionalFields`. A computed value changes it every run, so the action stops recognizing the ticket it opened last time — leaving that one unresolved and opening another. Create-only fields are left out of the fingerprint. **Freezing every field stops updates.** With nothing left to send, no update is made — and the description is an `additionalFields` key, so freezing everything freezes it too. **Create-only values are never back-filled.** Adding a field to the list later does not write it to a ticket that already exists. > **Note**: with neither `updateContentOnChanges` nor `autoResolve` set, every matching run creates a **new** ticket (see the note above), and each of those tickets gets a date computed from its own run. If you want a single ticket whose date is fixed when it is created, set `updateContentOnChanges` and name the field in `createOnlyFields`. ##### Other / custom additional fields Fields passed into `additionalFields` will be passed directly to the Jira API and as such should match the required input format of each field type. This table outlines some of the common field types and their value formats. Please use the [Official Jira Rest API](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-fields/) for more information. | Field Type Label | Schema Type | Input Format | Example | | --- | --- | --- | --- | | Text | textfield | String value | `"Value of Field"` | | Number | number | Number value | `2` | | Date | date | `YYYY-MM-DD` string | `"2026-10-30"` | | DateTime | datetime | ISO 8601 string with numeric offset | `"2026-10-30T00:00:00.000+0000"` | | Select | select | Object with value key | `{ "value": "Select Option Label"}` | | MultiSelect | multiselect | Array of string values | `["Option 1", "Option 2"]` | | MultiCheckBoxes | multicheckboxes | Array of Objects with value keys | `[{ "value": "Option 1" }, { "value": "Option 2"}]` | | UserPicker | userpicker | Object with accountId | `{ "accountId": "userInternalId" }` | | MultiUserPicker | multiuserpicker | Array of Objects with accountId keys | `[{ "accountId": "user1InternalId" }, { "accountId": "user2InternalId"}]` | Example: ```json { "type": "CREATE_JIRA_TICKET", "integrationInstanceId": "", "entityClass": "Vulnerability", "project": "81198", "summary": "Ticket summary", "issueType": "Task", "additionalFields": { "custom_text": "field_value", "custom_number": 2, "custom_select": { "value": "Select Option Label" }, "custom_multi_select": ["Option 1", "Option 2"], "custom_multi_checkboxes": [ { "value": "Option 1" }, { "value": "Option 2" } ], "custom_user_picker": { "accountId": "usersInternalId" }, "custom_multi_user_picker": [ { "accountId": "user1InternalId" }, { "accountId": "user2InternalId" } ], "description": { "type": "doc", "version": 1, "content": [ { "type": "paragraph", "content": [ { "type": "text", "text": "Jira description here! **Full Markdown Supported Text**" } ] } ] } } } ``` #### `FOR_EACH_ITEM` > Runs a set of actions for each item in a list. This list can be query results, or a composed list of items. | Property | Type | Description | | --- | --- | --- | | `type` | `string` | Rule operation action type: `FOR_EACH_ITEM`. | | `itemRef` | `string` | Optional name of the item reference to use in the templates. Defaults to `item` | | `items` | `string` | The list of items to iterate over. Can be a template (see example). | | `actions` | `array` | The actions to run for each item. | Examples: ```json // will call POST https://example.com with the body { "name": "John Doe", "webLink": "https://apps..jupiterone.io/asset/reference/link" } // for each user in the query results, e.g. `Find User` { "type": "FOR_EACH_ITEM", "itemRef": "user", "items": "{{queries.query0.data}}", "actions": [ { "type": "WEBHOOK", "method": "POST", "url": "https://example.com", "body": { "name": "{{user.properties.name}}", "webLink": "{{user.properties.webLink}}" }, } ] } ``` > **NOTE** > > NOTE: If your query includes traversals and a `RETURN` statement (i.e. `Find User that USES Device as d RETURN d.name`), you must alias the returned properties to use them inside the body of the action. **Updated query:** `Find User that USES Device as d RETURN d.name as deviceName` ```json { "type": "FOR_EACH_ITEM", "itemRef": "device", "items": "{{queries.query0.data}}", "actions": [ { "type": "WEBHOOK", "method": "POST", "url": "https://example.com", "body": { "name": "{{device.deviceName}}" } } ] } ``` #### `JUPITERONE_QUERY` > Runs a JupiterOne query and stores the results on the `queries` template parameter with a given `name`. It is recommended that you only use this action within a `FOR_EACH_ITEM` action. Including it in normal `operations` actions is not recommended, as you can retrieve results you want with the normal `question` queries. | Property | Type | Description | | --- | --- | --- | | `type` | `string` | Rule operation action type: `JUPITERONE_QUERY`. | | `query` | `string` | The JupiterOne query to run. | | `name` | `string` | The name of the query result to store. | Example: ```json // { "type": "FOR_EACH_ITEM", "itemRef": "user", "items": "{{queries.query0.data}}", "actions": [ // JUPITERONE_QUERY actions always run first in order to enable the use of the results in the templates // of other actions in a FOR_EACH_ITEM action { "type": "JUPITERONE_QUERY", "query": "Find Account with email='{{user.properties.email}}'", "name": "accountsOwnedByUserQuery" }, { "type": "WEBHOOK", "method": "POST", "url": "https://example.com", "body": { "name": "{{user.properties.displayName}}", "accounts": "{{queries.accountsOwnedByUserQuery.data | mapProperty('displayName')}}" } } ] } ``` #### `SEND_SLACK_MESSAGE` > Sends a Slack message to a given Slack webhook URL. | Property | Type | Description | | --- | --- | --- | | `integrationInstanceId` | `string` | The `id` of the JupiterOne Jira integration used to create the ticket. | | `type` | `string` | Rule operation action type: `SEND_SLACK_MESSAGE`. | | `channels` | `string` | A string or list of strings beginning with a `#` to denote Slack channels to send to. | | `webhookUrl` | `string` | Webhook URL for the account/channel that this message should be delivered to. | | `severity` | `string` | Optional severity of this alert that determined the color of the message shown in Slack. | **NOTE**: By default, the color of the alert in Slack is derived from the value of the `alertLevel` that is created in a `SET_PROPERTY` action. You can override the color of the alert using the `severity` property. Example: After you have configured the integration, copy the integration ID from the integration instance page, which looks similar to `d1549f40-b9fd-447a-bec5-4360c9ca7e8c`. Configure a rule with the `SEND_SLACK_MESSAGE` action and specify the `integrationInstanceId` with the unique identifier of the integration and `channels` denoting the destinations. The following is an example alert rule configuration with the `SEND_SLACK_MESSAGE` action: **NOTE**: For the JupiterOne Slack bot to deliver messages to a private Slack channel, the JupiterOne Slack bot must be a member of that private channel. ```json { "id": "83136d41-23d0-415c-8726-84363d5a8a30", "name": "acm-cert-expiry", "description": null, "version": 1, "specVersion": 1, "notifyOnFailure": null, "triggerActionsOnNewEntitiesOnly": null, "pollingInterval": "ONE_DAY", "templates": {}, "outputs": [ "alertLevel" ], "question": { "queries": [ { "query": "Find aws_acm_certificate with inUse = true and expiresOn > date.now and expiresOn < date.now + 30days", "name": "query0", "version": "v1", "includeDeleted": false } ] }, "questionId": null, "operations": [ { "when": { "type": "FILTER", "specVersion": 1, "condition": [ "AND", [ "queries.query0.total", ">", 0 ] ] }, "actions": [ { "targetValue": "CRITICAL", "id": "e1d40781-831f-43bf-b813-b28b6f2218ef", "type": "SET_PROPERTY", "targetProperty": "alertLevel" }, { "type": "CREATE_ALERT", "id": "a3a32646-db5c-4c18-89be-c02798cd84c4" }, { "integrationInstanceId": "8d677b84-c32e-45d3-9b46-902912a00304", "id": "c1a3a9bc-7c4f-4eba-afff-528f9cbd2ff1", "type": "SEND_SLACK_MESSAGE", "body": "*Affected Items:* \n\n- {{queries.query0.data|mapProperty('displayName')|join('\n- ')}}", "channels": [] } ] } ], "state": null, "tags": [] } ``` #### `WEBHOOK` > Sends an HTTP request to a given endpoint. | Property | Type | Description | | --- | --- | --- | | `type` | `string` | Rule operation action type: `WEBHOOK` | | `endpoint` | `string` | Webhook endpoint to send the request to. | | `method` | `string` | HTTP method to use when making the request Allowed values: `POST`, `PUT`, `GET`, `HEAD`, `PATCH`, `DELETE`. | | `body` | `object` | Optional body data to include in the request. Can only be used with `POST`, `PUT`, and `PATCH`. | | `headers` | `object` | Optional HTTP headers to include in the request. | ##### Webhook reference variables You can reference the following variables via a template pattern (such as _{{alertLevel}}_) inside the webhook action: | Property | Type | Description | | --- | --- | --- | | `alertLevel` | `string` | Level of severity of the rule. | | `alertRuleName` | `string` | Name of the alert rule. | | `alertRuleId` | `string` | Identifier for the alert in the J1 platform. | | `alertRuleDescription` | `string` | Description saved in the rule. | Example: ```json { "type": "WEBHOOK", "method": "POST", "body": { "myApiPayload": " {{alertLevel}} alert has been triggered: {{alertRuleName}} " }, "headers": { "Authorization": "Bearer abc123" } } ``` ##### Tines trigger If you opt to use a Tines alert action when you create a rule, J1 creates a webhook with the Tines URL you provided and pushes the data to that endpoint. You can use any of the [Tines APIs](https://www.tines.com/api/actions/create) to configure the webhook action. #### `PUBLISH_SNS_MESSAGE` > Publishes a message to the specified SNS topic. | Property | Type | Description | | --- | --- | --- | | `type` | `string` | Rule operation action type: `PUBLISH_SNS_MESSAGE`. | | `integrationInstanceId` | `string` | The ID of the AWS integration instance to use. The integration role must have `sns:Publish` permission. | | `topicArn` | `string` | The ARN of the SNS topic to publish the message to. | | `data` | `object` | User-provided data to include in the message. See [Operation Templating](#operation-templating) for details on using variable data. | Example: ```json { "type": "PUBLISH_SNS_MESSAGE", "integrationInstanceId": "", "topicArn": "arn:aws:sns::arn:aws:sns::", "data": { "query0Data": "{{queries.query0.data}}", "anotherCustomProperty": true } } ``` ```text !!! Note: ``` `data` is stringified in the payload. For example: ```js { Sns: { Message: '{"data":{"query0Data": ..., "anotherCustomProperty": true}}'; } } ``` #### `SEND_SQS_MESSAGE` > Publishes a message to the specified SQS queue. | Property | Type | Description | | --- | --- | --- | | `type` | `string` | Rule operation action type: `SEND_SQS_MESSAGE`. | | `integrationInstanceId` | `string` | The ID of the AWS integration instance to use. The integration role must have `sqs:SendMessage` permission. | | `queueUrl` | `string` | The URL of the SQS queue to publish the message to. | | `data` | `object` | User-provided data to include in the message. See [Operation Templating](#operation-templating) for details on using variable data. | Example: ```json { "type": "SEND_SQS_MESSAGE", "integrationInstanceId": "", "queueUrl": "https://sqs..amazonaws.com//", "data": { "query0Data": "{{queries.query0.data}}", "anotherCustomProperty": true } } ``` !!! warning `data` is stringified in the payload. For example: ```js { body: '{"data":{"query0Data": ..., "anotherCustomProperty": true}}'; } ``` #### `SEND_TO_S3` > Uploads data to an AWS S3 bucket. | Property | Type | Description | | --- | --- | --- | | `type` | `string` | Rule operation action type: `SEND_TO_S3`. | | `integrationInstanceId` | `string` | The ID of the AWS integration instance to use. The integration role must have `s3:PutObject` permission. | | `bucket` | `string` | The name of the bucket to upload the data to. | | `region` | `string` | The region in which the S3 bucket is located. | | `data` | `object` | User-provided data to include in the message. See [Operation Templating](#operation-templating) for details on using variable data. | **NOTE**: The data will be a `json` file with a filename of `${ruleId}_${evaluationTimestampMilliseconds}.json`. This may look like `83136d41-23d0-415c-8726-84363d5a8a30_1631619200000.json`. Example: ```json { "type": "SEND_TO_S3", "integrationInstanceId": "", "bucket": "s3-bucket-name", "region": "us-east-1", "data": { "description": "**Affected Items:**\n\n* {{queries.query0.data|mapProperty('displayName')|join('\n* ')}}" } } ``` ### Patterns #### Multiple queries in a single rule You can pass multiple queries into an alert rule that allows each query to output its results into the same, single alert. > Note the `when` condition in the example below will invoke actions if either query returns results. This example shows multiple queries sending out an email alert to multiple recipients: ```json { "name": "Multiple Queries in a Rule", "description": "", "version": 1, "specVersion": 1, "pollingInterval": "ONE_WEEK", "templates": { "tempMap": "Project: {{item.Project}}, ProjectFindings: {{item.ProjectFindings}}, RepoFindings: {{item.RepoFindings}}" }, "outputs": [ "alertLevel" ], "question": { "queries": [ { "name": "query0", "query": "Find CodeRepo THAT RELATES TO Project with repoName!=undefined as p THAT HAS Finding as f RETURN p.repoName as Project, count(f) as ProjectFindings", "version": "v1", "includeDeleted": false }, { "name": "query1", "query": "Find Project with repoName!=undefined THAT RELATES TO CodeRepo as p THAT HAS Finding as f RETURN p.displayName as Project, count(f) as RepoFindings", "version": "v1", "includeDeleted": false } ] }, "operations": [ { "when": { "type": "FILTER", "specVersion": 1, "condition": [ "OR", [ "queries.query0.total", ">", 0 ], [ "queries.query1.total", ">", 0 ] ] }, "actions": [ { "targetValue": "INFO", "type": "SET_PROPERTY", "targetProperty": "alertLevel" }, { "type": "CREATE_ALERT" }, { "type": "SEND_EMAIL", "body": "Affected Items:

* {{ queries.query0.data | mapTemplate('tempMap') | join('
* ') }} /
* {{ queries.query1.data | mapTemplate('tempMap') | join('
* ') }}", "recipients": [ "person1@example.com", "person2@example.com", "person3@example.com" ] } ] } ], "tags": [] } ``` This example shows multiple queries sending results to Jira to create a single Jira issue: ```json { "name": "Multiple Queries in a Rule to Jira Example", "description": "Multiple queries can be composed into a Jira Alert", "version": 1, "specVersion": 1, "pollingInterval": "ONE_DAY", "templates": { "projectInfo": "Project: {{item.Project}}, ProjectFindings: {{item.ProjectFindings}}, RepoFindings: {{item.RepoFindings}}" }, "outputs": [ "alertLevel" ], "question": { "queries": [ { "name": "query0", "query": "Find CodeRepo THAT RELATES TO Project with repoName!=undefined as p THAT HAS Finding as f RETURN p.repoName as Project, count(f) as ProjectFindings", "version": "v1", "includeDeleted": false }, { "name": "query1", "query": "Find Project with repoName!=undefined THAT RELATES TO CodeRepo as p THAT HAS Finding as f RETURN p.displayName as Project, count(f) as RepoFindings", "version": "v1", "includeDeleted": false } ] }, "operations": [ { "when": { "type": "FILTER", "specVersion": 1, "condition": [ "OR", [ "queries.query0.total", ">", 0 ], [ "queries.query1.total", ">", 0 ] ] }, "actions": [ { "targetValue": "INFO", "type": "SET_PROPERTY", "targetProperty": "alertLevel" }, { "type": "CREATE_ALERT" }, { "summary": ": {{queries.query0.total}}", "issueType": "Task", "entityClass": "Finding", "integrationInstanceId": "", "additionalFields": { "description": { "type": "doc", "version": 1, "content": [ { "type": "paragraph", "content": [ { "type": "text", "text": "{{alertWebLink}}\n\n**Affected Items:**\n\n* {{ queries.query0.data | mapTemplate('projectInfo') | join('\n* ') }} \n\n***************\n\n {{ queries.query1.data | mapTemplate('projectInfo') | join('\n* ') }}" } ] } ] } }, "project": "CT", "type": "CREATE_JIRA_TICKET" } ] } ], "tags": [] } ``` #### One Jira ticket per query result with `FOR_EACH_ITEM` If your query returns multiple results, you can run a second query using the results of the first query to create a Jira ticket for each item in the first query results. You do this by [editing the advanced JSON of the alert rule](#configuring-a-rule) to use the `FOR_EACH_ITEM` action type. It is not recommended that you use this action type if your results sizes are very large. This example limits the number of possible Jira tickets created to a maximum of 100, and sends an email when the limit is exceeded. Additionally, the "Test" and "Preview" buttons will not include query data in them at this time. > **NOTE** > > For accessing values within result iterations: > > Properties referenced by `{{obj.properties.displayName}}` > > Tags referenced by `{{obj.properties['tag.AccountName']}}` > > Metadata values referenced by `{{obj.entity._type}}` For example: ```json { "name": "Unencrypted critical data stores", "description": "", "specVersion": 1, "pollingInterval": "ONE_WEEK", "question": { "queries": [ { "name": "query0", "query": "Find DataStore with classification='critical' and encrypted=false", "version": "v1", "includeDeleted": false } ] }, "operations": [ { "when": { "type": "FILTER", "specVersion": 1, "condition": ["AND", ["queries.query0.total", ">", 0], ["queries.query0.total", "<=", 100]] }, "actions": [ { "type": "SET_PROPERTY", "targetValue": "CRITICAL", "targetProperty": "alertLevel" }, { "type": "CREATE_ALERT" }, { "itemRef": "obj", "type": "FOR_EACH_ITEM", "items": "{{queries.query0.data}}", "actions": [ { "type": "CREATE_JIRA_TICKET", "summary": "{{alertRuleDescription}}", "issueType": "", "entityClass": "{{ obj.entity._type | join(',') }}", "integrationInstanceId": "{{ obj.entity._integrationInstanceId }}", "additionalFields": { "description": { "type": "doc", "version": 1, "content": [ { "type": "paragraph", "content": [ { "type": "text", "text": "{{alertWebLink}}\n\n**Affected Items:**\n\n* {{obj.properties.webLink}}" } ] } ] } }, "project": "{{param.MySpecialProject}}" } ] } ] }, { "when": { "type": "FILTER", "specVersion": 1, "condition": ["queries.query0.total", ">", 100] }, "actions": [ { "type": "SET_PROPERTY", "targetValue": "CRITICAL", "targetProperty": "alertLevel" }, { "type": "CREATE_ALERT" }, { "type": "SEND_EMAIL", "body": "The alert rule {{alertRuleName}} has {{queries.query0.total}} results. Please review the results in the JupiterOne app: {{alertWebLink}}.", "recipients": ["emergency@example.com"] } ] } ], "outputs": ["alertLevel"], "templates": {} } ``` ### Operation templating You can use templates inside any property under the `operations` property on a rule. The templates can contain a JavaScript-like syntax that automatically have input variables injected for usage. For example, `FilterRuleOperationCondition`s are often used with rules as the condition for whether rule actions should be executed. You can use query response data inside of the rule conditions: ```js { "operations": [ { "when": { "type": "FILTER", // Use the `.total` property from query named `query0`. "condition": "{{queries.query0.total > 0}}" }, "actions": [ { "type": "CREATE_ALERT" } ] } ] } ``` You can use data from query results inside of rule operations by referencing the `query.query0.data` property and custom templating transforms. For example: ```js { "name": "lambda-function-settings-check-runtime-nodejs610", "description": "Node.js 6.10 is end of life (EOL) and should no longer be used.", "specVersion": 1, "pollingInterval": "ONE_DAY", "templates": { // The email template that we will use later "emailBody": "({{itemIndex+1}} of {{itemCount}}) [{{item.account}}] Function Name: {{item.functionName}}
" }, "question": { "queries": [ { "name": "query0", "query": "Find aws_lambda_function with runtime='nodejs6.10' as f return f.name as functionName, f.version as version, f.tag.AccountName as account, f.tag.Project as project order by account", "version": "v1" } ] }, "operations": [ { "when": { "type": "FILTER", "specVersion": 1, "condition": "{{queries.query0.total > 0}}" }, "actions": [ { "targetValue": "HIGH", "type": "SET_PROPERTY", "targetProperty": "alertLevel" }, { "type": "CREATE_ALERT" }, { "type": "SEND_EMAIL", // Reference the `query0` data and include it in a template "body": "Affected Functions:

{{ queries.query0.data | mapTemplate('emailBody') | join(' ') }}", "recipients": ["person1@example.com"] } ] } ], "outputs": ["queries.query0.total", "alertLevel"] } ``` ### Rule evaluation templating language You can create a template in any `RuleOperation` using the `{{...}}` syntax. Inside the `{{...}}` is a JavaScript-like language that allows for powerful rule evaluation functionality. Additionally, if the template contains exactly one expression and nothing else, the original type of the computed value is preserved. If multiple expressions are used, the entire value is casted to a string. The following is an example where the type `boolean` is preserved because there is only a single expression: ```text {{true}} ``` The following is an example where the entire value would be cast to a string because it contains multiple expressions: ```text {{age + 10}} is my age and my name is {{firstName + " " + lastName}} ``` All templating expressions support references to [account parameters](#parameters-in-rules): ```text My name is {{param.myFirstName}} and I am {{age}} ``` #### Query reference variables Every query the rule ran is on the `queries` object under its own name, carrying both the rows the rule counted and the rows an exemption held back: | Variable | Type | Description | | --- | --- | --- | | `queries..data` | `object[]` | The rows the query returned, after any [exemptions](/features/insights-and-alerts/rule-exemptions.md) are removed. | | `queries..total` | `number` | How many rows `data` holds. | | `queries..exemptions` | `object[]` | The rows this query matched that an exemption withheld, shaped like the rows in `data`. | | `queries..exemptionsTotal` | `number` | How many rows an exemption withheld. | `` is the query's own `name` from `question.queries`, so a rule whose query is named `query0` references `queries.query0.data`. Both exemption variables are **absent rather than empty** on a rule with nothing exempt, and an absent variable does not render as blank. Anywhere it sits inside surrounding text, it renders the literal word `undefined`: ```text Held back by an exemption: {{queries.query0.exemptionsTotal}} ``` renders as `Held back by an exemption: undefined`. An expression on its own, with no surrounding text, instead evaluates to `undefined` itself, under the same single-expression rule that preserves a computed value's type. Append `|| 0` for a count that always renders a number: ```text Held back by an exemption: {{queries.query0.exemptionsTotal || 0}} ``` renders as `Held back by an exemption: 0`. A list needs no such guard: [`mapProperty`](#mappropertyproperties-string) returns an empty array when its input is not an array, and joining an empty array gives an empty string, so the line renders empty: ```text {{queries.query0.exemptions|mapProperty('displayName')|join(', ')}} ``` #### Evaluation reference variables Alongside query data and account parameters, every operation template can reference the following: | Variable | Type | Description | | --- | --- | --- | | `evaluationBeginOn` | `number` | Unix timestamp in milliseconds for when the evaluation started. Pair it with [`dateAdd`](#dateaddamount-number-unit-string) and [`formatDate`](#formatdateformat-string-timezone-string) to compute a date relative to the run. | | `alertRuleId` | `string` | Identifier of the rule being evaluated. | | `alertRuleName` | `string` | Name of the rule being evaluated. | | `alertRuleDescription` | `string` | Description saved on the rule. | | `alertWebLink` | `string` | Link to the alert raised by this evaluation. Only present when the rule raises one. | #### Unary operators | Operation | Symbol | | --- | --- | | Negate | `!` | #### Binary operators | Operation | Symbol | | ---------------- | :----: | --- | --- | | Add, Concat | `+` | | Subtract | `-` | | Multiply | `*` | | Divide | `/` | | Divide and floor | `//` | | Modulus | `%` | | Power of | `^` | | Logical AND | `&&` | | Logical OR | `| |` | #### Comparisons | Comparison | Symbol | | --- | --- | | Equal | `==` | | Not equal | `!=` | | Greater than | `>` | | Greater than or equal | `>=` | | Less than | `<` | | Less than or equal | `<=` | | Element in array or string | `in` | #### Ternary operator | Expression | Result | | --- | --- | | `"" ? "Full" : "Empty"` | Empty | | `"foo" in "foobar" ? "Yes" : "No"` | Yes | | `{agent: "Archer"}.agent ?: "Kane"` | Archer | #### Native types | Type | Examples | | --- | --- | | Booleans | `true`, `false` | | Strings | `"Hello \"user\""`, `'Hey there!'` | | Numerics | `6`, `-7.2`, `5`, `-3.14159` | | Objects | `{hello: "world!"}` | | Arrays | `['hello', 'world!']` | #### Groups Grouping operations with parentheses: | Expression | Result | | --- | --- | | `(83 + 1) / 2` | 42 | | \`1 < 3 && (4 > 2 | | ### Custom templating transforms Some custom transforms are exposed in the rule templating language. These are functions that perform actions on an input, and can be chained together to accomplish some powerful actions. #### `mapTemplate(templateName: string)` `mapTemplate` is separates and reuses templates inside of a rule. The transform expects a single array and the first argument should be a string whose value matches a template in rule `templates` object. The `mapTemplate` transform exposes additional input variable to the template: | Property | Type | Description | | --- | --- | --- | | `item` | `any` | The individual item of this iteration. | | `itemCount` | `number` | The total count of items in the array. | | `itemIndex` | `number` | The index of the current `item` in the array | !!! note The properties that are accessible on the `item` property are pulled from the `properties` object and the `entity` object if the `item` matches the schema for an entity. Example operation: ```json { "type": "SEND_EMAIL", // Reference the `query0` data and include it in a template "body": "{{ queries.query0.data | mapTemplate('emailBody') | join(' ') }}", "recipients": ["person1@example.com"] } ``` Example `templates`: ```json { "emailBody": "({{itemIndex+1}} of {{itemCount}}) [{{item.account}}] Function Name: {{item.somePropertyOnItem}}
" } ``` #### `mapProperty(...properties: string)` Allows for mapping individual properties from an array. You can supply a single or multiple properties. The properties that are accessible are pulled from the `properties` object and the `entity` object if the `item` matches the schema for an entity. If the array that is being evaluated with `mapProperty` matches the schema of an entity, the rule evaluator attempts to pull properties passed to `mapProperty` from the entity properties. Example query data: ```json { "query": "FIND Person", "data": [ { "id": "", "entity": { "_createdOn": 1234 // ... }, "properties": { "firstName": "Jon" // ... } }, { "id": "", "entity": { "_createdOn": 12345 // ... }, "properties": { "firstName": "Jane" // ... } } ] } ``` This is an example of accessing `properties` data using `mapProperty` and the above data: ```json { "type": "SEND_EMAIL", // This would return: `Jon,Jane` "body": "{{ queries.query0.data | mapProperty('firstName') | join}}", "recipients": ["person1@example.com"] } ``` This is an example accessing `entity` data using `mapProperty` and the above data: ```json { "type": "SEND_EMAIL", // This would return: `1234,12345` "body": "{{ queries.query0.data | mapProperty('_createdOn') | join}}", "recipients": ["person1@example.com"] } ``` #### `merge(...data: array)` Allows for merging 1 or more arrays together to create a new array of the combined results. This transform does not perform any deduplication; all elements of the input arrays are present in the output. This is usually used to combine the results of two or more J1QL queries into a common set of query results. Example query configuration: ```json { "queries": [ { "query": "Find User with name ~=\"first.last\" as a RETURN a.displayName as DisplayName", "name": "query0", "version": "v1", "includeDeleted": false }, { "query": "Find User with name ~=\"firstLast\" as b RETURN b.displayName as DisplayName", "name": "query1", "version": "v1", "includeDeleted": false } ] } ``` This is an example of merging the results of these two queries together, and getting the number of deduplicated total results. ```json { "type": "SEND_EMAIL", "body": "Total Query Results: {{ queries.query0.data | merge(queries.query1.data) | uniquePropertyValues('displayName') | length}}", "recipients": ["person1@example.com"] } ``` #### `join(separator?: string)` This function is similar to the `Array.prototype.join` function in JavaScript. It returns a new string by concatenating all of the elements in an array. If the `separator`argument is not passed to `join`, the array elements are separated by a comma, by default. This transform is often used with `mapTemplate` or `mapProperty`. Example: ```json { "type": "SEND_EMAIL", "body": "{{ queries.query0.data | mapTemplate('emailBody') | join(' ') }}", "recipients": ["person1@example.com"] } ``` Example of default if no `separator` is passed to `join`: ```json { "type": "SEND_EMAIL", "body": "{{ queries.query0.data | mapTemplate('emailBody') | join }}", "recipients": ["person1@example.com"] } ``` #### `uniquePropertyValues(propertyName: string)` Creates a set of unique values for the given property name. The transform will pull all properties from the `entity` and `properties` sub-properties to the top level to try to access the passed in `propertyName`. Example query data: ```json { "query": "FIND Person", "data": [ { "id": "1", "entity": { "_createdOn": 1234 // ... }, "properties": { "firstName": "Jon" // ... } }, { "id": "2", "entity": { "_createdOn": 12345 // ... }, "properties": { "firstName": "Jane" // ... } }, { "id": "3", "entity": { "_createdOn": 5555 // ... }, "properties": { "firstName": "Jon" // ... } }, ] } ``` This is an example of accessing deduplicating a property of an array of entities: ```json { "type": "SEND_EMAIL", // This would return: ["Jon","Jane"] "body": "{{ queries.query0.data | uniquePropertyValues('firstName') }}", "recipients": ["person1@example.com"] } ``` #### `length` Returns the number of items in an array. This transform takes no arguments, and the templating language does not accept empty parentheses — write `| length`, not `| length()`. Example: ```json { "type": "SEND_EMAIL", "body": "{{ queries.query0.data | length }} people were found.", "recipients": ["person1@example.com"] } ``` `length` is most useful at the end of a chain, to count what the transforms before it produced: ```json { "type": "SEND_EMAIL", // The number of distinct first names across both queries "body": "Unique names: {{ queries.query0.data | merge(queries.query1.data) | uniquePropertyValues('firstName') | length }}", "recipients": ["person1@example.com"] } ``` If the value piped into `length` is not an array — because a transform earlier in the chain produced no value, for example — `length` returns `0` rather than failing the render. #### `capitalize` Upper-cases the first character of a string and leaves the rest of it as it is. This transform takes no arguments, and, as with `length`, the templating language does not accept empty parentheses — write `| capitalize`, not `| capitalize()`. Because only the first character changes, `capitalize` is for making a lower-case value read as a sentence rather than for normalizing casing throughout a value: `high` becomes `High`, `high severity` becomes `High severity`, and `HIGH` is unchanged. This transform is often used inside a `mapTemplate` template, where each `item` property is a single value: ```json { "type": "SEND_EMAIL", "body": "{{ queries.query0.data | mapTemplate('findingLine') | join(' ') }}", "recipients": ["person1@example.com"] } ``` Example `templates`: ```json { "findingLine": "{{item.displayName}} — {{item.severity | capitalize}} severity
" } ``` Any value that is not a string, including an array, passes through `capitalize` unchanged. #### `dateAdd(amount: number, unit?: string)` Shifts a timestamp by a calendar amount and returns an ISO 8601 string. The input may be Unix milliseconds, Unix milliseconds inside a string, or an ISO 8601 string, so it works with `evaluationBeginOn` as well as with date properties read from query data. `amount` is required and may be negative to shift backwards. `unit` defaults to `days` and accepts `hours`, `days`, `weeks`, `months` and `years`, singular or plural. These are calendar units — weekends and holidays are not skipped. Because the result is ISO 8601, it can be piped into `formatDate` to produce whatever format the destination field wants — most often `YYYY-MM-DD` for a Jira Date field: ```js // evaluationBeginOn = 1785542400000, which is 2026-08-01T00:00:00.000Z {{ evaluationBeginOn | dateAdd(90, 'days') }} // 2026-10-30T00:00:00.000Z {{ evaluationBeginOn | dateAdd(-30, 'days') }} // 2026-07-02T00:00:00.000Z {{ evaluationBeginOn | dateAdd(3, 'months') }} // 2026-11-01T00:00:00.000Z ``` If the input is missing or is not a date, the transform produces no value and the field is left out of the request rather than being sent as an invalid date. #### `formatDate(format?: string, timeZone?: string)` Formats a timestamp, accepting the same inputs as `dateAdd`. Jira has two distinct date field types, and they want different formats — see [other / custom additional fields](#other--custom-additional-fields): - A **Date** field (schema type `date`) wants `YYYY-MM-DD`. This is `format`'s default, so `formatDate` with no arguments produces it. - A **DateTime** field (schema type `datetime`) wants ISO 8601 with a numeric offset, which is `YYYY-MM-DDTHH:mm:ss.SSSZZ`. Format tokens follow [Day.js](https://day.js.org/docs/en/display/format). `timeZone` defaults to `UTC` and accepts an IANA time zone name. Rule evaluations run on a schedule with no user in context, so there is no time zone to infer — pass one explicitly if a UTC date is not what you want. Note that this changes which calendar day you get, not just the clock time. ```js // evaluationBeginOn = 1785542400000, which is 2026-08-01T00:00:00.000Z {{ evaluationBeginOn | formatDate('YYYY-MM-DD') }} // 2026-08-01 — for a Date field {{ evaluationBeginOn | formatDate('YYYY-MM-DDTHH:mm:ss.SSSZZ') }} // 2026-08-01T00:00:00.000+0000 — for a DateTime field {{ evaluationBeginOn | formatDate('YYYY-MM-DD', 'America/New_York') }} // 2026-07-31 — still the previous day in New York ``` As with `dateAdd`, a missing or non-date input produces no value. #### `queryDataDifference(renderDataProperty: string)` Returns the items that one query found and another did not — the set difference between two sets of query results. Use it to report what is new since an earlier run, or which items a broad query found that a narrower one did not. Unlike the other transforms, `queryDataDifference` operates on an array of two arrays, so the value piped into it has to be written as an array literal. No single path in the render data produces this shape: ```js {{ [queries.query0.data, queries.query1.data] | queryDataDifference('newItems') }} ``` The first list is subtracted from the second, so the example above returns the items in `query1` that are not in `query0`. Items are matched on `_id`, falling back to `_key` when the results carry no `_id`. Either key is read from the top level of an item or from its `entity` sub-object, so both raw and entity-shaped query data work. Which of the two keys is used is decided once, from the first item of the first non-empty list, and is then applied to every item — so both queries need to return the same shape of data. An item that carries none of these keys fails the render with `"_id" or "_key" is required`. The `renderDataProperty` argument is required. Alongside returning the difference, the transform stores it in the render data under that name, so the rest of the rule can reference the same result without repeating the transform: ```json { "type": "SEND_EMAIL", "body": "{{ [queries.query0.data, queries.query1.data] | queryDataDifference('newFindings') | length }} new findings: {{ newFindings | mapProperty('displayName') | join(', ') }}", "recipients": ["person1@example.com"] } ``` #### Common templating examples Filling a mandatory Jira Date field with a deadline relative to the run that creates the ticket ```js // In your rule action's additionalFields {{ evaluationBeginOn | dateAdd(90, 'days') | formatDate('YYYY-MM-DD') }} // Will display something like: // 2026-10-30 // For a DateTime field instead, ask for that format: {{ evaluationBeginOn | dateAdd(90, 'days') | formatDate('YYYY-MM-DDTHH:mm:ss.SSSZZ') }} // 2026-10-30T00:00:00.000+0000 ``` Merging multiple query results to generate a unique set of values for a given property printed on a new line ```js {{ queries.query0.data | merge(queries.query1.data) | uniquePropertyValues('firstName') | join('\n') }} // Will display something like: // // firstName1 // firstName2 // ... ``` Using a template to display multiple properties from a set of query results ```js // In the templates definition { "myTemplateName": "Property1: {{item.propertyName1}} - Property2: {{item.propertyName2}}" } // In your rule action {{ queries.query0.data | mapProperty('propertyName1', 'propertyName2') | mapTemplate('myTemplateName') | join('\n') }} // Will display something like: // Property1: value1 - Property2 - value2 // Property1: value3 - Property2 - value4 // ... ``` Filtering a set of query results to a specific name and using a template for extra propoerties ```js // In the templates definition { "myTemplateName": "Property1: {{item.name}} - Property2: {{item.id}}" } // In your rule action {{ queries.query0.data[.name == 'repository1'] | mapProperty('name', 'id') | mapTemplate('myTemplateName') | join('\n') }} // Will display something like: // repository1 - anIdForEntity1 // repository1 - anIdForEntity2 // repository1 - anIdForEntity3 // ... ``` ### Filtering collections Collections, or arrays of objects, can be filtered by including a filter expression in brackets. Properties of each collection can be referenced by prefixing them with a leading dot. The result will be an array of the objects for which the filter expression resulted in a truthy value. Example context: ```js { employees: [ {first: 'Sterling', last: 'Archer', age: 36}, {first: 'Malory', last: 'Archer', age: 75}, {first: 'Lana', last: 'Kane', age: 33}, {first: 'Cyril', last: 'Figgis', age: 45}, {first: 'Cheryl', last: 'Tunt', age: 28} ], retireAge: 62 } ``` | Expression | Result | | --- | --- | | `employees[.first == 'Sterling']` | `[{first: 'Sterling', last: 'Archer', age: 36}]` | | `employees[.last == 'Tu' + 'nt'].first` | `Cheryl` | | `employees[.age >= 30 && .age < 40]` | `[{first: 'Sterling', last: 'Archer', age: 36},{first: 'Lana', last: 'Kane', age: 33}]` | | `employees[.age >= 30 && .age < 40][.age < 35]` | `[{first: 'Lana', last: 'Kane', age: 33}]` | | `employees[.age >= retireAge].first` | `Malory` | ### Parameters in rules Rules support reference to parameter values stored at the account-level. These parameters simplify the task of referencing long, sensitive, or widely reused values in rules or queries. For example, the following action trigger is nearly identical to [the slack webhook](#send_slack_message) example: ```json { "type": "WEBHOOK", "method": "POST", "body": { "name": "Jon" }, "headers": { "Authorization": "Bearer {{param.SlackAuthToken}}" } } ``` This showcases a primary use case of parameter storage: a value that is long, not human-readable, and may represent a sensitive value which should not be leaked in the configuration. `param.SlackAuthToken` invokes a parameter stored at the account level, which is referenced when the rule is evaluated. These parameters are always referenced with the preceding token `param.`. The subsequent string (without special characters) identifies the name of a parameter. Parameters are supported anywhere that [Operation Templating](#operation-templating) is supported, and the value of a parameter can be any type of [native type](#native-types) with the **exclusion of objects**, which support comparison _against_ parameters but cannot be the contents of a parameter. Additionally, parameters can store lists of native types, and template expressions can invoke parameter lists similarly to examples above. For example, [using the email example](#send_email), we can parameterize the recipient list: ```json { "type": "SEND_EMAIL", "body": "{{ queries.query0.data | mapTemplate('emailBody') | join(' ') }}", // a stored list of email strings: "recipients": "{{param.alertEmailRecipientList}}" } ``` For more info on JupiterOne parameters, [reference the documentation](/features/admin/parameters.md). --- Source: /api/authentication # Authentication The JupiterOne APIs use a Bearer Token for authentication. Include the API key in the header as a Bearer Token. You also need to include `JupiterOne-Account` as a header parameter. You can find the `Jupiterone-Account` value in your account settings by going to [https://apps.us.jupiterone.io/settings/account-management](https://apps.us.jupiterone.io/settings/account-management) and finding your Account ID. ## API Keys API keys enable users to use the J1 APIs in queries and with integrations. You can enable the use of API keys for a group of users and create API keys for your organization account. This can be done both through our GraphQL public API and the JupiterOne dashboard. ## Create API Keys Using the GraphQL API You can use GraphQL queries to create account-level API keys. **To create an account-level API key**, enter: ```text POST `https://graphql.us.jupiterone.io/` ``` ```graphql mutation CreateToken($token: TokenInput!) { createToken(token: $token) { token id name category policy revoked createdAt expiresAt __typename } } ``` Response ```json { "variables": { "token": { "name": "Token Name", "category": "tags", "policy": "{\n\t\"permissions\": [{\n\t\t\"effect\":\"ALLOW\",\n\t\t\"actions\":[\"dashboard:View\" ],\n\t\t\"resources\": [ \"dashboard:123456\" ]\n\t}]\n}" } } } ``` > **NOTE** > > Wildcards are not supported for account-level API tokens. The `policy` variable is a JSON object formatted as follows: ```json { "permissions": [ { "effect": "ALLOW", "actions": ["dashboard:View"], "resources": ["dashboard:123456"] } ] } ``` The effect parameter is ether `ALLOW` or `DENY` and is case-sensitive. Currently, JupiterOne only supports fully-qualified actions and resources or the wildcard `*`. **Supported actions include:** ```text "compliance:GetStandard", "compliance:GetSummary", "dashboard:View", "persister:GetEntityRawData", "persister:Synchronize", "query:GetAccountEntity", "query:ReadGraphData", "settings:GetSettings", "parameters:GetParameter", "parameters:GetParameterList", "parameters:SetParameter", "parameters:DeleteParameter" "*" // All actions ``` **Supported resources include:** ```text "account:", "api:", "compliance-standard:", "dashboard:", "entity:", "integration:", "powerup:", "settings-category:", "parameter:" "*" // All resources ``` The action `query:ReadGraphData` may be constrained by a condition. For the policy to allow access to a graph object, that graph object must have the properties specified in the condition and those properties must have the values specified in the condition. These J1QL Query Policies must include `effect: "ALLOW"`; `actions: ["ReadGraphData"]` (or `actions: ["*"]`); and `resources: ["*"]`. In addition, their `conditions` block must contain an object of the `stringEquals` comparison. For example, this policy only allows its user to query for graph objects that have the property `_type` equal to `github_repo`: ```json { "permissions": [ { "effect": "ALLOW", "actions": ["query:ReadGraphData"], "resources": ["*"], "condition": { "stringEquals": { "_type": "github_repo" } } } ] } ``` ### Revoke Account-Level API Keys To revoke an account-level key, enter: ```text POST `https://graphql.us.jupiterone.io/` ``` ```graphql mutation RevokeToken($id: String!) { revokeToken(id: $id) { token id name category policy revoked createdAt expiresAt __typename } } ``` Response ```json { "variables": { "id": "" } } ``` ## Creating API Keys within the dashboard In addition to creating API keys via our GraphQL API, they can be created within the dashboard as outlined below. > **NOTE** > > You must have the Administrator permission to enable API key access. ### Enable User-Level API Key Access Before creating Account-level API keys, it will be necessary to to enable API key access for a group of users: 1. Go to **Settings > Users & Access**. 2. Select the group for whom you want to enable API access. 3. Select **API Key Management**. An API key icon appears in the My Profile view for each user in the group that has API key access. #### Create Account-Level API Keys You can manage user-level keys in the Account Management page. You must have administrator permissions to make changes to account-level API keys. To generate a new API key or manage existing API keys: 1. Log in to the account you want to manage. 2. Go to **Settings > Account Management**. 3. In the left panel, click the **key icon**. ​ 4. In the User API Keys page, click **Add**. 5. In the API Keys modal, enter the name of the key and the number of days before it expires, and click **Create**. To revoke an API key, in the User API Keys page, go to the key you want to revoke and click the **trash icon**. #### API Key Permissions Policy You must set a permission policy in JSON for account-level API keys, similar to an IAM policy in AWS. The following is an example of a full control policy: ```json { "permissions": [ { "effect": "ALLOW", "actions": [ "*" ], "resources": [ "*" ] } ] } ``` J1 supports the creation of `*` policies that permit all actions or resources: ```json { "permissions": [ { "effect": "ALLOW", "actions": [ "*" ], "resources": [ "*" ] } ] } ``` ```json { "permissions": [ { "effect": "ALLOW", "actions": [ "query:ReadGraphData" ], "resources": [ "*" ] } ] } ``` ```json { "permissions": [ { "effect": "ALLOW", "actions": [ "*" ], "resources": [ "*" ] }, { "effect": "DENY", /// Deny only ReadGraphData "actions": [ "query:ReadGraphData" ], "resources": [ "*" ] } ] } ``` ## Create Integration API Keys Integration API keys can only be used to synchronize data within a particular integration's scope and cannot be used to read the graph or perform any other action in the system. This can be useful for local development and running the integration in your own infrastructure. You must have administrator permissions to be able to create keys and the selected integration must have at least one configuration. To create an Integration API key: 1. From the top navigation of the J1 Search homepage, select **Integrations**. 2. Select the integration and then the instance for which you want to create an API key. 3. Select the **API Keys** tab and then click **New API Key**. 4. When prompted, click **Create** again to confirm your action. The key is now available for you to use to synchronize data in this integrations. To delete the API key at any time, click **Revoke**. --- Source: /api/entity-mutations # Entity mutations ### Create Entity This mutation creates a JupiterOne entity with the given specifications. This mutation requires three parameters (with two optional parameters): - `entityKey`: A string that gives the key value for the entity so that this entity can be referenced later. - `entityType`: A string that gives the type of the entity being created. - `entityClass`: A string that gives the class of the entity being created. - Optional Parameters - `timestamp`: - `properties`: A `JSON` list that gives specific properties that the entity will have. ```graphql mutation CreateEntity ( $entityKey: String! $entityType: String! $entityClass: [String!]! $timestamp: Long $properties: JSON ) { createEntity ( entityKey: $entityKey, entityType: $entityType, entityClass: $entityClass, timestamp: $timestamp, properties: $properties ) { entity { _id ... } vertex { id, entity { _id ... } properties } } } ``` **Variables**: ```json { "entityKey": "", "entityType": "", "entityClass": "", "timestamp": 1529329792552, "properties": { // Custom properties on the Entity ... } } ``` ### Creating entities and a relationship between them > The following mutations utilize a J1Client. ```graphql const CREATE_ENTITY = gql` mutation createEntity ( $entityKey: String! $entityType: String! $entityClass: [String!]! $timestamp: Long $properties: JSON ) { createEntity( entityKey: $entityKey entityType: $entityType entityClass: $entityClass properties: $properties ) { . . . }`; const CREATE_RELATIONSHIP = gql` mutation CreateRelationship ( $relationshipKey: String! $relationshipType: String! $relationshipClass: String! $fromEntityId: String! $toEntityId: String! ) { createRelationship ( relationshipKey: $relationshipKey relationshipType: $relationshipType relationshipClass: $relationshipClass fromEntityId: $fromEntityId toEntityId: $toEntityId ) { . . . }`; const entity1 = await j1Client.mutate({ mutation: CREATE_ENTITY, variable: { entityKey: 'Example Key', entityType: 'ExampleType', entityClass: 'ExampleClass', properties: { 'tag.key': 'tagvalue' } } }); const entity2 = await j1Client.mutate({ mutation CREATE_ENTITY, variable: { entityKey: 'Other Example Key', entityType: 'OtherType', entityClass: 'OtherClass', properties: { 'tag.key': 'tag' } } }); const relationship = await j1Client.mutate({ mutation: CREATE_RELATIONSHIP, variable: { relationshipKey: entity1._key + ' |uses| ' + entity2._key, relationshipClass: 'entity_uses_entity', relationshipType: 'USES', toEntityId: entity2._id, toEntityKey: entity1._id, } }); ``` ### Updating Entity This mutation updates an already existing entity (does not create an entity). You cannot change the `entityKey`, `entityClass`, or `entityType`. This mutation requires one parameter (with two optional parameters): - `entityId`: A string specific to the entity that finds the entity. - Optional Parameters: - `timestamp`: - `properties`: A `JSON` list of properties to be changed. ```graphql mutation UpdateEntity ( $entityId: String! $timestamp: Long $properties: JSON ) { updateEntity ( entityId: $entityId, timestamp: $timestamp, properties: $properties ) { entity { _id ... } vertex { id, entity { _id ... } properties } } } ``` **Variables**: ```json { "entityId": "", "timestamp": 1529329792552, "properties": { // Custom properties to get updated ... } } ``` #### Property persistence Properties set with `updateEntity` **persist across future syncs of the source integration**. If you set `criticality = "tier-1"` on a GitHub repository entity, the value remains on the entity after every subsequent GitHub integration sync — you do not need to re-apply it. If the integration's own data later asserts a different value for the same property, your `updateEntity` value continues to win until you explicitly clear it. This makes `updateEntity` the right tool for one-off persistent edits on entities owned by a managed integration — for example, tagging a single repository with a criticality tier or pinning a custom unification key on two specific hosts. #### When to use `updateEntity` vs sync modes | You want to… | Use | | --- | --- | | Set a property on **one entity** (or a handful, scripted one at a time) and have it survive every future integration sync. | `updateEntity` | | Set a property on **a batch of up to 10,000 entities** under a stable scope, managed together, and have those values survive every future integration sync. | [`OVERRIDE`](/api/sync-jobs/override.md) sync mode | | Refresh a property frequently on managed-integration entities, and you accept that each integration sync resets the value. | [`PATCH`](/api/sync-jobs/patch.md) sync mode | | Add or remove entities and relationships in a dataset you fully own. | [`DIFF`](/api/sync-jobs/diff.md) sync mode | If both an `OVERRIDE` sync job and an `updateEntity` mutation set the same property on the same entity, the value that **most recently changed** takes precedence. See [OVERRIDE vs the entity mutation API](/api/sync-jobs/override.md#override-vs-the-entity-mutation-api) for details. Alert rule tags also take precedence. If an alert rule tags a property, `updateEntity` does not change that property on the entity: the request still succeeds and your value is recorded, but the rule's value stays in effect until no rule tags that property. This is evaluated per property, so the other properties in the same request are applied normally. ### Deleting Entity This mutation deletes an existing entity. This mutation requires one parameter (with one optional parameter): - `entityId`: A string specific to the entity that finds the entity. - Optional Parameters: - `timestamp` - `hardDelete` - this flag completely removes all information related to the entity and is not recoverable. ```graphql mutation DeleteEntity ( $entityId: String! $timestamp: Long ) { deleteEntity ( entityId: $entityId, timestamp: $timestamp, ) { entity { _id ... } vertex { id, entity { _id ... } properties } } } ``` **Variables**: ```json { "entityId": "", "timestamp": 1529329792552 } ``` --- Source: /api/entity-raw-data # Entity raw data Raw data is the unmodified payload a source system returned to an integration for an entity. Use the `entityRawDataV2` GraphQL query to retrieve the raw data for a single entity. `entityRawDataV2` replaces `entityRawDataLegacy`, which is deprecated. See [Migrate from entityRawDataLegacy](#migrate-from-entityrawdatalegacy). ## Prerequisites - An API key and your account ID. See [Authentication](/api/authentication.md). - A user or API key with permission to read graph data, such as **Read Graph Data**. Send requests to the JupiterOne GraphQL endpoint, `https://graphql.us.jupiterone.io/`, with the `Authorization: Bearer ` and `JupiterOne-Account: ` headers. The query reads only from the account in the `JupiterOne-Account` header. ## Query ```graphql query EntityRawData($entityId: ID!, $address: EntityIngestionAddress!) { entityRawDataV2(entityId: $entityId, address: $address) { entityId status message collectedAt payload { name contentType data } } } ``` ### Arguments | Argument | Type | Description | | --- | --- | --- | | `entityId` | `ID!` | The entity's `_id`. The response echoes this value back. | | `address` | `EntityIngestionAddress!` | Where the entity was ingested from. JupiterOne uses the address to find the payload. | `EntityIngestionAddress` has four required fields. Each field is a metadata property on the entity: | Field | Type | Entity property | | --- | --- | --- | | `source` | `String!` | `_source`, for example `integration-managed` | | `integrationInstanceId` | `String!` | `_integrationInstanceId` | | `entityKey` | `String!` | `_key` | | `entityType` | `String!` | `_type` | `entityType` is required because `_key` is unique only within a `_type`. ### Get the address values If you already have the entity, read the address values from its properties. Otherwise, return them with a J1QL query: ```j1ql FIND aws_instance RETURN aws_instance._id, aws_instance._source, aws_instance._integrationInstanceId, aws_instance._key, aws_instance._type ``` **Example variables:** ```json { "entityId": "", "address": { "source": "integration-managed", "integrationInstanceId": "", "entityKey": "", "entityType": "aws_instance" } } ``` ## Response | Field | Type | Description | | --- | --- | --- | | `entityId` | `ID!` | The `entityId` you passed in. | | `status` | `RawDataStatus!` | `AVAILABLE` or `NOT_AVAILABLE_OR_EXPIRED`. | | `payload` | `[RawDataEntry!]!` | The raw data entries. Empty unless `status` is `AVAILABLE`. | | `message` | `String` | A human-readable explanation. Set only when `status` is `NOT_AVAILABLE_OR_EXPIRED`. | | `collectedAt` | `String` | ISO 8601 start time of the sync job the payload came from. Set only when `status` is `AVAILABLE`. | Each `RawDataEntry` has these fields: | Field | Type | Description | | --- | --- | --- | | `name` | `String!` | The name the integration gave the raw data entry. An entity can have more than one entry. | | `contentType` | `String!` | The content type of `data`, for example `application/json`. | | `data` | `JSON` | The payload as the source system returned it. | **Example response:** ```json { "data": { "entityRawDataV2": { "entityId": "", "status": "AVAILABLE", "message": null, "collectedAt": "2026-10-21T14:02:11.000Z", "payload": [ { "name": "default", "contentType": "application/json", "data": { "InstanceId": "i-0abc123def4567890", "State": { "Name": "running" } } } ] } } } ``` ## When raw data is not available When there is no raw data for an entity, the query returns `status: NOT_AVAILABLE_OR_EXPIRED`, an empty `payload`, and a `message`. It does not return an error. Check `status` before you read `payload`. Raw data is retained for **7 days** from the sync job that uploaded it, and comes from the integration's most recent run. Raw data is not available in these cases: - The integration has not run in more than 7 days, for example because it is disabled. - The entity was not included in the integration's most recent run. - The entity was not created by an integration. This includes entities created through the [Sync API](/api/sync-jobs/overview.md) (`_source: api`) and entities JupiterOne creates. - The integration did not upload raw data for the entity. The entity and its properties are unaffected in every case. See [What's new in Asset Data](/features/assets/whats-new-in-asset-data.md#raw-data-covers-your-recent-syncs) for more detail. > **INFO** > > Raw data is a record of what a source system sent, not a store of record. If you need a durable copy of a source payload, export it or retain it at the source. ## Retrieve raw data in bulk `entityRawDataV2` returns one entity per request. To retrieve raw data for many entities: 1. Run a J1QL query that returns `_id`, `_source`, `_integrationInstanceId`, `_key`, and `_type` for the entities you need. See [Entity and relationship queries](/api/entity-relationship-queries.md). 2. Call `entityRawDataV2` once for each entity, using the values from step 1. Because you supply the address, JupiterOne does not have to look it up, so `entityRawDataV2` is faster per entity than `entityRawDataLegacy`. Requests count toward your [rate limits](/api/rate-limiting.md). ## Migrate from entityRawDataLegacy > **WARNING** > > `entityRawDataLegacy` is deprecated. It continues to return raw data, but new and updated code should use `entityRawDataV2`. `entityRawDataLegacy` takes only the entity ID. JupiterOne must look up where the entity was ingested from before it can fetch the raw data, which makes each request slower than `entityRawDataV2`. Both queries return the same raw data and follow the same 7-day retention. To migrate: 1. Add `_source`, `_integrationInstanceId`, `_key`, and `_type` to the J1QL queries that return the entities you fetch raw data for. 2. Replace the `entityRawDataLegacy` call with `entityRawDataV2`, and pass those values in `address`. 3. Replace the union fragments in your selection set with plain fields. `entityRawDataLegacy` returns `payload` as a union of `RawDataJSONEntityLegacy` and `RawDataTextEntityLegacy`. `entityRawDataV2` returns a list of `RawDataEntry` objects. 4. Check `status` instead of checking for an empty `payload`. **Before:** ```graphql query EntityRawData($entityId: String!, $source: String!) { entityRawDataLegacy(entityId: $entityId, source: $source) { entityId payload { ... on RawDataJSONEntityLegacy { name contentType data } ... on RawDataTextEntityLegacy { name contentType data } } } } ``` **After:** ```graphql query EntityRawData($entityId: ID!, $address: EntityIngestionAddress!) { entityRawDataV2(entityId: $entityId, address: $address) { entityId status message collectedAt payload { name contentType data } } } ``` > **NOTE** > > The `fetch_entity_raw_data` method in the [Python client](/api/python-client.md) uses `entityRawDataLegacy`. ## Related topics - [Authentication](/api/authentication.md) - [Entity and relationship queries](/api/entity-relationship-queries.md) - [Rate limiting](/api/rate-limiting.md) - [What's new in Asset Data](/features/assets/whats-new-in-asset-data.md) - [Working with properties](/features/assets/working-with-properties.md) --- Source: /api/entity-relationship-queries # Entity and relationship queries This query will allow you to run J1QL queries for fetching data. The GraphQL resolver requires that one parameter is provided: - `query`: A J1QL query string that describes what data to return Optionally, additional parameters can be provided: - `variables`: A `JSON` map of values to be used as parameters for the query - `cursor`: A token that can be exchanged to fetch the next page of information. - `includeDeleted`: When set to `true`, recently deleted information will be included in the results. - `deferredResponse`: This option allows for a deferred response to be returned. When a deferred response is returned, a `url` pointing the state of the query is provided. API consumers should poll the status of the deferred query by requesting the given `url` until the `status` property of the returned JSON document has a value of `COMPLETED` (see example below). Upon completion of the query, the `url` will provide a link to the query results. The results contain the same `type`, `data`, and `cursor` fields that the non-deferred GraphQL response would contain. Allowed values are `DISABLED` and `FORCE`. - `flags`: - `computedProperties`: When set to `true`, vertices will be tagged with additional information to indicate if there are noteworthy traits that are worth surfacing. - `rowMetadata`: When set to `true`, table results will return metadata about the requested objects under a `_meta` property. - `variableResultSize`: When set to `true` the API will return the largest result size possible. Without this flag, the result size will be limited to 250 rows. This flag is recommended for use in cases where a larger result size is preferable and an indeterminate/variable number of return results is acceptable. - `scopeFilters`: An array of `JSON` map of filters that define the desired vertex. They have precedence over filters supplied in the query. When working with additional variables, keep in mind some of the following considerations: - `variableResultSize` can increase the rate of your pagination flow because the API will return the largest number of rows possible per request. The exact number of rows returned will not always be the same, but will be larger than the default -- hence the name, _variable_ result size. - When paging through data, it is _highly_ recommended that cursors are leveraged instead of adding `limit` and `skip` clauses to queries. - Be sure to include `cursor` in the GraphQL response if you need to paginate through the results. The returned `cursor` will be `null` if there are no more pages available. - Queries that may take longer than 30 seconds should use the `FORCE` option for `deferredResponse` to avoid request timeouts. You should only use the `DISABLED` option when testing a simple query. It is _highly_ recommended that all automated processes use the the `FORCE` option when issuing J1QL queries. **Example GraphQL query:** ```graphql query J1QL($query: String!, $variables: JSON, $cursor: String, $scopeFilters: [JSON!], $flags: QueryV1Flags) { queryV1(query: $query, variables: $variables, cursor: $cursor, scopeFilters: $scopeFilters, flags: $flags) { type data cursor } } ``` **Example variables:** ```json { "query": "find Person with _type=${type} return Person.name", "variables": { "type": "employee" }, "cursor": "eyJjYWNoZUtleSI6IjFlNDg3MT...", "scopeFilters": [ { "org": "engineering" } ], "flags": { "computedProperties": true } } ``` **Example `queryV1` resolver result:** ```json { "type": "table", "data": [{ "Person.name": "Mochi" }], "cursor": "eyJjYWNoZUtleSI6IjFlNDg3MT..." } ``` **Example GraphQL query with deferred responses:** ```graphql query J1QL( $query: String! $variables: JSON $cursor: String $deferredResponse: DeferredResponseOption ) { queryV1( query: $query variables: $variables deferredResponse: $deferredResponse cursor: $cursor ) { type url } } ``` **Example variables:** ```json { "query": "find Person with _type=${type}", "deferredResponse": "FORCE", "variables": { "type": "employee" }, "cursor": "eyJjYWNoZUtleSI6IjFlNDg3MT..." } ``` **Example `queryV1` resolver result when using a deferred response:** ```json { "type": "deferred", "url": "https://example.com/state.json" } ``` **Example state responses:** ```json { "status": "IN_PROGRESS", "correlationId": "912788f1-e0c7-43bd-b853-455c0031be8a" } ``` ```json { "status": "COMPLETED", "url": "https://example.com/results.json", "correlationId": "912788f1-e0c7-43bd-b853-455c0031be8a" } ``` ### Retrieving a Single Vertex by ID This query fetches a vertex and its properties by its ID. The query requires one of two parameters: - `id`: The ID as a string - `filters`: A set of filters that define the desired vertex. The example below contains all of the currently available filters. > **NOTE** > > Only one of the variables (`id` or `filters`) is required. Specifying both is allowed but unnecessary unless you want to assert that a vertex with the specified `id` exists _and_ has specific entity properties. ```graphql query VertexQuery($id: String!, $filters: VertexFilters) { vertex(id: $id, filters: $filters) { id entity { _id _key _type _accountId _integrationName _integrationDefinitionId _integrationInstanceId _version _createdOn _beginOn _endOn _deleted displayName } properties } } ``` **Variables**: ```json { "id": "", "filters": { "_id": "", "_key": "", "_type": [""], "_class": [""] } } ``` ### Fetching Neighbors of a Vertex The `Vertex` type allows you to retrieve vertex and edge neighbors up to a certain depth using the `neighbors` field. The return type of the `neighbors` resolver is the same as that of a graph query. This query requires two parameters: - `id`: The ID of the vertex as a string - `depth`: An integer specifying how many "levels" deep the query will go to look for neighbors. ```graphql query VertexQuery($id: String!, $depth: Int) { vertex(id: $id) { id entity { displayName } neighbors(depth: $depth) { vertices { id entity { displayName } } edges { id relationship { displayName } } } } } ``` **Variables**: The depth that is supplied must be a value between 1 and 5 (inclusive). ```json { "id": "", "depth": 5 } ``` ### Retrieving an Edge by ID This query allows you to fetch an edge, its properties, and the relationship it describes by its ID or label and filters. The query requires one or two of three parameters: - `id`: The ID as a string. - `label`: The label displayed on the edge. - `filters`: A set of filters that define the desired vertex. Only one of the variables (`id`, `label`, or `filters`) is required. Specifying `label` and `filters` with `id` is allowed but somewhat redundant unless you want to assert that a vertex with the specified `id` exists _and_ has the specific label and properties. The example below contains all of the currently available filters. ```graphql query VertexQuery($id: String!) { edge(id: $id, label: $id, filters: $id) { id relationship { _id _key _type _accountId _integrationName _integrationDefinitionId _integrationInstanceId _version _createdOn _beginOn _endOn _deleted _fromEntityKey _toEntityKey displayName } properties } } ``` **Variables**: ```json { "id": "", "label": "", "filters": { "_id": "", "_key": "", "_type": "", "_class": "" } } ``` ### Fetching the Count of Entities Via a \_type and/or \_class This query allows you to fetch the count of entities. The `_id`, `_key`, `_type`, or `_class` fields can be supplied as filters. This query only counts the latest versions of entities matching the filter criteria. This query requires two parameters: - `filters`: A set of vertex filters that describe the entities that are to be returned. - `filterType`: A `FilterType` (`AND` or `OR`). If `OR` is specified as the filter type, any entity that has any class in the filter will be included in the count. By default, the query uses `AND`, which only includes entities that have _all_ of the specified classes in the count. This resolver uses the `JSON` scalar as the return type: ```graphql query testQuery($filters: VertexFilters, $filterType: FilterType) { entityCount(filters: $filters, filterType: $filterType) } ``` Use field aliases to request the counts of multiple different entities: ```graphql query testQuery { Users: entityCount(filters: { _class: ["User"] }, filterType: "AND") Repos: entityCount(filters: { _class: ["CodeRepo"] }, filterType: "OR") } ``` **Example result**: ```json { "User": 40, "CodeRepo": 153 } ``` ### Fetching the Count of All Types and Classes This query returns the entity counts for all types and classes. The following resolver uses the `JSON` scalar as the return type: ```graphql query testQuery { allEntityCounts } ``` **Example result**: ```json { "typeCounts": { "iam_user": 12, "iam_managed_policy": 10, "iam_role_policy": 10 }, "classCounts": { "User": 12, "AccessPolicy": 20 } } ``` ### Fetching the Count of All Types With a Set of Classes The query below returns all types that have the specified classes. The query requires two parameters: - `classes`: An array of strings detailing which classes should be returned. - `filterType`: A `FilterType` (`AND` or `OR`). If `OR` is specified as the filter type, any entity that has any class in the filter will be included in the count. By default, the query uses `AND`, which only includes entities that have _all_ of the specified classes in the count. This resolver uses the `JSON` scalar as the return type: ```graphql query testQuery ($classes: [String], $filterType: FilterType) { typeCounts (classes: $classes, filterType: $filterType) } ``` **Example result**: ```json { "iam_user": 12, "iam_managed_policy": 10, "iam_role_policy": 10 } ``` ### Listing Entities Via a \_type and/or \_class For fetching entities with specified filters. The `_id`, `_key`, `_type` and `_class` fields can be included in a J1QL query request. This query has a deferred response flow and needs to be completed in three parts. --- Source: /api/iam-operations # IAM API > **NOTE** > > `accessAdmin` permission is required for all IAM operations. **Endpoint:** ```text POST https://graphql.us.jupiterone.io/ ``` **Headers:** ```plain Content-Type: application/json Accept: application/json JupiterOne-Account: {Account_ID} Authorization: Bearer {API_Key} ``` ### Get IAM groups **Query: iamGroups** Retrieves all account `groups` within the query limit. - `limit`: (required) max number of records to return - `cursor`: (optional) continuation token ```graphql query Query($limit: Int!, $cursor: String) { iamGroups(limit: $limit, cursor: $cursor) { items { id name description } pageInfo { endCursor hasNextPage } } } ``` **API Samples** Sample (S1): `iamGroups` (S1): Request ```json { "limit": 5 } ``` (S1): Response ```json { "data": { "iamGroups": { "items": [ { "id": "12c2d370-89ef-4280-970b-d520ca1837be", "name": "Users", "description": "" }, { "id": "dd354c7a-1b9b-4579-ac5e-873fe3b2c851", "name": "Administrators", "description": "Admin users" } ], "pageInfo": { "endCursor": "eyJhY2NvdW50I...", "hasNextPage": true } } } } ``` ### Get Users of IAM group **Query: iamGroupUsers** Retrieves all group members of the specified `group` (by `id`) within the query limit. - `groupId`: (required) unique group identifier - `limit`: (required) max number of records to return - `cursor`: (optional) continuation token > Note: The item.`id` property in the response is the JupiterOne `uid`. ```graphql query Query($groupId: String!, $limit: Int!, $cursor: String) { iamGroupUsers(groupId: $groupId, limit: $limit, cursor: $cursor) { items { id email } pageInfo { endCursor hasNextPage } } } ``` **API Samples** Sample (S1): `iamGroupUsers` (S1): Request ```json { "groupId": "22c2d370-89ef-4280-970b-d520ca1837be", "limit": 5 } ``` (S1): Response ```json { "data": { "iamGroupUsers": { "items": [ { "id": "222xxx222_abc", "email": "abc@mycompany.com" }, { "id": "222xxx222_def@mycompany.com", "email": "def@mycompany.com" } ], "pageInfo": { "endCursor": "eyJ1c2VyIjoiaj...", "hasNextPage": true } } } } ``` ### Add IAM User to Group **Mutation: addIamUserToGroupByEmail** Adds a `user` to a `group` using the specified email and group ID. - `groupId`: (required) - `userEmail`: (required) ```graphql mutation Mutation($groupId: String!, $userEmail: String!) { addIamUserToGroupByEmail(groupId: $groupId, userEmail: $userEmail) { success } } ``` **API Samples** Sample (S1): `addIamUserToGroupByEmail` (S1): Request ```json { "groupId": "22c2d370-89ef-4280-970b-d520ca1837be", "userEmail": "abc@mycompany.com" } ``` (S1): Response ```json { "data": { "addIamUserToGroupByEmail": { "success": true } } } ``` ### Remove IAM user from group **Mutation: removeIamUserFromGroupByEmail** Removes a `user` from a `group` using the specified email and group ID. - `groupId`: (required) - `userEmail`: (required) ```graphql mutation Mutation($groupId: String!, $userEmail: String!) { removeIamUserFromGroupByEmail(groupId: $groupId, userEmail: $userEmail) { success } } ``` **API Samples** Sample (S1): `removeIamUserFromGroupByEmail` (S1): Request ```json { "groupId": "22c2d370-89ef-4280-970b-d520ca1837be", "userEmail": "xyz@mycompany.com" } ``` (S1): Response ```json { "data": { "removeIamUserFromGroupByEmail": { "success": true } } } ``` ### Create IAM Group **Mutation: `createIamGroup`** Creates a new `group` with a specified `name` and optionally: `description`, `queryPolicy`, and/or `abacPermissions`. - `name`: (required) must be unique to all other groups. - `description`: (optional) - `abacPermissions`: (optional) - `queryPolicy`: (optional) ```graphql mutation Mutation( $name: String! $description: String $abacPermissions: [String!] $queryPolicy: [JSON!] ) { createIamGroup( name: $name description: $description abacPermissions: $abacPermissions queryPolicy: $queryPolicy ) { id name description } } ``` **API Type Definitions** **queryPolicy** Description: Group Query Policies define query access for members of a particular group. Setting this property via the IAM API will **overwrite** any existing queryPolicy for the given group. If updating this property, _always_ define the full `queryPolicy` to enforce. Type: list of `JSON` objects with primitive values or an array or primitive values. ```typescript type queryPolicy = [JSON!]; type JSON = { [key: string]: string | number | boolean || (string | number | boolean)[]; } ``` queryPolicy **abacPermissions** ABAC permissions define application access for members of a perticular group. Setting this property via the IAM API will **overwrite** any existing permissions for the given group. If updating this property, _always_ define the full list of `permissions` that should be granted. Type: list of valid `permission` strings (see table below). ```typescript type abacPermissions = [permission!] type permission = string // must be a valid permission string ``` **Permission Strings: READ-ONLY** | DISPLAY NAME (J1 APP) | ACCESS | PERMISSION | | --- | --- | --- | | _All Apps And Resources_ | READ | `fullReadAccess` | | _Shared: Questions_ | READ | `readQuestions` | | _GraphData_ | READ | `readGraph` | | _Home Page_ | READ | `accessLanding` | | _Assets_ | READ | `accessAssets` | | _Policies_ | READ | `accessPolicies` | | _Compliance_ | READ | `accessCompliance` | | _Alerts_ | READ | `accessRules` | | _GraphViewer_ | READ | `accessGalaxy` | | _Insights_ | READ | `accessInsights` | | _Integrations_ | READ | `accessIntegrations` | | _Endpoint Compliance_ | READ | `accessEndpointCompliance` | | _Vulnerabilities_ | READ | `accessVulnerabilities` | **Permission Strings: ADMIN** | DISPLAY NAME (J1 APP) | ACCESS | PERMISSION | | --- | --- | --- | | _All Apps And Resources_ | ADMIN | `accessAdmin` | | _Shared: Questions_ | ADMIN | `writeQuestions` | | _GraphData_ | ADMIN | `writeGraph` | | _Home Page_ | ADMIN | `adminLanding` | | _Assets_ | ADMIN | `adminAssets` | | _Policies_ | ADMIN | `adminPolicies` | | _Compliance_ | ADMIN | `adminCompliance` | | _Alerts_ | ADMIN | `adminRules` | | _GraphViewer_ | ADMIN | `adminGalaxy` | | _Insights_ | ADMIN | `adminInsights` | | _Integrations_ | ADMIN | `adminIntegrations` | | _Endpoint Compliance_ | ADMIN | `adminEndpointCompliance` | | _Vulnerabilities_ | ADMIN | `adminVulnerabilities` | | _ENABLE API KEY ACCESS_ | \* | `apiKeyUser` | **API Samples** Sample (S1): `createIamGroup` (S1): Request ```json { "name": "Users" } ``` (S1): Response ```json { "data": { "createIamGroup": { "id": "90909-11ef-4280-970b-4444ca1837be", "name": "Users" } } } ``` Sample (S2): `createIamGroup` (S2): Request ```json { "name": "UsersX", "description": "A group for X users" } ``` (S2): Response ```json { "data": { "createIamGroup": { "id": "11c2d370-89ef-4280-970b-d520ca1837be", "name": "UsersX", "description": "A group for X users" } } } ``` Sample (S3): `createIamGroup` (S3): Request ```json { "name": "Support", "description": "A group for support users", "queryPolicy": [ { "_type": ["aws_ecr_image", "bitbucket_pullrequest"] } ] } ``` (S3): Response ```json { "data": { "createIamGroup": { "id": "23434-454-45656-65656-4564564565", "name": "Support", "description": "A group for support users" } } } ``` Sample (S4): `createIamGroup` (S4): Request ```json { "name": "Admins", "queryPolicy": [ { "_type": "aws_ecs_task_definition", "_class": "Account" }, { "_type": "aws_ecr_image" } ] } ``` (S4): Response ```json { "data": { "createIamGroup": { "id": "87787-6787-678678-778-6786786", "name": "Admins" } } } ``` **Access All Actions and Resources** You can use an API token to access all actions and resources ### Update IAM Group **Mutation: `updateIamGroup`** Updates a `group`'s properties: `name`, `description`, `queryPolicy`, and/or `abacPermissions`. - `id`: (required) must tie to an existing group. - `name`: (optional) must be unique to all other groups. - `description`: (optional) - `abacPermissions`: (optional) - `queryPolicy`: (optional) ```graphql mutation Mutation( $id: String! $name: String $description: String $abacPermissions: [String!] $queryPolicy: [JSON!] ) { updateIamGroup( id: $id name: $name description: $description abacPermissions: $abacPermissions queryPolicy: $queryPolicy ) { id name description } } ``` **API Type Definitions** **queryPolicy** Description: Group Query Policies define query access for members of a particular group. Setting this property via the IAM API will **overwrite** any existing queryPolicy for the given group. If updating this property, _always_ define the full `queryPolicy` to enforce. Type: list of `JSON` objects with primitive values or an array or primitive values. ```typescript type queryPolicy = [JSON!]; type JSON = { [key: string]: string | number | boolean || (string | number | boolean)[]; } ``` **abacPermissions** Description: ABAC permissions define application access for members of a perticular group. Setting this property via the IAM API will **overwrite** any existing permissions for the given group. If updating this property, _always_ define the full list of `permissions` that should be granted. Type: list of valid `permission` strings (see table below). ```typescript type abacPermissions = [permission!]; type permission = string; // must be a valid permission string ``` **Permission Strings: READ-ONLY** | DISPLAY NAME (J1 APP) | ACCESS | PERMISSION | | --- | --- | --- | | _All Apps And Resources_ | READ | `fullReadAccess` | | _Shared: Questions_ | READ | `readQuestions` | | _GraphData_ | READ | `readGraph` | | _Home Page_ | READ | `accessLanding` | | _Assets_ | READ | `accessAssets` | | _Policies_ | READ | `accessPolicies` | | _Compliance_ | READ | `accessCompliance` | | _Alerts_ | READ | `accessRules` | | _GraphViewer_ | READ | `accessGalaxy` | | _Insights_ | READ | `accessInsights` | | _Integrations_ | READ | `accessIntegrations` | | _Endpoint Compliance_ | READ | `accessEndpointCompliance` | | _Vulnerabilities_ | READ | `accessVulnerabilities` | **Permission Strings: ADMIN** | DISPLAY NAME (J1 APP) | ACCESS | PERMISSION | | --- | --- | --- | | _All Apps And Resources_ | ADMIN | `accessAdmin` | | _Shared: Questions_ | ADMIN | `writeQuestions` | | _GraphData_ | ADMIN | `writeGraph` | | _Home Page_ | ADMIN | `adminLanding` | | _Assets_ | ADMIN | `adminAssets` | | _Policies_ | ADMIN | `adminPolicies` | | _Compliance_ | ADMIN | `adminCompliance` | | _Alerts_ | ADMIN | `adminRules` | | _GraphViewer_ | ADMIN | `adminGalaxy` | | _Insights_ | ADMIN | `adminInsights` | | _Integrations_ | ADMIN | `adminIntegrations` | | _Endpoint Compliance_ | ADMIN | `adminEndpointCompliance` | | _Vulnerabilities_ | ADMIN | `adminVulnerabilities` | | _ENABLED API KEY ACCESS_ | \* | `apiKeyUser` | **API Samples** Sample (S1): `updateIamGroup` (S1): Request ```json { "id": "90909-11ef-4280-970b-4444ca1837be", "name": "Users" } ``` (S1): Response ```json { "data": { "updateIamGroup": { "id": "90909-11ef-4280-970b-4444ca1837be", "name": "Users", "description": "original description.." } } } ``` Sample (S2): `updateIamGroup` (S2): Request ```json { "id": "90909-11ef-4280-970b-4444ca", "name": "UsersX", "description": "A group for X users" } ``` (S2): Response ```json { "data": { "updateIamGroup": { "id": "90909-11ef-4280-970b-4444ca", "name": "UsersX", "description": "A group for X users" } } } ``` Sample (S3): `updateIamGroup` (S3): Request ```json { "id": "90909-11ef-4280-970b-4444ca", "abacPermissions": ["accessPolicies", "writeQuestions", "accessGalaxy"], "queryPolicy": [ { "_type": "aws_ecs_task_definition" } ] } ``` (S3): Response ```json { "data": { "updateIamGroup": { "id": "90909-11ef-4280-970b-4444ca", "name": "UsersX", "description": "A group for X users" } } } ``` Sample (S4): `updateIamGroup` (S4): Request ```json { "id": "90909-11ef-4280-970b-4444ca", "description": "allow account class", "queryPolicy": [ { "_type": "aws_ecs_task_definition", "_class": "Account" }, { "_integrationType": ["whitehat"] } ] } ``` (S4): Response ```json { "data": { "updateIamGroup": { "id": "90909-11ef-4280-970b-4444ca", "name": "UsersX", "description": "allow account class" } } } ``` ### Set RBAC Permissions Resource permissions are used to manage access to the following resources: integrations, dashboards, and rules. You can set resource permissions for a user group by using the following gql mutation: **Mutation: `setResourcePermission`** Creates/updates a resource permission for a `group` - `subjectType`: (required) Currently only supports `group` for user group - `subjectId`: (required) The id of the user group - `resourceArea`: (required) `dashboard`, `integration`, or `rule` - `resourceType`: (required) `*`, `resource_group`, `dashboard`, `integration`, or `rule` - `resourceId`: (required) The id of the resource or `*` - `canCreate`: (required) - `canRead`: (required) Must be true if `canCreate`, `canUpdate` or `canDelete` are true - `canUpdate`: (required) - `canDelete`: (required) ```graphql mutation SetResourcePermission( $subjectType: String! $subjectId: String! $resourceArea: String! $resourceType: String! $resourceId: String! $canCreate: Boolean! $canRead: Boolean! $canUpdate: Boolean! $canDelete: Boolean! ) { setResourcePermission( input: { subjectType: $subjectType subjectId: $subjectId resourceArea: $resourceArea resourceType: $resourceType resourceId: $resourceId canCreate: $canCreate canRead: $canRead canUpdate: $canUpdate canDelete: $canDelete } ) { subjectType subjectId resourceArea resourceType resourceId canCreate canRead canUpdate canDelete } } ``` --- Source: /api/integrations-operations # Integrations API ### Scheduling Integration Jobs Use the `pollingIntervalCronExpression` to set an `hour` or `dayOfWeek` value for an integration configuration to run. #### Set the Hour When using the `ONE_DAY` polling interval, you can pass an optional `pollingIntervalCronExpression` to specify a time of day for the integration to execute. The following configuration sets an integration to execute daily between 00:00 and 01:00 UTC. ```graphql { "pollingInterval": "ONE_DAY", "pollingIntervalCronExpression": { "hour": 0 } } ``` `pollingIntervalCronExpression.hour` accepts an integer between 0 and 23. #### Set the Day of the Week When using the `ONE_WEEK` polling interval, you can pass an optional `pollingIntervalCronExpression` to specify both a `dayOfWeek` and `hour` for the integration to execute. The following configuration sets an integration to execute weekly on Sunday between 00:00 and 01:00 UTC. ```graphql { "pollingInterval": "ONE_WEEK", "pollingIntervalCronExpression": { "hour": 0, "dayOfWeek": 0 } } ``` `pollingIntervalCronExpression.dayOfWeek` accepts an integer between 0 (Sunday) and 6 (Saturday). #### Example Mutation This is an example of a GraphQL mutation that updates the hour and day of the week for a specific configuration of an integration in JupiterOne: ```graphql mutation integrationInstance( $id: String! $pollingIntervalCronExpression: IntegrationPollingIntervalCronExpressionInput ) { updateIntegrationInstance( id: $id update: { pollingIntervalCronExpression: $pollingIntervalCronExpression } ) { id name pollingInterval pollingIntervalCronExpression { hour dayOfWeek } } } ``` Variables for the mutation: ```graphql { "id": "00000000-0000-0000-0000-000000000000", "pollingIntervalCronExpression": { "hour": 0, "dayOfWeek": 0 } } ``` Variables: `id`: the `id` of the configuration for which you want to update the hour and/or day of week. This ID is visible in each integration configuration in your account. To find the ID in your JupiterOne account, go to **Settings > Integration > {integration name} > {configuration name}** > value in the ID field. `hour`: an integer between 0 and 23 that represents the hour of the day in UTC when you want the integration to run. `dayofWeek`: an integer between 0 and 6 that represents the day of the week Sunday through Saturday on which you want the integration to run. #### Example Query This is an example of a GraphQL query that returns the current values in the `hour` and `dayOfWeek` parameters for a specific integration configuration: ```graphql query integrationInstance($id: String!) { integrationInstance(id: $id) { id name pollingInterval pollingIntervalCronExpression { hour dayOfWeek } } } ``` Variable for the query: ```graphql { "id": "00000000-0000-0000-0000-000000000000" } ``` Variables: `id`: the `id` of the configuration for which you want to update the hour and/or day of week. This ID is visible in each integration configuration in your account. To find the ID in your JupiterOne account go to **Settings > Integration > {integration name} > {configuration name} >** value in the ID field. ### Finding an Integration Definition Based on a Type For an end-customer guide to authoring custom integrations, see [Integration Development](/integrations/development/overview.md). This query returns an Integration Definition. This query requires an Integration Type. ```graphql query testQuery($integrationType: String!) { findIntegrationDefinition(integrationType: $integrationType) { id name type title integrationType integrationClass configFields { key displayName description } } } ``` ### Getting an Integration Definition with an ID This query returns a Integration Definition. This query requires an ID. ```graphql query getIntegrationDefinition($id: String) { integrationDefinition(id: $id) { id name type title } } ``` ### List Integration Definitions This query returns a list of all Integration Definitions. ```graphql query testQuery { integrationDefinitions { definitions { id name type title } pageInfo { endCursor hasNextPage } } } ``` ### List Integration Jobs This query returns a list of Integration Jobs for a given Integration Instance. ```graphql query testQuery ( $integrationInstanceId: String! $cursor: String $size: Int ) { integrationJobs( integrationInstanceId: $integrationInstanceId cursor: $cursor size: $size ) { jobs { id createDate integrationInstanceId status errorsOccurred endDate } pageInfo { endCursor hasNextPage } } } ``` ### Integration Job Health This section has been moved [here](/integrations/instance-management.md#instance-job-statues). ## Trigger an Integration Job via API The following values are required in order to trigger an integration job via API: `API_KEY` - An API Key must be configured before leveraging the JupiterOne API. Review [Enable API Key Access](/api/authentication.md) for a guide in creating a JupiterOne API Key. `ACCOUNT_ID` - This value is the unique ID of your JupiterOne Account, found in Settings under Account Management. `INTEGRATION_INSTANCE_ID` - This value is the ID of the specific integration instance that will be triggered, found in Settings under Integrations and then selecting the specific integration that has been configured (Integrations - Configurations - Settings). **Sample request:** Endpoint: ```text POST https://graphql.us.jupiterone.io ``` Headers: ```json { "Content-Type": "application/json", "Accept": "application/json", "JupiterOne-Account": "{Account_ID}", "Authorization": "Bearer {API_Key}" } ``` Body: ```graphql { mutation Invoke { invokeIntegrationInstance(id: INTEGRATION_INSTANCE_ID) { success } } } ``` ## Retrieve JupiterOne Audit Events via API User events in your JupiterOne account are logged and can be accessed via API. **Sample request:** Endpoint: ```text POST https://graphql.us.jupiterone.io ``` Headers: ```json { "Content-Type": "application/json", "JupiterOne-Account": "{Account_ID}", "Authorization": "Bearer {API_Key}" } ``` Body: ```graphql query Query($limit: Int, $cursor: String, $startTimestamp: Long, $endTimestamp: Long) { getAuditEventsForAccount( limit: $limit cursor: $cursor startTimestamp: $startTimestamp endTimestamp: $endTimestamp ) { items { id resourceType resourceId category timestamp performedByUserId data } pageInfo { endCursor hasNextPage } } } ``` --- Source: /api/nodejs-client # JupiterOne Node.js Client The [`@jupiterone/jupiterone-client-nodejs`](https://www.npmjs.com/package/@jupiterone/jupiterone-client-nodejs) package is a Node.js wrapper for the JupiterOne API. It also installs the `j1` command-line tool, which runs J1QL queries and creates, updates, or deletes entities, relationships, alert rules, and questions from JSON or YAML input files. > **NOTE** > > This is an experimental project and is subject to change. The source code and changelog are on [GitHub](https://github.com/JupiterOne/jupiterone-client-nodejs). ## Requirements - Node.js 22 or later. Version 3.0.0 of the client dropped support for Node.js 18 and 20. - A JupiterOne API key. See [Authentication](/api/authentication.md) to create one. - Your JupiterOne account ID, found in [Account Management](/features/admin/admin-settings.md#account-management). ## Installation To install the client in the current project: ```bash npm install @jupiterone/jupiterone-client-nodejs ``` To install the client and the `j1` CLI globally: ```bash npm install -g @jupiterone/jupiterone-client-nodejs ``` ## Using the Node.js client ```js const { JupiterOneClient } = require('@jupiterone/jupiterone-client-nodejs'); async function main() { const j1Client = await new JupiterOneClient({ account: 'my-account-id', accessToken: process.env.J1_API_TOKEN, apiBaseUrl: 'https://api.us.jupiterone.io', // Optional }).init(); const results = await j1Client.queryV1('FIND jupiterone_account'); const integrationInstance = await j1Client.integrationInstances.get( 'my-integration-instance-id', ); } main().catch((err) => { console.error(err); process.exitCode = 1; }); ``` `apiBaseUrl` defaults to `https://api.us.jupiterone.io`. Accounts hosted in the EU region use `https://api.eu.jupiterone.io`. Beyond queries, the client exposes methods for entities and relationships (`createEntity`, `updateEntity`, `deleteEntity`, `createRelationship`), alert rules (`mutateAlertRule`), questions (`createQuestion`, `updateQuestion`, `deleteQuestion`), integration definitions and instances (`integrationDefinitions.list`, `integrationInstances.list`, `get`, `create`, `update`, `delete`), and [sync jobs](/api/sync-jobs/overview.md) (`startSyncJob`, `uploadGraphObjectsForSyncJob`, `finalizeSyncJob`, `abortSyncJob`, `bulkUpload`, `bulkDelete`). ### Query options `queryV1` pages through results with cursors and returns all of them. The second argument accepts Apollo Client query options, which is useful when you need to change how the cache behaves. Inside an async function: ```js const options = { fetchPolicy: 'network-only', }; const results = await j1Client.queryV1('FIND jupiterone_account', options); ``` See the Apollo Client documentation on [fetch policies](https://www.apollographql.com/docs/react/data/queries/#setting-a-fetch-policy) for the available values. ## Using the j1 CLI ```bash $ j1 --help Usage: j1 [options] Options: -v, --version output the version number -a, --account JupiterOne account name. -u, --user JupiterOne user email. -k, --key JupiterOne API access token. -q, --query Execute a query. -o, --operation Supported operations: create,update,upsert,delete,bulk-delete,provision-alert-rule-pack -e, --entity Specifies entity operations. -r, --relationship Specifies relationship operations. -l, --alert Specifies alert rule operations. -w, --question Specifies question operations. A question is answered by one or more queries. -f, --input-file Input JSON file. Or the filename of the alert rule pack. --hard-delete Optionally force hard deletion of entities (default is soft delete). --delete-duplicates Optionally force deletion of duplicate entities with identical keys. --output-file Writes query result to specified output file, or results.json by default (default: "results.json") --api-base-url Optionally specify base URL to use during execution. (defaults to `https://api.us.jupiterone.io`) -h, --help display help for command ``` Every command needs: - `-a` with your JupiterOne account ID. The value is sent as the `JupiterOne-Account` header, so use the account ID even though the help text says "account name". - An API key, passed with `-k` or set in the `J1_API_TOKEN` environment variable. > **CAUTION** > > The `-u` (user email) option is a leftover from the old username and password login, which the client no longer supports. Always authenticate with an API key. Input files can be JSON (`.json`) or YAML (`.yml` or `.yaml`). YAML files are parsed with the YAML 1.2 schema. ## Examples The examples below assume your API key is set in the `J1_API_TOKEN` environment variable. Otherwise, add `-k ` to each command. ### Run a J1QL query ```bash $ j1 -a my-account-id -q 'Find jupiterone_account' Validating inputs... OK Authenticating with JupiterOne... OK [ { "id": "06ab12cd-a402-406c-8582-abcdef001122", "entity": { "_beginOn": 1553777431867, "_createdOn": 1553366320704, "_deleted": false, "displayName": "YCO, Inc.", "_type": [ "jupiterone_account" ], "_key": "1a2b3c4d-44ce-4a2f-8cd8-99dd88cc77bb", "_accountId": "my-account-id", "_source": "api", "_id": "1a2b3c4d-44ce-4a2f-8cd8-99dd88cc77bb", "_class": [ "Account" ], "_version": 6 }, "properties": { "emailDomain": "yourcompany.com", "phoneNumber": "877-555-4321", "webURL": "https://yourcompany.com/", "name": "YCO" } } ] Done! ``` Query results are also written to `results.json` in the current directory. Use `--output-file` to choose a different file. ### Create, update, or delete entities from an input file ```bash $ j1 -a my-account-id -o create --entity -f ./entities.json Validating inputs... OK Authenticating with JupiterOne... OK created 2 entities: [ "12345678-fe34-44ee-b3b0-abcdef123456", "12345678-e75f-40d6-858e-123456abcdef" ] Done! ``` The operations behave as follows: - `create` creates every entity in the file. - `update` updates entities identified by `entityId`, or by `entityKey` when no `entityId` is given. Entities whose key is not found, or matches more than one entity, are skipped. - `upsert` works like `update`, but creates the entity when its key is not found. - `delete` soft-deletes entities identified by `entityId` or `entityKey`. Add `--hard-delete` to delete them permanently, and `--delete-duplicates` to delete every entity that shares the same key. The input file contains a single entity or an array of entities. For example: ```json [ { "entityId": "12345678-fe34-44ee-b3b0-abcdef123456", "entityKey": "test:entity:1", "entityType": "generic_resource", "entityClass": "Resource", "properties": { "name": "Test Entity Resource 1", "displayName": "TER1" } }, { "entityId": "12345678-e75f-40d6-858e-123456abcdef", "entityKey": "test:entity:3", "entityType": "generic_resource", "entityClass": "Resource", "properties": { "name": "Test Entity Resource 2", "displayName": "TER2" } } ] ``` `entityId` is ignored by `create`. For the other operations, provide `entityId` or `entityKey`. ### Create relationships from an input file ```bash j1 -a my-account-id -o create --relationship -f ./relationships.json ``` Each relationship in the file has `relationshipKey`, `relationshipType`, `relationshipClass`, `fromEntityId`, `toEntityId`, and optional `properties`. The CLI can create relationships but not update them. ### Create or update alert rules from an input file ```bash $ j1 -a my-account-id -o create --alert -f ./alerts.json Validating inputs... OK Authenticating with JupiterOne... OK Created 1 alert rules: [ { "id": "", "name": "unencrypted-prod-data" } ]. Done! ``` The input file contains one alert rule instance or an array of them. The following is an example of a single alert rule instance: ```json { "instance": { "name": "unencrypted-prod-data", "description": "Data stores in production tagged critical and unencrypted", "specVersion": 1, "pollingInterval": "ONE_DAY", "outputs": ["alertLevel"], "operations": [ { "when": { "type": "FILTER", "specVersion": 1, "condition": [ "AND", ["queries.unencryptedCriticalData.total", "!=", 0] ] }, "actions": [ { "type": "SET_PROPERTY", "targetProperty": "alertLevel", "targetValue": "CRITICAL" }, { "type": "CREATE_ALERT" } ] } ], "question": { "queries": [ { "query": "Find DataStore with (production=true or tag.Production=true) and classification='critical' and encrypted!=true as d return d.tag.AccountName as Account, d.displayName as UnencryptedDataStores, d._type as Type, d.encrypted as Encrypted", "version": "v1", "name": "unencryptedCriticalData" } ] } } } ``` To update an alert rule, add `"id": ""` to the instance and use `-o update`. `create` skips instances that already have an `id`. ### Create, update, or delete questions from an input file ```bash j1 -a my-account-id -o create --question -f ./questions.json ``` `create` creates questions without an `id` and updates questions that have one. `update` and `delete` require an `id` and skip questions without one. ### Bulk delete ```bash j1 -a my-account-id -q 'Find SomeDataClass with someProp="some value" as e return e._id as _id' j1 -a my-account-id -o bulk-delete --entity -f ./results.json ``` The first command runs a J1QL query and saves the results to `results.json`. The second command reads `results.json` and deletes all of the entities in it through a sync job. Entities that an integration manages are created again on that integration's next run, so bulk delete is best suited to data you uploaded yourself. Bulk delete reads the `_id` field at the top level of each object in the input file, so the query must return `_id` as shown above. The output of a plain `Find` query nests `_id` under `entity` and will not delete anything. Use `--relationship` instead of `--entity` to bulk delete relationships, with an input file of objects that each have the relationship's `_id`. ### Provision alert rules from a rule pack The following command provisions the alert rules in the `aws-config` rule pack from the [`jupiterone-alert-rules`](https://github.com/JupiterOne/jupiterone-alert-rules) project: ```bash j1 -a my-account-id -o provision-alert-rule-pack --alert -f aws-config ``` The CLI looks up rule packs by name in `node_modules/@jupiterone/jupiterone-alert-rules/rule-packs/` under the current directory, so run it from a project where the client is installed locally. You can also provision your own rule pack by passing the full path to its JSON file: ```bash j1 -a my-account-id -o provision-alert-rule-pack --alert -f path/to/your/rule-pack.json ``` --- Source: /api/python-client # JupiterOne Python SDK [![Python 3.6](https://img.shields.io/badge/python-3.6-blue.svg)](https://www.python.org/downloads/release/python-360/) [![Python 3.7](https://img.shields.io/badge/python-3.7-blue.svg)](https://www.python.org/downloads/release/python-370/) A Python library for the [JupiterOne API](https://docs.jupiterone.io/reference). ## Installation Requires Python 3.6+ `pip install jupiterone` ## Usage ##### Create a new client: ```python from jupiterone import JupiterOneClient j1 = JupiterOneClient( account='', token='', url='https://graphql.us.jupiterone.io', sync_url='https://api.us.jupiterone.io' ) ``` ## Regional or Custom Tenant Support For users with J1 accounts in the EU region for example, the 'url' parameter will need to be updated to "[https://graphql.eu.jupiterone.io](https://graphql.eu.jupiterone.io)" and the 'sync\_url' parameter will need to be updated to "[https://api.eu.jupiterone.io](https://api.eu.jupiterone.io)". If no 'url' parameter is passed, the default of "[https://graphql.us.jupiterone.io](https://graphql.us.jupiterone.io)" is used, and if no 'sync\_url' parameter is passed, the default of "[https://api.us.jupiterone.io](https://api.us.jupiterone.io)" is used. ## Method Examples: ### \*See the examples/examples.py for full usage example documentation ##### Execute a query: ```python QUERY = 'FIND Host' query_result = j1.query_v1(QUERY) # Including deleted entities query_result = j1.query_v1(QUERY, include_deleted=True) # Tree query QUERY = 'FIND Host RETURN TREE' query_result = j1.query_v1(QUERY) # Using cursor graphQL variable to return full set of paginated results QUERY = "FIND (Device | Person)" cursor_query_r = j1._cursor_query(QUERY) ``` ##### Create an entity: Note that the CreateEntity mutation behaves like an upsert, so a non-existent entity will be created or an existing entity will be updated. ```python properties = { 'myProperty': 'myValue', 'tag.myTagProperty': 'value_will_be_a_tag' } entity = j1.create_entity( entity_key='my-unique-key', entity_type='my_type', entity_class='MyClass', properties=properties, timestamp=int(time.time()) * 1000 # Optional, defaults to current datetime ) print(entity['entity']) ``` #### Update an existing entity: Only send in properties you want to add or update, other existing properties will not be modified. ```python properties = { 'newProperty': 'newPropertyValue' } j1.update_entity( entity_id='', properties=properties ) ``` #### Delete an entity: ```python j1.delete_entity(entity_id='') ``` ##### Create a relationship ```python j1.create_relationship( relationship_key='this_entity_relates_to_that_entity', relationship_type='my_relationship_type', relationship_class='MYRELATIONSHIP', from_entity_id='', to_entity_id='' ) ``` ##### Delete a relationship ```python j1.delete_relationship(relationship_id='') ``` ##### Fetch Graph Entity Properties ```python j1.fetch_all_entity_properties() ``` ##### Fetch Graph Entity Tags ```python j1.fetch_all_entity_tags() ``` ##### Fetch Entity Raw Data ```python j1.fetch_entity_raw_data(entity_id='') ``` > **INFO** > > Raw data is retrieved on demand from the sync job that produced it, and is retained for **7 days** from that sync. An entity whose integration has not run in more than 7 days, or that was not included in its integration's most recent run, reports raw data as unavailable — the entity and its properties are unaffected. Retrieval reads from the ingestion pipeline rather than the graph, so expect modestly longer per-entity times when fetching in bulk. See [What's new in Asset Data](/features/assets/whats-new-in-asset-data.md). > > `fetch_entity_raw_data` uses the deprecated `entityRawDataLegacy` GraphQL query. For bulk retrieval, call the faster `entityRawDataV2` query directly. See [Entity raw data](/api/entity-raw-data.md). ##### Create Integration Instance ```python j1.create_integration_instance( instance_name="Integration Name", instance_description="Description Text") ``` ##### Start Synchronization Job ```python j1.start_sync_job(instance_id='') ``` ##### Upload Batch of Entities ```python entities_payload = [ { "_key": "1", "_type": "pythonclient", "_class": "API", "displayName": "pythonclient1", "propertyName": "value" }, { "_key": "2", "_type": "pythonclient", "_class": "API", "displayName": "pythonclient2", "propertyName": "value" }, { "_key": "3", "_type": "pythonclient", "_class": "API", "displayName": "pythonclient3", "propertyName": "value" } ] j1.upload_entities_batch_json(instance_job_id='', entities_list=entities_payload) ``` ##### Upload Batch of Relationships ```python relationships_payload = [ { "_key": "1:2", "_class": "EXTENDS", "_type": "pythonclient_extends_pythonclient", "_fromEntityKey": "1", "_toEntityKey": "2", "relationshipProperty": "value" }, { "_key": "2:3", "_class": "EXTENDS", "_type": "pythonclient_extends_pythonclient", "_fromEntityKey": "2", "_toEntityKey": "3", "relationshipProperty": "value" } ] j1.upload_relationships_batch_json(instance_job_id='', relationships_list=relationships_payload) ``` ##### Upload Batch of Entities and Relationships ```python combined_payload = { "entities": [ { "_key": "4", "_type": "pythonclient", "_class": "API", "displayName": "pythonclient4", "propertyName": "value" }, { "_key": "5", "_type": "pythonclient", "_class": "API", "displayName": "pythonclient5", "propertyName": "value" }, { "_key": "6", "_type": "pythonclient", "_class": "API", "displayName": "pythonclient6", "propertyName": "value" } ], "relationships": [ { "_key": "4:5", "_class": "EXTENDS", "_type": "pythonclient_extends_pythonclient", "_fromEntityKey": "4", "_toEntityKey": "5", "relationshipProperty": "value" }, { "_key": "5:6", "_class": "EXTENDS", "_type": "pythonclient_extends_pythonclient", "_fromEntityKey": "5", "_toEntityKey": "6", "relationshipProperty": "value" } ] } j1.upload_combined_batch_json(instance_job_id='', combined_payload=combined_payload) ``` ##### Finalize Synchronization Job ```python j1.finalize_sync_job(instance_job_id='') ``` ##### Fetch Integration Instance Jobs ```python j1.fetch_integration_jobs(instance_id='') ``` ##### Fetch Integration Instance Job Events ```python j1.fetch_integration_job_events(instance_id='', instance_job_id='') ``` ##### Create SmartClass ```python j1.create_smartclass(smartclass_name='SmartClassName', smartclass_description='SmartClass Description Text') ``` ##### Create SmartClass Query ```python j1.create_smartclass_query(smartclass_id='', query='', query_description='Query Description Text') ``` ##### Run SmartClass Evaluation ```python j1.evaluate_smartclass(smartclass_id='') ``` ##### Get SmartClass Details ```python j1.get_smartclass_details(smartclass_id='') ``` ##### Generate J1QL from Natural Language Prompt ```python j1.generate_j1ql(natural_language_prompt='') ``` ##### List Alert Rules ```python j1.list_alert_rules() ``` ##### Get Alert Rule Details ```python j1.get_alert_rule_details(rule_id='') ``` ##### Create Alert Rule ```python # polling_interval can be DISABLED, THIRTY_MINUTES, ONE_HOUR, FOUR_HOURS, EIGHT_HOURS, TWELVE_HOURS, ONE_DAY, or ONE_WEEK # severity can be INFO, LOW, MEDIUM, HIGH, or CRITICAL j1.create_alert_rule(name="create_alert_rule-name", description="create_alert_rule-description", tags=['tag1', 'tag2'], polling_interval="DISABLED", severity="INFO", j1ql="find jupiterone_user") ``` ##### Create Alert Rule with Action Config ```python webhook_action_config = { "type": "WEBHOOK", "endpoint": "https://webhook.domain.here/endpoint", "headers": { "Authorization": "Bearer ", }, "method": "POST", "body": { "queryData": "{{queries.query0.data}}" } } tag_entities_action_config = { "type": "TAG_ENTITIES", "entities": "{{queries.query0.data}}", "tags": [ { "name": "tagKey", "value": "tagValue" } ] } j1.create_alert_rule(name="create_alert_rule-name", description="create_alert_rule-description", tags=['tag1', 'tag2'], polling_interval="DISABLED", severity="INFO", j1ql="find jupiterone_user", action_configs=webhook_action_config) ``` ##### Delete Alert Rule ```python j1.delete_alert_rule(rule_id='" }, "method": "POST", "body": { "queryData": "{{queries.query0.data}}" } } ] alert_rule_config_multiple = [ { "type": "WEBHOOK", "endpoint": "https://webhook.example", "headers": { "Authorization": "Bearer " }, "method": "POST", "body": { "queryData": "{{queries.query0.data}}" } }, { "type": "TAG_ENTITIES", "entities": "{{queries.query0.data}}", "tags": [ { "name": "tagName", "value": "tagValue" } ] } ] j1.update_alert_rule(rule_id="", name="Updated Alert Rule Name", description="Updated Alert Rule Description", j1ql="find jupiterone_user", polling_interval="ONE_WEEK", tags=['tag1', 'tag2', 'tag3'], tag_op="OVERWRITE", severity="INFO", action_configs=alert_rule_config_tag, action_configs_op="OVERWRITE") j1.update_alert_rule(rule_id='', tags=['newTag1', 'newTag1'], tag_op="OVERWRITE") j1.update_alert_rule(rule_id='', tags=['additionalTag1', 'additionalTag2'], tag_op="APPEND") ``` ##### Evaluate Alert Rule ```python j1.evaluate_alert_rule(rule_id='') ``` ##### Get Compliance Framework Item ```python j1.get_compliance_framework_item_details(item_id="") ``` ##### List Alert Rule Evaluation Results ```python j1.list_alert_rule_evaluation_results(rule_id="") ``` ##### Fetch Evaluation Result Download URL ```python j1.fetch_evaluation_result_download_url(raw_data_key="RULE_EVALUATION//query0.json") ``` ##### Fetch Evaluation Result Download URL ```python j1.fetch_evaluation_result_download_url(raw_data_key="RULE_EVALUATION//query0.json") ``` ##### Fetch Downloaded Evaluation Results ```python j1.fetch_downloaded_evaluation_results(download_url="https://download.us.jupiterone.io//RULE_EVALUATION///query0.json?token=&Expires=") ``` ##### Get Integration Definition Details ```python # examples: 'aws', 'azure', 'google_cloud' j1.get_integration_definition_details(integration_type="") ``` ##### Fetch Integration Instances ```python j1.fetch_integration_instances(definition_id="") ``` ##### Fetch Integration Instance Details ```python j1.get_integration_instance_details(instance_id="") ``` ##### Get Account Parameter Details ```python j1.get_parameter_details(name="ParameterName") ``` ##### List Account Parameters ```python j1.list_account_parameters() ``` ##### Create or Update Acount Parameter ```python j1.create_update_parameter(name="ParameterName", value="stored_value", secret=False) ``` --- Source: /api/questions-operations # Questions API ### Create a Question ```graphql mutation CreateQuestion($question: CreateQuestionInput!) { createQuestion(question: $question) { id title description queries { name query version resultsAre } variables { name required default } compliance { standard requirements } accountId integrationDefinitionId } } ``` **Variables**: ```json { "question": { "title": "What are my production data stores and their encryption status?", "tags": ["SecOps"], "description": "Returns a list of all production entities.", "queries": [ { "name": "prod-datastores-encrypted", "query": "Find * with tag.Production=true and encrypted=true", "resultsAre": "GOOD" }, { "name": "prod-datastores-unencrypted", "query": "Find * with tag.Production=true and encrypted!=true", "resultsAre": "BAD" } ], "compliance": [ { "standard": "NIST CSF", "requirements": ["ID.AM-1"] } ] } } ``` > **NOTE** > > The `name` field is optional; `name` is recommended to be a single word without special characters, and `resultsAre` with values `GOOD`, `BAD`, and `UNKNOWN` are used to determine gaps/issues and to perform continuous compliance assessment. `INFORMATIVE` is the default value. ### Update a question ```graphql mutation UpdateQuestion($id: ID!, $update: QuestionUpdate!) { updateQuestion(id: $id, update: $update) { id title description queries { name query version resultsAre } variables { name required default } compliance { standard requirements } accountId integrationDefinitionId } } ``` **Variables**: ```json { "id": "sj3j9f0j2ndlsj300swdjfjs", "update": { "title": "What are my production data stores and their encryption status?", "tags": ["SecOps"], "description": "Returns a list of all production entities.", "queries": [ { "name": "prod-datastores-encrypted", "query": "Find * with tag.Production=true and encrypted=true", "resultsAre": "GOOD" }, { "name": "prod-datastores-unencrypted", "query": "Find * with tag.Production=true and encrypted!=true", "resultsAre": "BAD" } ], "compliance": [ { "standard": "NIST CSF", "requirements": ["ID.AM-1"] } ] } } ``` > **NOTE** > > That the only difference here for `update` is the `"id"` property associated with the question. ### Delete a question ```graphql mutation DeleteQuestion($id: ID!) { deleteQuestion(id: $id) { id title description queries { query name version } variables { name required default } tags accountId integrationDefinitionId } } ``` **Variables**: ```json { "id": "slj3098s03j-i2ojd0j2-sjkkdjf" } ``` ### Search for questions ```graphql query GetQuestions($searchQuery: String) { questions (searchQuery: $searchQuery) { questions { id name description } } } ``` **Variables**: ```json { "searchQuery": "encrypted" } ``` ### Evaluate a question: ```graphql query EvaluateQuestion($id: ID!) { evaluateQuestion (id: $id) { answerText outputs {name, value} } } ``` **Variables**: ```json { "id": } ``` --- Source: /api/rate-limiting # GraphQL API Rate Limiting > Rate limiting is a technique to limit network traffic to avoid exhausting system resources. Rate limits are described in terms of tokens and the token-replenishment rate. Various actions performed using the JupiterOne public API deplete tokens and tokens are replenished at a predictable rate. If there are insufficient tokens to perform an action, then you receive a _rate exceeded_ (`429` HTTP response code) error. The rate limits are only when actions are performed using the public API. Scheduled or background activity (compliance report evaluation, rule evaluation, and so on) does not deplete tokens. > **INFO** > > Requests made through the [JupiterOne MCP Server](/integrations/jupiterone-mcp-server.md) count against the same API rate limits described below. JupiterOne has public API rate limits for GraphQL API mutations/queries. The rate-limited APIs return the following headers to control request back-off and throttling: - **RateLimit-Limit**: The quota of the currently most-limited bucket, such as the maximum quota of the bucket with the fewest remaining, concatenated with the quota and time window (in seconds) of each applicable bucket. For example, 1000, 10000; window=60, 1000; window=60. - **RateLimit-Remaining**: Whichever bucket is the closest to being full. This is the maximum number of invocations minus the number that are currently counted against the limit. This means it is the largest amount of further invocations that could be executed without being rejected by rate-limiting at the moment of the request. - **RateLimit-Reset**: If no further invocations were made against any limits, this is the number of seconds remaining until **all** buckets that apply against the invocation would be entirely emptied. This means it is the greatest amount among all times-to-empty for applicable limits. - **RateLimit-Requested**: This is a custom header specified because of the concurrency model of GraphQL and the way J1 counts multiple invocations from a single GraphQL request. This response header is an integer that returns the number of invocations that were counted in the request, regardless of whether the request was served or dropped due to quotas. ##### Example 1 In this use case: - An account is permitted 10,000 invocations per 60 seconds. - In the last 60 seconds, there have been 9,900 invocations in the account. - A token is permitted 1,000 invocations per 60 seconds. - In the last 60 seconds, there have been 800 invocations using the token. - A new request using the token that would be counted as 50 invocations is now being processed. The number of tentative invocations to be counted is added as RateLimit-Requested: RateLimit-Requested: 50 The request should be permitted, since pre-request the account limit has 100 remaining and the token limit has 200 remaining. After the request, the account limit has 50 remaining and the token limit has 150 remaining. Since the account limit is closer, it is used for RateLimit-Remaining and RateLimit-Limit headers: ```text RateLimit-Remaining: 50 RateLimit-Limit: 10000, 1000;window=60, 10000;window=60 ``` Supposing no other requests come in, it will take 9950/(10000/60) == 59.7 seconds for the account limit to clear, and it will take the token limit 800/(1000/60) == 48 seconds to clear. JupiterOne returns the greater number, rounded strictly _up_, i.e., `Math.ceil` (see IETF proposal – sub-second precision is disallowed). ```text RateLimit-Reset: 60 ``` ##### Example 2 In this use case: - An account is permitted 10,000 invocations per 60 seconds. - In the last 60 seconds, there have been 9,900 invocations in the account. - A token is permitted 1,000 invocations per 60 seconds. - In the last 60 seconds, there have been 995 invocations using the token. - A new request using the token that would be counted as 50 invocations is now being processed. The number of tentative invocations to be counted is added as RateLimit-Requested: RateLimit-Requested: 50 Because the token bucket has insufficient remaining invocations, the request should be dropped. Since the entire request is dropped, J1 does not count these invocations against the quota and, therefore, JupiterOne uses the pre-request numbers for the `Remaining` and `Limit` headers. The currently limiting bucket is the token bucket, which has 5 invocations remaining. The consumer can see that their request received `429` because 50 > 5: ```text RateLimit-Remaining: 5 RateLimit-Limit: 1000, 1000;window=60, 10000;window=60 ``` Supposing no other requests come in, it will take 9900/(10000/60) == 59.4 seconds for the account limit to clear, and it will take the token limit 995/(1000/60) == 59.7 seconds to clear. J1 returns the greater number, rounded strictly _up_, i.e. `Math.ceil` (see IETF proposal – sub-second precision is disallowed). ```text RateLimit-Reset: 60 ``` ## GraphQL API Rate Limiting Each GraphQL request can contain multiple mutations/queries and each individual mutation/query utilizes one _token_. To avoid a single end-user/client from depleting all tokens and impairing other clients, we apply hierarchical rate limiting at the _client level_ and _account level_. The client limit is configured to have a lower number of max tokens to better support fairness across multiple clients within a single account. Each unique authenticated session or API token/key is considered to be a single client. It is possible for the same user to log in multiple times in different web browsers and each of these sessions is considered a unique client. Furthermore, if multiple API tokens are being used to send requests, then each API token is considered a unique client. #### Account Rate Limit for GraphQL Mutations/Queries - 2000 tokens per 2-minute period - At any given time, there are a maximum of 2000 available tokens, which is the burst limit across the entire organization account. - It takes two minutes to fully replenish 2000 tokens. - JupiterOne discards mutations/queries when the rate exceeds 2000 tokens per 2-minute period. - **Average rate allowed:** 16.67 GraphQL mutations/queries per second. - **Configurable:** JupiterOne can adjust this rate limit on your behalf. Contact your J1 administrator. #### Client Rate Limit for GraphQL Mutations/Queries The default rate limit is `1000 tokens per 1-minute period`. - At any given time, there are a maximum of 1000 available tokens, which is the burst limit per client. - It takes 1 minute to fully replenish 1000 tokens. - JupiterOne discards invocations when the rate exceeds 1000 tokens per 1-minute period. - **Average rate allowed:** 16.67 GraphQL mutations/queries per second. - **Configurable:** An API token creator can adjust the rate limit when creating a token. ## J1QL Query Rate Limiting J1QL queries executed via the [JupiterOne public API](#) are rate-limited separately from GraphQL API invocations covered previously in this article. Each J1QL query consumes one request token. All queries executed via the JupiterOne public API count towards the rate limit. This count includes user-initiated application queries (such as search and J1 Insights) _and_ queries via the JupiterOne public API. You should incorporate retry with backoff in response to rate-limiting responses from the JupiterOne API. #### **Account Rate Limit for J1QL Queries** - Default limit: 120 tokens/120 seconds - Enterprise limit (available on request): 60 tokens/60 seconds - Enterprise customers are eligible for a rate limit increase up to 120 tokens/60 seconds, subject to usage analysis and approval. Contact your J1 TSE to request an increase. --- Source: /api/relationship-mutations # Relationship mutations ## Create Relationship ```graphql mutation CreateRelationship ( $relationshipKey: String! $relationshipType: String! $relationshipClass: String! $fromEntityId: String! $toEntityId: String! $timestamp: Long $properties: JSON ) { createRelationship ( relationshipKey: $relationshipKey, relationshipType: $relationshipType, relationshipClass: $relationshipClass, fromEntityId: $fromEntityId, toEntityId: $toEntityId, timestamp: $timestamp, properties: $properties ) { relationship { _id ... } edge { id toVertexId fromVertexId relationship { _id ... } properties } } } ``` **Variables**: ```json { "relationshipKey": "", "relationshipType": "", "relationshipClass": "", "fromEntityId": "", "toEntityId": "", "timestamp": 1529329792552, "properties": { // Custom properties on the relationship ... } } ``` ## Update Relationship ```graphql mutation UpdateRelationship ( $relationshipId: String! $fromEntityId: String! $toEntityId: String! $timestamp: Long $properties: JSON ) { updateRelationship ( relationshipId: $relationshipId, fromEntityId: $fromEntityId, toEntityId: $toEntityId, timestamp: $timestamp, properties: $properties ) { relationship { _id ... } edge { id toVertexId fromVertexId relationship { _id ... } properties } } } ``` **Variables**: ```json { "relationshipId": "", "fromEntityId": "", "toEntityId": "", "timestamp": 1529329792552, "properties": { // Custom properties to update on the relationship ... } } ``` ## Delete Relationship ```graphql mutation DeleteRelationship ( $relationshipId: String! $fromEntityId: String! $toEntityId: String! $timestamp: Long $hardDelete: Boolean ) { deleteRelationship ( relationshipId: $relationshipId, fromEntityId: $fromEntityId, toEntityId: $toEntityId, timestamp: $timestamp, hardDelete: $hardDelete ) { relationship { _id ... } edge { id toVertexId fromVertexId relationship { _id ... } properties } } } ``` **Variables**: ```json { "relationshipId": "", "fromEntityId": "", "toEntityId": "", "timestamp": 1529329792552, "hardDelete": true } ``` > **CAUTION** > > `hardDelete` is a flag that completely removes all information related to the relationship in a way that is not recoverable. --- Source: /api/sync-jobs/api-reference # Sync jobs API reference This page is the endpoint-by-endpoint reference for the sync jobs API. For a conceptual introduction, the lifecycle, and how to choose between modes, start with the [overview](/api/sync-jobs/overview.md). For mode-specific guidance, see [DIFF](/api/sync-jobs/diff.md), [PATCH](/api/sync-jobs/patch.md), [PUT](/api/sync-jobs/put.md), [CROSS\_SCOPE](/api/sync-jobs/cross-scope.md), and [OVERRIDE](/api/sync-jobs/override.md). All sync job endpoints are mounted under `/persister/synchronization/jobs`. ## Authentication Every request needs: - `Authorization: Bearer ` - `jupiterone-account: ` See [Authentication](/api/authentication.md) for setup. ## Request body properties The `start` endpoint accepts these top-level properties: `source` - `api` for ad-hoc data uploaded by you. - `integration-external` for custom integrations. For setting up a custom integration that uses this source, see [Integration Development](/integrations/development/overview.md). `scope` - Any string. Used to group everything in this sync job for the purposes of comparison on finalize. - Required when `syncMode` is `DIFF`. - Can only be used when `source` is `api`. `syncMode` - `DIFF` (default): replaces the full dataset in scope. See [DIFF](/api/sync-jobs/diff.md). - `PATCH`: updates existing entities only; never creates or deletes. See [PATCH](/api/sync-jobs/patch.md). - `PUT`: creates and updates entities; never deletes. Enabled per account — see [PUT](/api/sync-jobs/put.md). Only available to `integration-managed` and `integration-external` sources. - `CROSS_SCOPE`: relationships between entities in different scopes. See [CROSS\_SCOPE](/api/sync-jobs/cross-scope.md). - `OVERRIDE`: pins property values on managed-integration entities. See [OVERRIDE](/api/sync-jobs/override.md). `integrationInstanceId` - Required when referencing a custom integration (when `source` is `integration-external`). ### Request flags `ignoreDuplicates` - Instructs the system not to throw an error if there are graph objects with duplicate keys. The latest object wins. > **INFO** > > The `CREATE_OR_UPDATE` mode is deprecated and no longer functions. ## Validation The synchronization API performs comprehensive validation on all uploaded data. The required fields depend on the sync mode; see each mode's page for the full list. ### Property constraints Custom properties: - Cannot start with underscore (`_`) — these are reserved for system properties. - Must be one of: `string`, `boolean`, `number`, `null`, or a homogenous array of one of those types. Invalid values: - Mixed-type arrays (e.g., `["string", 123, true]`). - Nested objects (except `_rawData`). - `undefined`. ### Mapped relationships Mapped relationships (used when one of the related entities isn't directly known) require: - `_key`, `_type`, `_class`. - `_mapping` object with: - `sourceEntityKey` — required, the key of the source entity. - `targetFilterKeys` — required, array of arrays for filtering target entities. - `targetEntity` — required, object describing the target entity. - `skipTargetCreation` — optional boolean. - `relationshipDirection` — optional, `"FORWARD"` or `"REVERSE"`. ### Upload size constraints Each upload request must contain at least one entity or one relationship. Both arrays can be present in the same request (mode permitting). ### Common validation errors | Error | Cause | Fix | | --- | --- | --- | | `Missing JupiterOne-Account header` | Required header not provided. | Include `jupiterone-account`. | | `/entities/0/_key is required` | Missing required field. | Add `_key` (required by DIFF). | | `/entities/0 (entity key: "key-1") has invalid property name '_internal'` | Property name starts with `_`. | Rename without the leading underscore. | | `/entities/0/_class (entity key: "key-1") has invalid type. Valid types are string or array of strings.` | Invalid `_class` type. | Use a string or array of strings. | | `/entities/0/_key: maximum length exceeded` | Field exceeds character limit. | Shorten `_key` to ≤ 7000 characters. | | `Relationships are not allowed in PATCH jobs` | Relationships uploaded in PATCH mode. | Use [DIFF](/api/sync-jobs/diff.md) or [CROSS\_SCOPE](/api/sync-jobs/cross-scope.md). | | `Relationship uploads are not allowed for OVERRIDE sync jobs` | Relationships uploaded in OVERRIDE mode. | OVERRIDE only accepts entities. | | `OVERRIDE sync jobs are limited to 10000 entities per job` | Per-job entity cap exceeded. | Split across multiple sync jobs. | | `OVERRIDE sync mode is not enabled for this account` | Account not on the OVERRIDE allowlist. | Contact JupiterOne support. | | `PUT sync mode is not enabled for this account` | Account not on the PUT allowlist. | Contact JupiterOne support — see [Requesting access](/api/sync-jobs/put.md#requesting-access). | | `entities must have minimum 1 item` | Empty entities array. | Include at least one entity, or omit the array. | ## Endpoints ### Start a synchronization job ```text POST /persister/synchronization/jobs ``` Request: ```json { "source": "api", "syncMode": "DIFF", "scope": "my-sync-job" } ``` Or with a custom integration source: ```json { "source": "integration-managed", "integrationInstanceId": "5465397d-8491-4a12-806a-04792839abe3" } ``` Response: ```json { "job": { "source": "api", "scope": "my-sync-job", "id": "f445397d-8491-4a12-806a-04792839abe3", "status": "AWAITING_UPLOADS", "startTimestamp": 1586915139427, "numEntitiesUploaded": 0, "numRelationshipsUploaded": 0, "numMappedRelationshipsUploaded": 0 } } ``` ### Get status of a synchronization job ```text GET /persister/synchronization/jobs/{jobId} ``` Response: ```json { "job": { "source": "api", "scope": "my-sync-job", "id": "f445397d-8491-4a12-806a-04792839abe3", "status": "AWAITING_UPLOADS", "startTimestamp": 1586915139427, "numEntitiesUploaded": 0, "numRelationshipsUploaded": 0, "numMappedRelationshipsUploaded": 0 } } ``` The response carries running counters of the data uploaded so far in this job: total entities, total relationships, and total mapped relationships. After [finalize](#finalize-a-synchronization-job) completes, these are the final totals applied to the graph. ### Upload a batch of entities and/or relationships The upload endpoints accept `application/json` only. Send the body with `Content-Type: application/json`. Requests may be `gzip`\- or `brotli`\-compressed. ```text POST /persister/synchronization/jobs/{jobId}/upload ``` ```json { "entities": [ { "_key": "1", "_class": "DataStore", "_type": "fake_entity", "displayName": "my_datastore" }, { "_key": "2", "_class": "Database", "_type": "fake_entity", "displayName": "my_database" } ], "relationships": [ { "_key": "a", "_type": "fake_relationship", "_class": "IS", "_fromEntityKey": "1", "_toEntityKey": "2" } ] } ``` ### Upload entities only ```text POST /persister/synchronization/jobs/{jobId}/entities ``` ```json { "entities": [ { "_key": "1", "_type": "fake_entity" } ] } ``` ### Upload relationships only ```text POST /persister/synchronization/jobs/{jobId}/relationships ``` ```json { "relationships": [ { "_key": "a", "_type": "fake_relationship", "_class": "HAS", "_fromEntityKey": "1", "_toEntityKey": "2" } ] } ``` ### Finalize a synchronization job ```text POST /persister/synchronization/jobs/{jobId}/finalize ``` Finalize is asynchronous. The response confirms the job has entered finalization; it does not wait for the graph to be updated. ```json { "job": { "id": "f445397d-8491-4a12-806a-04792839abe3", "status": "FINALIZE_PENDING" } } ``` Poll [get status](#get-status-of-a-synchronization-job) until `status` is `FINISHED` (or terminal: `ABORTED`, `FAILED`, `ERROR`). ## See also - [Sync jobs overview](/api/sync-jobs/overview.md) — concepts and decision guide. - [DIFF](/api/sync-jobs/diff.md), [PATCH](/api/sync-jobs/patch.md), [PUT](/api/sync-jobs/put.md), [CROSS\_SCOPE](/api/sync-jobs/cross-scope.md), [OVERRIDE](/api/sync-jobs/override.md) — per-mode guidance and scenarios. - [Creating relationships between entities](/features/assets/relationships-across-scopes.md). --- Source: /api/sync-jobs/cross-scope # CROSS\_SCOPE sync mode `CROSS_SCOPE` exists to solve one specific problem: connecting entities that live in different scopes. Each managed integration owns its own scope, so a relationship between, say, an Okta user and a Jamf laptop can't be created by either integration on its own — neither side owns both the from and to entities. `CROSS_SCOPE` is the bridge. It accepts only relationships, requires you to label both the from and to entities with their respective scopes, and never creates or deletes entities. ## When to use CROSS\_SCOPE - Both the from and to entities of the relationship already exist in the graph, sourced from different integrations or sync jobs. - You only need to create relationships, not entities. - The relationships can change over time, and you want a single sync job that owns them. If the entities in question are in the same scope, use [`DIFF`](/api/sync-jobs/diff.md) or [`PATCH`](/api/sync-jobs/patch.md). If you also need to create entities, use the appropriate mode for the scope that owns them and let `CROSS_SCOPE` handle the cross-cutting edges separately. ## Example use cases ### Okta users to Jamf laptops You want to ask "show me every laptop assigned to a member of the SRE Okta group." Okta produces `User` entities in the Okta scope; Jamf produces `Device` entities in the Jamf scope. Neither integration produces the `OWNS` edge between them. - **Scope**: `okta-jamf-ownership` - **Mode**: `CROSS_SCOPE` - **Why CROSS\_SCOPE**: The relationship spans two integrations. You own the mapping (probably from a separate inventory system), so you push only the edges. ```json POST /persister/synchronization/jobs { "source": "api", "syncMode": "CROSS_SCOPE", "scope": "okta-jamf-ownership" } ``` POST /persister/synchronization/jobs/{jobId}/upload ```json { "relationships": [ { "_key": "okta-user:alice|owns|jamf-device:laptop-001", "_type": "user_owns_device", "_class": "OWNS", "_fromEntityKey": "okta-user:alice", "_toEntityKey": "jamf-device:laptop-001", "_fromEntityScope": "okta-instance-id", "_toEntityScope": "jamf-instance-id" } ] } ``` ### GitHub repositories to deployed AWS resources You want to query "for this S3 bucket, which repository deploys it?" The AWS integration produces the bucket. The GitHub integration produces the repo. Your CI/CD metadata maps deployments to repos. - **Scope**: `repo-deployment-edges` - **Mode**: `CROSS_SCOPE` - **Why CROSS\_SCOPE**: The from and to entities come from different integrations. The mapping changes when teams move services between repos, so you re-run this sync job whenever your deployment manifests change. ### IAM roles to the applications that assume them You want to track which applications (modeled in your custom CMDB scope) assume which AWS IAM roles (in the AWS scope). This drives blast-radius queries during incident response. - **Scope**: `app-iam-assumption` - **Mode**: `CROSS_SCOPE` ## Restrictions - **Entities are rejected.** CROSS\_SCOPE only accepts relationships. The from and to entities must already exist in the graph from another sync job or integration. - **The related entities must live outside the sync job's scope.** Neither `_fromEntityScope` nor `_toEntityScope` may equal the sync job's `scope`. The two entity scopes can equal each other (for example, two entities from the same AWS integration linked by an external mapping) — the constraint is only that neither may match the CROSS\_SCOPE job's own scope. If both entities belong to the sync job's scope, write that relationship from the sync job that owns the scope instead. - **`source` must be `api`.** ## Required relationship fields In addition to the standard relationship fields, CROSS\_SCOPE relationships need: | Property | Type | Description | | --- | --- | --- | | `_fromEntityScope` | `string` | Scope identifier of the source entity. For managed integrations, this is the `_integrationInstanceId`. | | `_toEntityScope` | `string` | Scope identifier of the target entity. | The from and to entities can be referenced by either `_fromEntityKey`/`_toEntityKey` or `_fromEntityId`/`_toEntityId` — whichever you have available. ## Example: CROSS\_SCOPE sync job POST /persister/synchronization/jobs ```json { "source": "api", "syncMode": "CROSS_SCOPE", "scope": "repo-deployment-edges" } ``` POST /persister/synchronization/jobs/{jobId}/upload ```json { "relationships": [ { "_key": "github-repo:platform-api|deploys|s3-bucket:platform-assets", "_type": "repo_deploys_bucket", "_class": "DEPLOYS", "_fromEntityKey": "github-repo:platform-api", "_toEntityKey": "s3-bucket:platform-assets", "_fromEntityScope": "github-instance-id", "_toEntityScope": "aws-instance-id" } ] } ``` ```text POST /persister/synchronization/jobs/{jobId}/finalize ``` ## Operational notes - **The entities must exist at finalize time.** If either entity is missing or has been soft-deleted, the relationship is not created. - **CROSS\_SCOPE behaves like DIFF for its own scope.** Relationships you previously created in this scope and don't include in the new upload are deleted. Use a stable scope so your edge set reconciles cleanly. - **One CROSS\_SCOPE job per logical mapping.** Putting unrelated cross-scope edge sets in the same scope mixes their lifecycles. ## Common errors | Error | Cause | Fix | | --- | --- | --- | | Entities cannot be uploaded in CROSS\_SCOPE mode | Tried to upload entities. | Create entities in their owning scope; use CROSS\_SCOPE only for edges. | | Same-scope relationships rejected | `_fromEntityScope` equals `_toEntityScope`. | Use the owning scope's sync job for these edges. | | Relationship missing after finalize | An entity referenced by the relationship did not exist (or was soft-deleted). | Confirm both entities are in the graph; check their `_id`/`_key` and scope. | See the [API reference](/api/sync-jobs/api-reference.md) for the complete error table. --- Source: /api/sync-jobs/diff # DIFF sync mode `DIFF` is the default sync mode. On finalize, the persister treats your upload as the complete state of the scope: anything that existed in the scope last time and is missing from this upload is deleted. This is the right mode when you control the source of truth and want missing rows to mean "this no longer exists." It is the wrong mode when you only want to add or update part of the data — for that, see [`PATCH`](/api/sync-jobs/patch.md) for partial updates in your own scope, or [`OVERRIDE`](/api/sync-jobs/override.md) for persistent partial updates on managed-integration entities. ## When to use DIFF - You own the full dataset and re-upload it on a schedule. - You want stale entities to disappear automatically when they fall off the source. - Both entities and relationships are in scope. - You can include the entire dataset in a single sync job (chunked across multiple uploads, but one finalize). ## Example use cases ### Nightly vulnerability scanner output Your team runs an internal vulnerability scanner every night and pushes the findings into JupiterOne so analysts can pivot from finding to affected asset in J1QL. - **Scope**: `internal-vuln-scanner` - **Mode**: `DIFF` - **Why DIFF**: When a finding is remediated and stops appearing in the report, you want it gone from the graph automatically — no janitorial PATCH-and-delete needed. ```json POST /persister/synchronization/jobs { "source": "api", "syncMode": "DIFF", "scope": "internal-vuln-scanner" } ``` Each entity is a finding; relationships connect findings to the assets they affect. ### Mirroring an internal CMDB You maintain a system of record outside JupiterOne — say, an internal asset CMDB — and want it reflected as graph entities so your queries can join CMDB context to integration-sourced data. - **Scope**: `cmdb-assets` - **Mode**: `DIFF` - **Why DIFF**: Decommissioned assets disappear from the CMDB, and you want them to disappear from the graph the same day. ### HRIS mirror for `Person` entities You sync your HRIS so departures, role changes, and new hires flow into the graph as `Person` entities. - **Scope**: `hris-people` - **Mode**: `DIFF` - **Why DIFF**: When someone leaves, the next sync drops them from the upload and the graph reconciles cleanly. ## Required entity fields Every entity in a `DIFF` upload needs: - `_key` — unique within the scope. - `_type` — your entity type, in `snake_case`. - `_class` — JupiterOne class (string or array of strings, max 5 items). ## Required relationship fields Standard relationships: - `_key`, `_type`, `_class`, `_fromEntityKey`, `_toEntityKey`. Mapped relationships (for connecting to entities you don't own in this scope) require `_mapping` instead of `_fromEntityKey`/`_toEntityKey`. See the [API reference](/api/sync-jobs/api-reference.md) for the mapped-relationship shape. > **NOTE** > > `DIFF` is the only sync mode that writes mapped relationships to the graph. `PATCH`, `CROSS_SCOPE`, and `OVERRIDE` ignore mapped relationships in the upload payload. > **WARNING** > > In `DIFF` mode, do **not** use `_fromEntityId` or `_toEntityId` to point at entities outside the scope. Those fields are rejected by `DIFF`. Use mapped relationships, or switch to [`CROSS_SCOPE`](/api/sync-jobs/cross-scope.md) if you only need cross-scope edges. ## Example: full DIFF sync job POST /persister/synchronization/jobs ```json { "source": "api", "syncMode": "DIFF", "scope": "internal-vuln-scanner" } ``` Response: ```json { "job": { "id": "f445397d-8491-4a12-806a-04792839abe3", "scope": "internal-vuln-scanner", "status": "AWAITING_UPLOADS", "numEntitiesUploaded": 0 } } ``` Upload entities and relationships in one call: POST /persister/synchronization/jobs/{jobId}/upload ```json { "entities": [ { "_key": "finding:CVE-2025-1234:host-42", "_type": "vuln_finding", "_class": "Finding", "severity": "high", "cve": "CVE-2025-1234" }, { "_key": "host:host-42", "_type": "internal_host", "_class": "Host", "displayName": "host-42" } ], "relationships": [ { "_key": "finding:CVE-2025-1234:host-42|affects|host:host-42", "_type": "finding_affects_host", "_class": "AFFECTS", "_fromEntityKey": "finding:CVE-2025-1234:host-42", "_toEntityKey": "host:host-42" } ] } ``` Finalize: ```text POST /persister/synchronization/jobs/{jobId}/finalize ``` After finalize, anything previously in `internal-vuln-scanner` that wasn't in this upload is deleted. ## Operational notes - **Always include the full dataset.** A partial DIFF upload deletes everything you left out. - **Stable `_key`s matter.** If your `_key` strategy changes between runs, every entity will look new (created + deleted) and downstream queries will see churn. - **Chunk across uploads, finalize once.** A single sync job can accept many upload calls before finalize. Use this to handle large datasets without holding the whole payload in memory. - **For partial updates, use [`PATCH`](/api/sync-jobs/patch.md) instead.** PATCH is designed for cases where you don't have the full dataset. ## Common errors | Error | Cause | Fix | | --- | --- | --- | | `/entities/0/_key is required` | Missing `_key` in DIFF upload. | Add `_key` (DIFF requires it). | | `Relationships are not allowed in PATCH jobs` | You meant to use DIFF but started a PATCH job. | Start a DIFF job. | | Unintended deletions after a small upload | Partial dataset uploaded to the same scope. | Always include the full dataset, or split into multiple scopes. | See the [API reference](/api/sync-jobs/api-reference.md) for the complete error table. --- Source: /api/sync-jobs/override # OVERRIDE sync mode `OVERRIDE` is the answer to a recurring frustration: a managed integration owns an entity, you set a custom property on that entity, and the next time the integration runs, your property gets wiped out. `OVERRIDE` fixes that. When you push an `OVERRIDE` for a property on an entity, JupiterOne records the override and reapplies it after every subsequent integration sync. Your value sticks. > **WARNING** > > OVERRIDE is a powerful tool — it lets you pin custom values onto entities owned by a managed integration so those values survive every future integration sync. That's exactly what makes it useful, and it's also why it's worth using deliberately. > > Once you set a property with OVERRIDE, the source integration won't reconcile or correct it for you, so you become the source of truth for that value. That matters most when overrides touch properties that drive security decisions — things like `riskLevel`, `complianceTier`, or `publicAccessApproved` — because what you set is what alert rules, queries, and the people responding to them will see. A stale or incorrect override can quietly hide the integration's real view and lead to missed alerts or a misleading picture of risk. > > This is why we gate access to OVERRIDE. Contact JupiterOne support to request access for your account. ## When to use OVERRIDE - The entity is managed by an integration (you can see `_integrationInstanceId` on it). - You want a custom property to persist across that integration's future runs. - You only need to set entity properties — relationships are not allowed. - You are working with up to 10,000 entities per sync job. Larger updates need to be split. If the entity isn't owned by an integration, or you don't need persistence across integration runs, [`PATCH`](/api/sync-jobs/patch.md) is simpler. ## Example use cases ### Criticality tiers on managed repositories Your platform team labels every GitHub repo with a `criticality` tier (`tier-1`, `tier-2`, `tier-3`) used by your incident response runbook. The labels live in an internal spreadsheet, not GitHub topics. - **Scope**: `repo-criticality` - **Mode**: `OVERRIDE` - **Why OVERRIDE**: GitHub doesn't store this attribute, so the GitHub integration never produces it — but it also re-syncs the entity completely each run, which would clear a property set with PATCH. OVERRIDE makes the criticality stick. ### Compliance scope on managed devices Your compliance team determines which laptops are in scope for SOC 2 evidence collection. The Jamf integration provides device entities; your team pushes `complianceScope: "soc2"` onto the relevant subset. - **Scope**: `device-compliance-scope` - **Mode**: `OVERRIDE` ## Restrictions - **Entity-only.** Relationships are rejected with `Relationship uploads are not allowed for OVERRIDE sync jobs`. - **`_id` is required on every entity.** The entity must already exist; entries whose `_id` does not match a current entity are silently skipped on finalize. - **10,000 entities maximum per sync job.** Larger updates need to be split into separate sync jobs (different scopes). - **`source` must be `api`.** - **New sync mode.** OVERRIDE is in early release. Contact JupiterOne support to enable it for your account. ## Required entity fields | Property | Type | Description | | --- | --- | --- | | `_id` | `string` | **Required.** The JupiterOne `_id` of the existing entity to override. Entries with no matching entity are silently skipped. | Any custom property keys (those without a leading `_`) included alongside `_id` are applied as overrides. Properties starting with `_` are reserved for system metadata and ignored. ## Updating and removing overrides Overrides are tracked per `(entity, scope)` pair. To change what's overridden: - **Update values for an entity**: re-upload the entity with the new property values to the same scope. Properties not included in the new upload are removed from that scope's overrides on that entity. - **Stop overriding a specific entity**: re-upload the scope without that entity included. Its overrides for that scope are dropped on the next finalize. - **Clear all overrides for a scope**: start a new `OVERRIDE` sync job with the same scope, finalize without uploading any entities. Every override registered in that scope is removed. - **Restore the integration's value immediately**: after clearing the override, re-run the source integration. The next integration sync writes its own value. ## Precedence when multiple scopes override the same property Two `OVERRIDE` sync jobs in different scopes can target the same entity. The rule is **the override that most recently changed the value wins, per property**: - If scope `A` (created Monday) overrides `criticality` on entity `X`, and scope `B` (created Tuesday) also overrides `criticality` on entity `X`, the value from scope `B` takes effect — it is the more recent override. Scope `A`'s value is recorded but does not apply for that property while `B`'s override exists. - This is evaluated **per property**, not per scope. If scope `B` overrides a _different_ property on the same entity (say, `owner`), each property is resolved independently — `B` wins `criticality`, and whichever scope most recently changed `owner` wins that one. - If the winning scope's override is removed, the property falls back to the **next most recent** remaining override for that property, and only when no scope overrides it at all does it return to the integration's value. This behavior is deliberate: the override that most recently changed a property takes effect immediately rather than being silently blocked by an older scope. To take over a property, change its value in another scope; to hand it back, remove the override that currently wins. > **NOTE** > > Prior to this change, precedence was **oldest scope wins** — the first scope to override a property held it until removed, and later overrides were silently ignored. That could leave a stale scope pinning a value no live override could update. Precedence is now recency-based. If you relied on the old rule, review scopes that override the same property on the same entity. ### Example: newest override wins Repository `X` is managed by the GitHub integration. Two teams each run an `OVERRIDE` scope that sets `criticality` on it. | Step | Action | `criticality` on `X` | Why | | --- | --- | --- | --- | | 1 | GitHub integration syncs `X`; no override yet | _(integration value)_ | Nothing overrides `criticality`. | | 2 | Scope `repo-criticality` overrides `criticality = tier-3` | `tier-3` | Only override present. | | 3 | Scope `ir-priority` overrides `criticality = tier-1` | **`tier-1`** | `ir-priority` changed the value more recently, so it wins. | | 4 | GitHub integration syncs `X` again | `tier-1` | Overrides are re-applied after every sync; the newest still wins. | | 5 | `ir-priority` removes its override (re-finalize without `X`) | `tier-3` | Falls back to the next most recent remaining override — `repo-criticality`. | | 6 | `repo-criticality` removes its override too | _(integration value)_ | No scope overrides `criticality`; it returns to what GitHub provides. | The key point is step 3: the newer scope takes the property immediately — under the old oldest-wins rule, `repo-criticality` (step 2) would have kept `tier-3` and `ir-priority` would have been ignored. Steps 5–6 show the reverse on removal: the property falls back through remaining overrides by recency, and only returns to the integration value when nothing overrides it. ## OVERRIDE vs the entity mutation API The GraphQL [`updateEntity`](/api/entity-mutations.md#updating-entity) mutation also sets properties that persist across managed-integration syncs. The two tools are complementary, not interchangeable: - **`OVERRIDE`** is a sync job. You group up to 10,000 entities under a `scope`, push them in one batch, and finalize. The scope is the unit of management — you update or remove the whole set together. - **`updateEntity`** is a single-entity mutation over GraphQL. It's the right tool for "I just need to set `criticality = tier-1` on this one repository" or scripts that walk a small list of entities. There's no scope and no finalize step. If both an `OVERRIDE` sync job and an `updateEntity` call have set the same property on the same entity, the one that **most recently changed the value** takes precedence — they are resolved by recency, the same way two OVERRIDE scopes are. Removing the winner restores the other channel's value, and removing both restores the integration's value. > **NOTE** > > This changed alongside the precedence rule above. Previously the `OVERRIDE`\-supplied value always took precedence over `updateEntity`. Overrides applied by a **tagging rule** are a separate case and still outrank both `OVERRIDE` sync jobs and `updateEntity` regardless of recency. In practice, pick one channel per property to avoid surprises. Use `OVERRIDE` when you have a list and want it managed as a unit; use `updateEntity` when you don't. ## Edge case: PATCH followed by OVERRIDE If a `PATCH` sync job previously set the same property on an entity, and you later create an `OVERRIDE` for that property and then remove the override, the value visible immediately after removal may be the old PATCH value rather than the integration's value. The next managed-integration run reconciles this and restores the integration's value. In practice, this rarely matters — but if you're switching a property from PATCH to OVERRIDE management, expect a brief window after override removal where the property shows the PATCH value. ## Example: full OVERRIDE sync job POST /persister/synchronization/jobs ```json { "source": "api", "syncMode": "OVERRIDE", "scope": "repo-criticality" } ``` POST /persister/synchronization/jobs/{jobId}/upload ```json { "entities": [ { "_id": "b75aad77-89eb-5ce6-939c-86322517af6b", "criticality": "tier-1" }, { "_id": "da1c53ef-a543-5daa-8206-37e652c795cf", "criticality": "tier-2" } ] } ``` ```text POST /persister/synchronization/jobs/{jobId}/finalize ``` After finalize, the two repositories carry the `criticality` property, and they will continue to do so after every GitHub integration sync. ## Operational notes - **Find a target entity's `_id` with J1QL.** For example: `FIND github_repo WITH name='platform-api' RETURN _id`. - **Reuse stable scopes.** Treat each scope as a long-lived label for one logical override set (`repo-criticality`, not `override-2026-04-28`). Reusing the scope is how you update or remove overrides cleanly. - **OVERRIDE does not create entities.** If `_id` doesn't match an existing entity, that row is silently skipped — no error, no creation. - **Custom property names cannot start with `_`.** Those are reserved for system metadata. ## Common errors | Error | Cause | Fix | | --- | --- | --- | | `OVERRIDE sync mode is not enabled for this account` | Account is not on the allowlist. | Contact JupiterOne support to request access. | | `Relationship uploads are not allowed for OVERRIDE sync jobs` | Uploaded relationships to an OVERRIDE job. | OVERRIDE only accepts entities. | | `OVERRIDE sync jobs are limited to 10000 entities per job` | Upload exceeds the per-job entity cap. | Split across multiple sync jobs. | | Entity property not visible after finalize | `_id` did not match any existing entity. | Confirm the `_id` exists; OVERRIDE silently skips unknown `_id`s. | See the [API reference](/api/sync-jobs/api-reference.md) for the complete error table. --- Source: /api/sync-jobs/overview # Overview Sync jobs are how data enters JupiterOne from the API. Whether you are pushing a nightly inventory from an internal CMDB, layering risk scores onto entities owned by a managed integration, connecting assets that live in different integrations, or pinning a custom value so it survives the next integration run — each of those flows is a sync job. A sync job groups a batch of changes under a `scope`, runs a comparison against the existing data in that scope when finalized, and applies the result to the graph. The behavior of that comparison depends on the sync mode you pick. ## The five sync modes | Mode | What finalize does | Entities | Relationships | Typical use | | --- | --- | --- | --- | --- | | [`DIFF`](/api/sync-jobs/diff.md) | Replaces the full dataset in scope. Anything not in the upload is deleted. | yes | yes | Full inventory refresh from a custom source. | | [`PATCH`](/api/sync-jobs/patch.md) | Updates properties on existing entities. Nothing is created or deleted. | yes (existing only) | no | Enriching existing entities with extra properties. | | [`PUT`](/api/sync-jobs/put.md) | Creates and updates entities. Nothing is deleted. Requires enablement per account. | yes | yes | Sources that only expose part of the dataset, such as a rolling window. | | [`CROSS_SCOPE`](/api/sync-jobs/cross-scope.md) | Adds/updates relationships whose from and to entities live in different scopes. | no | yes | Linking assets across integrations. | | [`OVERRIDE`](/api/sync-jobs/override.md) | Pins property values on managed-integration entities so they persist across future integration syncs. | yes (existing only) | no | Preserving customer-applied values that an integration would otherwise overwrite. | ## Choose a mode Use the questions below in order. The first "yes" picks your mode. 1. **Are you setting custom values on entities that a managed integration owns, and you need those values to survive the next integration run?** - For a batch of entities under a stable scope → [`OVERRIDE`](/api/sync-jobs/override.md) - For one entity (or a handful of entities, scripted one at a time) → use the [`updateEntity`](/api/entity-mutations.md#updating-entity) GraphQL mutation instead — it's a per-entity persistent edit, no sync job needed. 2. **Are you only creating relationships between entities that live in different scopes (different integrations or different sources)?** → [`CROSS_SCOPE`](/api/sync-jobs/cross-scope.md) 3. **Do you want to add or update properties on existing entities without ever deleting anything, and you accept that the next managed-integration sync will reset the values?** → [`PATCH`](/api/sync-jobs/patch.md) 4. **Can your source only give you part of the dataset — a rolling window, an event feed, one slice per run — so that missing records don't mean "deleted"?** → [`PUT`](/api/sync-jobs/put.md) (enabled per account; see [Requesting access](/api/sync-jobs/put.md#requesting-access)) 5. **Are you the source of truth for this set of data and want the upload to fully replace what was there last time?** → [`DIFF`](/api/sync-jobs/diff.md) > **TIP** > > Sync jobs are batch-oriented: one scope, one finalize, many entities. The GraphQL [`updateEntity`](/api/entity-mutations.md#updating-entity) mutation is per-entity and gives you the same persistence guarantee as `OVERRIDE` for individual edits. Reach for it when you don't need a scope to manage a set together. ## Lifecycle of a sync job Every sync job, regardless of mode, follows the same shape: 1. **Start** — `POST /persister/synchronization/jobs` creates the job and returns an ID. The job begins in `AWAITING_UPLOADS`. 2. **Upload** — One or more upload calls push entities and/or relationships into the job. The persister tracks counters as data arrives but does not yet apply changes to the graph. 3. **Finalize** — `POST /persister/synchronization/jobs/{id}/finalize` triggers the comparison. The persister reads the new state, compares it against existing data in the scope, and applies creates, updates, and (depending on the mode) deletes. 4. **Poll** — `GET /persister/synchronization/jobs/{id}` returns status. In AWS environments, finalize is asynchronous: status moves through `FINALIZE_PENDING` to `FINISHED`. See the [API reference](/api/sync-jobs/api-reference.md) for endpoints and payloads. ## Scopes A `scope` is a string label that groups everything in a sync job together for the purposes of comparison. Two sync jobs with the same `scope` and the same mode operate on the same logical dataset — the second finalize sees the first job's results as "the previous state." A few rules of thumb: - Use a stable, descriptive `scope` for each pipeline you own (`vuln-scanner-nightly`, not `upload-2026-04-28`). If your scope name changes between runs, the previous data won't be reconciled and may linger. - Choose a `scope` granularity that matches how you want deletions to behave. A single scope across all of your custom data means dropping a row from your source removes it from the graph everywhere. - For [`CROSS_SCOPE`](/api/sync-jobs/cross-scope.md) and [`OVERRIDE`](/api/sync-jobs/override.md), `scope` works the same way but the mode-specific pages cover the wrinkles. ## Use case map A handful of common patterns, with the mode each one calls for: | Scenario | Mode | | --- | --- | | Push the output of an internal vulnerability scanner so stale findings disappear when they no longer appear in the report. | [`DIFF`](/api/sync-jobs/diff.md) | | Mirror an HRIS into the graph as `Person` entities, deleting people who left the company. | [`DIFF`](/api/sync-jobs/diff.md) | | Ingest from a source API that only returns the last seven days of records, so anything older must not be treated as deleted. | [`PUT`](/api/sync-jobs/put.md) | | Push an append-only event feed in batches, where each batch is new data rather than a full snapshot. | [`PUT`](/api/sync-jobs/put.md) | | Refresh a `lastErrorCount` on managed-integration entities every five minutes between hourly integration syncs (accepting that each integration sync resets the value). | [`PATCH`](/api/sync-jobs/patch.md) | | Update a `lastGoogleLoginAt` property hourly on `Person` entities you already pushed via a custom HRIS DIFF. | [`PATCH`](/api/sync-jobs/patch.md) | | Connect Okta `User` entities to the laptops they own in Jamf so you can query "show me every laptop assigned to a member of the SRE group." | [`CROSS_SCOPE`](/api/sync-jobs/cross-scope.md) | | Link GitHub repositories to the AWS resources they deploy, where the integrations don't already produce that relationship. | [`CROSS_SCOPE`](/api/sync-jobs/cross-scope.md) | | Tag a managed Jamf device with `complianceScope: "soc2"` so the value survives every Jamf integration run. | [`OVERRIDE`](/api/sync-jobs/override.md) | | Set a `criticality` value on a managed GitHub repository entity so it stays put even after the GitHub integration re-syncs. | [`OVERRIDE`](/api/sync-jobs/override.md) for a batch; [`updateEntity`](/api/entity-mutations.md#updating-entity) for a single repository. | | Pin a one-off custom property on a single managed entity (e.g. `betaForceDeviceUnificationKey` on two specific hosts) so the value survives every managed integration sync. | [`updateEntity`](/api/entity-mutations.md#updating-entity) | ## Validation, limits, and errors Validation rules and error messages are consistent across modes. The [API reference](/api/sync-jobs/api-reference.md) lists every error you can hit and how to resolve it. Mode-specific limits (for example, the 10,000-entity cap on `OVERRIDE`) are called out on the mode pages. ## Authentication Every sync job request needs: - An API key in the `Authorization: Bearer ` header. - The target account in the `jupiterone-account` header. See [Authentication](/api/authentication.md) for full setup. ## Next steps - Pick a mode using the table or decision questions above. - Read the mode page for full request shape, scenarios, and constraints. - Skim the [API reference](/api/sync-jobs/api-reference.md) for the endpoint list. --- Source: /api/sync-jobs/patch # PATCH sync mode `PATCH` updates existing entities. It never creates new entities, and unlike [`DIFF`](/api/sync-jobs/diff.md), it never deletes — anything not included in your upload is left alone. This is the mode for layering data onto entities that already exist in the graph, whether they came from a managed integration or a different sync job. A PATCH upload is additive: properties you include are written, properties you don't include are untouched. ## When to use PATCH - You are enriching existing entities, not replacing a dataset. - Every entity in your upload already exists in the graph. PATCH cannot create entities — a patch targeting an entity that doesn't exist is skipped. - You don't have (or don't want to compute) the full set of entities — only the ones you have new data for. - You only need to change entity properties; PATCH does not accept relationships. - The properties you're setting do **not** need to survive a managed-integration re-sync. If they do, use [`OVERRIDE`](/api/sync-jobs/override.md) instead. ## Example use cases PATCH is the right mode in two situations: you're refreshing data on managed-integration entities **faster than that integration's own DIFF cycle** (and you accept that each integration run will reset to the integration's truth), or you're updating entities in a **custom dataset** that no managed integration owns. If you need values to _survive_ a managed integration's next sync, use [`OVERRIDE`](/api/sync-jobs/override.md) instead. ### Higher-frequency updates between managed-integration runs Your AWS integration runs once an hour. Between runs, an internal process polls CloudWatch every five minutes and refreshes a `lastErrorCount` property on `aws_lambda_function` entities so dashboards stay closer to real-time. - **Scope**: `lambda-error-counts` - **Mode**: `PATCH` - **Why PATCH**: You only need the value to live between integration runs. Each AWS sync re-asserts AWS's own state for these entities, and the next CloudWatch push refreshes `lastErrorCount` again. OVERRIDE would be wrong here because you do _not_ want the value to persist across integration syncs. ```json POST /persister/synchronization/jobs { "source": "api", "syncMode": "PATCH", "scope": "lambda-error-counts" } ``` ```json { "entities": [ { "_id": "lambda-fn-123", "lastErrorCount": 4, "lastSampledAt": "2026-04-28T14:05:00Z" }, { "_id": "lambda-fn-456", "lastErrorCount": 0, "lastSampledAt": "2026-04-28T14:05:00Z" } ] } ``` ### Updating a custom dataset you already pushed You maintain a `Person` dataset in JupiterOne by pushing a [`DIFF`](/api/sync-jobs/diff.md) from your HRIS each night. During the day, a separate process updates a `lastGoogleLoginAt` property on those Persons hourly from the Google Workspace audit log. - **Scope**: `google-login-activity` - **Mode**: `PATCH` - **Why PATCH**: No managed integration owns these entities; the only writers are your two custom syncs. PATCH lets the hourly update touch only `lastGoogleLoginAt` without disturbing anything the nightly DIFF set, and there's no integration DIFF to worry about resetting your values. ## Required entity fields PATCH lets you target by either `_id` or `_key`: - **When `scope` is defined**: either `_key` or `_id` is required. - **When `scope` is not defined**: `_id` is required. `_id` is unambiguous globally; `_key` requires the scope context to resolve. You do **not** need to include `_type` or `_class` on a PATCH upload — those are creation-time fields, and PATCH never creates entities. ## Relationships are not allowed PATCH rejects relationships: ```text Relationships are not allowed in PATCH jobs ``` If you need to add relationships, use [`DIFF`](/api/sync-jobs/diff.md) (when you own both entities and the scope) or [`CROSS_SCOPE`](/api/sync-jobs/cross-scope.md) (when the from and to entities live in different scopes). ## PATCH vs OVERRIDE vs the entity mutation API `PATCH`, [`OVERRIDE`](/api/sync-jobs/override.md), and the GraphQL [`updateEntity`](/api/entity-mutations.md#updating-entity) mutation can all write properties onto an existing entity, but they answer different questions about _persistence_: | Tool | Property survives the next managed-integration sync? | Best for | | --- | --- | --- | | `PATCH` sync mode | **No.** PATCH writes the value onto the entity but does not register a persistent override. The next integration sync replaces the entity wholesale, and any PATCH-set property the integration doesn't itself assert is lost. | High-frequency refreshes of entities you own, or short-lived enrichments on managed entities that you actively re-PATCH. | | `OVERRIDE` sync mode | **Yes.** OVERRIDE records the property as a persistent override; it is reapplied after every integration sync. | Bulk overrides across many managed entities (up to 10,000 per sync job) under a stable scope. | | `updateEntity` GraphQL mutation | **Yes.** Properties set via `updateEntity` are recorded as persistent overrides on the target entity and survive every future integration sync. | One-off edits to a single entity, or scripts that touch a small number of entities and don't need to be grouped under a scope. | Pick `PATCH` only when "wiped by the next integration run" is acceptable — usually because you're going to re-PATCH on a tight cadence, or because no managed integration owns the entity. If you need the value to last, use OVERRIDE for batches and `updateEntity` for one-offs. ## Example: PATCH sync job POST /persister/synchronization/jobs ```json { "source": "api", "syncMode": "PATCH", "scope": "google-login-activity" } ``` POST /persister/synchronization/jobs/{jobId}/upload ```json { "entities": [ { "_id": "person-123", "lastGoogleLoginAt": "2026-04-28T14:00:00Z" }, { "_id": "person-456", "lastGoogleLoginAt": "2026-04-28T13:42:00Z" } ] } ``` ```text POST /persister/synchronization/jobs/{jobId}/finalize ``` After finalize, the two persons have updated `lastGoogleLoginAt`. No other persons were affected. No entities or relationships were created or deleted. ## Operational notes - **PATCH never creates entities.** If a targeted entity doesn't exist in the graph, that patch is silently skipped — no error is raised and no entity is created. Create the entity first (via a managed integration or a [`DIFF`](/api/sync-jobs/diff.md) job), then PATCH it. - **PATCH is non-destructive.** Re-running PATCH with no entities is a no-op. - **Setting a property to `null` clears it** for the targeted entity. - **Stale values aren't cleaned up.** If you stop sending a property for an entity, the previous value stays on the entity. To remove it, send the entity with that property set to `null`. - **PATCH does not protect properties from managed integrations.** A PATCH-set value lives on the entity until the source integration's next sync, at which point the entity is rewritten and any PATCH-set property the integration itself doesn't assert is lost. For values that need to survive every integration run, use [`OVERRIDE`](/api/sync-jobs/override.md) (sync-job batches) or the [`updateEntity`](/api/entity-mutations.md#updating-entity) GraphQL mutation (one-offs). ## Common errors | Error | Cause | Fix | | --- | --- | --- | | `Relationships are not allowed in PATCH jobs` | Uploaded relationships to a PATCH job. | Use DIFF or CROSS\_SCOPE for relationships. | | Required either `_id` or `_key` | Neither identifier present. | Include `_id` (preferred) or `_key`. | | Property not visible after finalize | Property starts with `_`. | Custom property names cannot begin with `_`. | | Entity unchanged after finalize, no error | The targeted entity doesn't exist — PATCH does not create entities; non-matching patches are silently skipped. | Create the entity first with [`DIFF`](/api/sync-jobs/diff.md) (or let the owning integration create it), then PATCH. | See the [API reference](/api/sync-jobs/api-reference.md) for the complete error table. --- Source: /api/sync-jobs/put # PUT sync mode `PUT` creates entities that don't exist yet and updates the ones that do. Unlike [`DIFF`](/api/sync-jobs/diff.md), it never deletes: anything that was in the scope last time and is missing from this upload is left exactly as it was. This is the mode for sources that can only show you part of the picture. If your API exposes a rolling window — the last seven days of records, say — `DIFF` would delete everything older on every run, and [`PATCH`](/api/sync-jobs/patch.md) would refuse to create the records that are new. `PUT` is the middle ground: upsert what you have, leave the rest alone. > **INFO** > > `PUT` is enabled per account by JupiterOne. Requests from accounts that aren't enabled are rejected with `PUT sync mode is not enabled for this account`. To have it turned on, [contact JupiterOne support](https://support.jupiterone.io/) with your account ID and a short description of the data source. See [Requesting access](#requesting-access). ## When to use PUT - Your source can't give you the full dataset on every run, so `DIFF`'s delete sweep would remove valid data. - New records appear over time and need to be created, which rules out [`PATCH`](/api/sync-jobs/patch.md). - You are the source of truth for the entities you _do_ send, and you want the upload to win on those. - You accept that records which age out of your source stay in the graph until something else removes them. - You need to upload relationships as well as entities. `PUT` accepts both, including mapped relationships. If your source _can_ produce the full dataset, prefer [`DIFF`](/api/sync-jobs/diff.md) — automatic cleanup of stale data is worth having. ## Example use cases ### A source API with a rolling window Your GRC platform exposes findings through an API that only returns the last seven days of activity. You poll it nightly and push the results into JupiterOne. - **Scope**: the custom integration instance - **Mode**: `PUT` - **Why PUT**: `DIFF` would delete every finding older than a week on the first run, because they aren't in the upload. `PATCH` would keep existing findings up to date but silently skip the ones created since yesterday. `PUT` creates the new findings and refreshes the ones it can still see, and leaves the older history in place. POST /persister/synchronization/jobs ```json { "source": "integration-external", "integrationInstanceId": "d246255c-1530-4fd7-9e99-6c2323402483", "syncMode": "PUT" } ``` POST /persister/synchronization/jobs/{jobId}/upload ```json { "entities": [ { "_key": "grc-finding:2718471", "_type": "grc_finding", "_class": "Finding", "status": "open", "severity": "high", "identifiedOn": "2026-04-17T13:45:53Z" } ] } ``` ### An append-only event feed An internal service emits audit events to a queue. A worker batches them and pushes them into JupiterOne every few minutes. Events are never revised and never deleted at the source. - **Mode**: `PUT` - **Why PUT**: Each batch is genuinely new data. `DIFF` would treat every batch as the complete history and delete everything from the previous batch. ### A slow-moving dataset you only partially refresh You mirror a large asset inventory, but a full export takes hours, so you refresh it in slices — one business unit per run. - **Mode**: `PUT` - **Why PUT**: Each run is a valid partial upload. Under `DIFF`, syncing one business unit would delete the others. ## Requesting access `PUT` is gated per account while it rolls out. To request it, [contact JupiterOne support](https://support.jupiterone.io/) with: - the **account ID** you want it enabled for (each account is enabled separately — a sandbox or POV account and a production account are two requests); - the **data source** you're ingesting and why a rolling window or partial upload means `DIFF` isn't suitable; - whether you'll be uploading **relationships** as well as entities. Enablement is a configuration change on JupiterOne's side, so allow for a normal support turnaround rather than expecting it to be self-serve. Until your account is enabled, starting a `PUT` job returns: ```text PUT sync mode is not enabled for this account ``` Nothing else about the request needs to change once it's enabled — the same payload starts working. ## Required entity fields Every entity in a `PUT` upload needs: - `_key` — unique within the scope. This is what `PUT` matches on to decide between create and update. - `_type` — your entity type, in `snake_case`. - `_class` — JupiterOne class (string or array of strings, max 5 items). These are the same three fields [`DIFF`](/api/sync-jobs/diff.md) requires, and for the same reason: `PUT` creates entities, so it needs enough to build one. > **NOTE** > > `PUT` identifies entities by `_key` only. Unlike [`PATCH`](/api/sync-jobs/patch.md), it does not accept `_id` as an alternative identifier — an upload containing `_id` is rejected. ## Required relationship fields Standard relationships need `_key`, `_type`, `_class`, `_fromEntityKey`, and `_toEntityKey`. Mapped relationships — for connecting to entities you don't own in this scope — need `_mapping` instead of `_fromEntityKey`/`_toEntityKey`. `PUT` writes mapped relationships, the same as [`DIFF`](/api/sync-jobs/diff.md) does. See the [API reference](/api/sync-jobs/api-reference.md) for the mapped-relationship shape. As with entities, relationships are upserted and never deleted. A relationship that stops appearing in your uploads stays in the graph. ## How updates are applied When `PUT` updates an entity that already exists, it writes the properties present in your payload and leaves every other property alone. Properties you stop sending keep their previous values — `PUT` has no way to tell "this property is gone" from "this property wasn't in this batch." Values pinned with [`OVERRIDE`](/api/sync-jobs/override.md) are respected: if a property on the target entity is held by an override, `PUT` will not overwrite it. > **CAUTION** > > Sending a property as `null` does **not** clear it. Null values are stripped from `PUT` uploads before they reach the graph, so the property keeps whatever value it had. (This differs from [`PATCH`](/api/sync-jobs/patch.md), where `null` does clear a property.) > > To remove a property from a `PUT`\-maintained entity, use the [entity mutation API](/api/entity-mutations.md), or run a [`DIFF`](/api/sync-jobs/diff.md) over the scope with the property omitted. ## Example: full PUT sync job POST /persister/synchronization/jobs ```json { "source": "integration-external", "integrationInstanceId": "d246255c-1530-4fd7-9e99-6c2323402483", "syncMode": "PUT" } ``` Response: ```json { "job": { "id": "f445397d-8491-4a12-806a-04792839abe3", "status": "AWAITING_UPLOADS", "syncMode": "PUT", "numEntitiesUploaded": 0 } } ``` Upload entities and relationships: POST /persister/synchronization/jobs/{jobId}/upload ```json { "entities": [ { "_key": "grc-finding:2718471", "_type": "grc_finding", "_class": "Finding", "status": "open", "severity": "high" }, { "_key": "grc-supplier:8891", "_type": "grc_supplier", "_class": "Vendor", "displayName": "Northwind Logistics" } ], "relationships": [ { "_key": "grc-finding:2718471|affects|grc-supplier:8891", "_type": "grc_finding_affects_supplier", "_class": "AFFECTS", "_fromEntityKey": "grc-finding:2718471", "_toEntityKey": "grc-supplier:8891" } ] } ``` Finalize: ```text POST /persister/synchronization/jobs/{jobId}/finalize ``` After finalize, those two entities and the relationship between them exist and are current. Everything else already in the scope is untouched — nothing was deleted. ## Nothing is ever removed This is the point of `PUT`, and it's worth stating plainly: a `PUT` job has no delete step. Records that disappear from your source stay in the graph indefinitely. That's the correct behavior when your source genuinely can't tell you what was removed. It is the wrong behavior if you want stale data cleaned up — in which case use [`DIFF`](/api/sync-jobs/diff.md). If you need to remove entities from a `PUT`\-maintained scope, you have two options: - Run a one-off [`DIFF`](/api/sync-jobs/diff.md) job over the same scope with the complete dataset, which reconciles it in a single pass. - Delete the entities individually through the [entity mutation API](/api/entity-mutations.md). ## Known limitation: property search on updated entities When `PUT` **creates** an entity, the entity is fully indexed and behaves like any other. When `PUT` **updates** an existing entity, the search index and change-detection data for that entity are not recomputed from the merged result — they stay as they were when the entity was created. In practice this means a property-value search may not match a value that was added by a later `PUT` update, even though the property is present on the entity and returned by queries that select it directly. Entities that a managed integration or a [`DIFF`](/api/sync-jobs/diff.md) job also writes are unaffected: those writes refresh the index normally. If property-value search across the full history of an entity matters for your use case, plan on a periodic [`DIFF`](/api/sync-jobs/diff.md) over the scope, or filter on properties in your queries rather than relying on free-text search. This is a current limitation and is expected to change. ## Operational notes - **Partial uploads are safe.** That's the entire premise — send what you have. - **Stable `_key`s matter more than usual.** With no delete sweep, a change in your `_key` strategy doesn't churn the data, it _duplicates_ it: the old entities stay and the new ones are created alongside them. - **Re-running the same upload is a no-op.** `PUT` is idempotent. - **Chunk across uploads, finalize once.** A single sync job accepts many upload calls before finalize. - **`PUT` does not protect properties from managed integrations.** If a managed integration owns the entity, its next sync rewrites the entity and any `PUT`\-set property it doesn't itself assert is lost. Use [`OVERRIDE`](/api/sync-jobs/override.md) for values that must survive integration syncs. ## PUT vs DIFF vs PATCH | | Creates entities | Updates entities | Deletes what's missing | Accepts relationships | | --- | --- | --- | --- | --- | | [`DIFF`](/api/sync-jobs/diff.md) | yes | yes | **yes** | yes | | [`PATCH`](/api/sync-jobs/patch.md) | no | yes | no | no | | `PUT` | yes | yes | **no** | yes | The short version: pick `DIFF` when your upload is the whole truth, `PATCH` when you're only enriching entities that already exist, and `PUT` when you have partial data that includes records nobody has seen before. ## Common errors | Error | Cause | Fix | | --- | --- | --- | | `PUT sync mode is not enabled for this account` | The account isn't on the PUT allowlist. | [Contact support](https://support.jupiterone.io/) to request enablement. See [Requesting access](#requesting-access). | | Validation error naming `_id` | An entity was uploaded with `_id`. | `PUT` identifies entities by `_key`. Remove `_id`. | | `/entities/0/_key is required` | Missing `_key`. | Add `_key` — `PUT` requires it to match create against update. | | Entities linger after they leave your source | Working as designed; `PUT` never deletes. | Run a [`DIFF`](/api/sync-jobs/diff.md) over the scope, or delete via the [entity mutation API](/api/entity-mutations.md). | | A property added by a later update isn't found by property search | The search index isn't recomputed on `PUT` update. | See [Known limitation](#known-limitation-property-search-on-updated-entities). | | A property sent as `null` still has its old value | Nulls are stripped from `PUT` uploads. | Clear it via the [entity mutation API](/api/entity-mutations.md) or a [`DIFF`](/api/sync-jobs/diff.md) over the scope. | See the [API reference](/api/sync-jobs/api-reference.md) for the complete error table. --- Source: /api/validate-optimize-queries # Validate Queries The validate and optimize j1ql endpoints are used to validate j1ql queries. ## Validate queries The validate endpoint takes in an array of queries sent as a json object in the request body. It returns an array of objects containing the query and a boolean flag indicating whether the query is valid or not. ### Sample request ```text POST /j1ql/validate ``` ```json { "queries": [ "Find Person as p that relates to User" ] } ``` ### Sample response ```json [ { "query": "Find Person as p that relates to User", "valid": true } ] ``` --- Source: /data-model/entity-ingestion-labels # Entity ingestion labels JupiterOne's standardized entity labels indicate how an entity is ingested into the graph. The Metadata tab in J1 Assets provides this information, and it can be used to filter queries with the `_source` property in a `WITH` clause. ## Ingestion labels The labels for ingestion sources are: - `system-internal` for metadata about the JupiterOne instance. - `integration-managed` for entities ingested by integrations. - `system-mapper` for assets not ingested by an integration but exist another way, like inferred entity relationships or timing. - `api` for entities created through JupiterOne's APIs. - `sample-data` for entities created through the sample data feature. ### Example query For example, you could find AWS instances that were ingested by integrations and use a data store by running the following query: Which of my aws instances were ingested by an integration using a data store? ```sql FIND aws_instance WITH _source = 'integration-managed' THAT USES DataStore RETURN TREE ``` ### `system-mapper` behavior In JupiterOne, a `system-mapper` entity is created when it's inferred that a certain entity should exist based on correlation data with other entities, but it hasn't been ingested yet by an integration. For example, a `HostAgent` entity may require a corresponding `Host` entity to exist in the graph, which the `system-mapper` can create if it's missing. Another use case for a `system-mapper` entity is when an asset likely exists based on relationship data, but other integration sources haven't yet had a chance to add it to the JupiterOne graph. In such cases, JupiterOne uses an entity with a `_source` value of `system-mapper` to represent the asset. --- Source: /data-model/entity-property-normalization # Normalization JupiterOne normalizes some entity properties on specific classes to make querying easier and to make query results more consistent. In the event that we normalize properties into a property provided in a raw upload, or from an integration, the original raw value is persisted in `raw_` to prevent any data loss. Reading diffs: ```diff { "property": "this is unchanged", + "newProperty": "this is added", - "removedProperty": "this is removed" - "changedProperty": "This gets Changed" + "changedProperty": "this has been changed" } ``` ## Devices and HostAgents ### Collect and normalize serial numbers A property called `serials` is added containing normalized values of all matching properties. **Source properties are not modified**. This is primarily feature for improved reliability of our device consolidation features. | \_class | matching property name (one of) | target property | matching property value (one of) | | --- | --- | --- | --- | | Device, HostAgent | `serial` OR `serialNumber` | `serials` | `/^((([^0-9a-f]*[0-9a-f]){7}[0-9a-z\W]*)$|(([^0-9a-z]*[0-9a-z]){12}[0-9a-z\W]*))$/i` | #### Example Normalizations ```diff // Example 1: { "serial": "AB-CD-EF-12-34-56" + "serials": ["ab-cd-ef-12-34-56"] } // Example 2: { "serialNumber": ["123456789"] + "serials": ["123456789"] } // Example 3: { "serial": "32CCBFD3-2436-41AA-8492-016D20241767", "serialNumber": ["A12345", "ABCD12345" ], + "serials": [ + "32ccbfd3-2436-41aa-8492-016d20241767", + "a12345", + "abcd12345" + ] } ``` ### Collect associated IP(v4) addresses A property called `associatedIpAddresses` is added containing normalized values of all matching properties. **Source properties are not modified**. This allows easier searching for entities that may be associated with an IP Address in an unknown way, regardless of the semantic meaning of the original IP Address properties. | \_class | matching property name (one of) | target property | matching property value (one of) | | --- | --- | --- | --- | | Device, HostAgent | `ipAddresses` OR `ipAddress` OR `publicIpAddress` OR `privateIpAddress` OR `lastIpAddress` OR `network.ipAddress` OR `lastExternalIpAddress` OR `IP_Address` | `associatedIpAddresses` | `/^(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))$/` | #### Example normalizations ```diff // Example 1: { "ipAddress": "024.249.245.253", + "associatedIpAddresses": [ "024.249.245.253" ] } // Example 2: { "ipAddress": "024.249.245.253", "publicIpAddress": "1.9.243.250", "privateIpAddress": "250.236.221.208", + "associatedIpAddresses": [ + "024.249.245.253", + "1.9.243.250", + "250.236.221.208" + ] } ``` ### Collect associated email addresses > [https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address) A property called `associatedEmailAddresses` is added containing normalized values of all matching properties. **Source properties are not modified**. This allows easier searching on any entities that may be associated with an email address in any unknown way, regardless of relationships or the semantic meaning of the original email address properties. | \_class | matching property name (one of) | target property | matching property value (one of) | | --- | --- | --- | --- | | Device | `email` OR `primaryEmail` OR `recoveryEmail` OR `contactEmails` OR `userEmail` OR `userEmails` OR `serviceAccountEmails` OR `serviceAccountEmail` OR `publisherEmail` OR `maintainerEmails` OR `homeEmail` OR `verifiedEmail` OR `verifiedEmails` OR `userEmails` OR `emailAddress` OR `workEmail` OR `Email` OR `general.assignedUserEmail` OR `techLeadEmail` OR `managerEmail` OR `cooEmail` OR `ceoEmail` OR `ctoEmail` OR `techContractEmail` OR `registrantContactEmail` OR `adminContactEmail` OR `abuseContactEmail` | `associatedEmailAddresses` | `/^([a-zA-Z0-9.!#$%&'*+/=?^_{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)\*$)/i` | #### Example normalizations ```diff // Example 1: { "email": "support@jupiterone.io", "primaryEmail": "Support@JupiterOne.io", "recoveryEmail: "security@jupiterone.io", + "associatedEmails": [ + "support@jupiterone.io", + "security@jupiterone.io + ] } ``` ### Normalize make Source property `make` may be modified. If so, the original value will be maintained in `raw_make`. | \_class | matching property name (one of) | target property | matching property value (one of) | | --- | --- | --- | --- | | Device, HostAgent | `make` OR `Manufacturer` OR `hardwareManufacturer` OR `hardwareVendor` | `make` | `/^(.+)$/` | ```diff // Example 1: { "make": "Intel" // no change } // Example 2: { "Manufacturer": "intel", + "make": "Intel" } ``` #### Further refine make based on MAC address Source property `make` may be modified. If so, the original value will be maintained in `raw_make`. Using IEEE OUI lookups based on the [registration authority](https://standards.ieee.org/products-programs/regauth/), we can determine device make from its MAC Address in over thirty thousand MAC address blocks. Below are a few examples: | \_class | matching property name (one of) | target property | | --- | --- | --- | | Device, HostAgent | `macAddress` | `make` | #### Example normalizations ```diff // Example 1: { "macAddress": "6C:29:95:6E:69:F6", + "make": "Intel" // normalized from the macAddress based on IEEE OUI lookup } // Example 2 (make already defined): { "macAddress": "6C:29:95:6E:69:F6", - "make": "Dell", + "make": "Intel", // normalized from the macAddress based on IEEE OUI lookup + "raw_make": "Dell" // preserved original raw value } ``` Other Example IEEE OUI lookups: ### Normalize OS versions Source property `osVersion` may be modified. If so, the original value will be maintained in `raw_osVersion`. | \_class | matching property name (one of) | target property | matching property value (one of) | | --- | --- | --- | --- | | Device, HostAgent | `osVersion` OR `os_version` OR `operatingSystemVersion` OR `os` OR `OS` OR `Operating System` OR `operatingSystem` OR `operatingsystem` | `osVersion` | `/^(?:.*?)(?:\b|\()(\d+(\.\d+)*)(?:\b|\))(?:.*)$/i` | #### Example normalizations ```diff // Example 1: { "operatingSystemVersion": "16.5.0", + "osVersion": "16.5" } // Example 2: { - "osVersion": "Mac OS X 12.3.4" + "osVersion": "12.3.4", // normalized value + "raw_osVersion: "Mac OS X 12.3.4" // preserved original raw value } ``` Other normalized values examples: ### Normalize OS types Source property `osType` may be modified. If so, the original value will be maintained in `raw_osType`. | \_class | matching property name (one of) | target into | matching property value (one of) | | --- | --- | --- | --- | | Device, HostAgent | `operatingSystem` OR `operatingsystem` OR `os` OR `OS` OR `osFamily` OR `os_family` OR `osName` OR `osname` OR `os_name` OR `Operating System` OR `os_version` OR `@osVersion` OR `osVersion` | `osType` | `/(^.*(ios [\d]|iphone).*$)/i` OR `/(^.*ipad.*$)/i` OR `/(^(Cupcake|Donut|Eclair|Froyo|Gingerbread|Honeycomb|Ice Cream Sandwich|Jelly Bean|KitKat|Lollipop|Marshmallow|Nougat|Oreo|Pie|Android).*$)/` OR `/(^.*ipad.*$)/i` OR `/(^.*(OS\s?x|macos).*$)/i` OR `/((^.*(windows|microsoft).*$)|(^.*\s+(win|ms)(\s|\d|-)+.*$)|(^(win|ms)(\s|\d|-)+.*$))/i` OR `/^(Linux|Debian|Ubuntu|Fedora|Red Hat|CentOS|Arch(\s?Linux)?|openSUSE|Gentoo|Slackware|Mint|Kali(\s?Linux)?|Zorin(\s?OS)?|Manjaro|Mageia).*$/i` | #### Example normalizations ```diff // Example 1: { "Operating System": "Apple iOS 16.6.1" + "osType": "iOS" } // Example 2: { "osName": "Debian GNU/Linux 10 (buster)" + "osType": "*nix (Debian)" } // Example 3: { - "osType": "Apple MAC OS X", + "osType": "MacOS", + "raw_osType": "Apple MAC OS X" // preserved original raw value } ``` Other example value normalizations: ### Normalize and collect MAC addresses Source property `macAddress` may be modified. If so, the original value will be maintained in `raw_macAddress`. _All_ matching fields will be merged into an array in the normalized `macAddress` field: | \_class | matching property name (one of) | normalizes into | matching property value (one of) | | --- | --- | --- | --- | | Device, HostAgent, Host, Gateway, Finding, Record, NetworkInterface, Printer | `macAddress` OR `macAddresses` OR `MacAddress` OR `MACADDRESS` OR `MACAddress` OR `MAC_Address` OR `mac_address` OR `mac-address` OR `altMacAddress` OR `wifiMacAddress` OR `wifiMacAddresses` OR `wirelessDeviceMac` OR `recentDeviceMac` OR `wifiMac` OR `mac` OR `network.macAddress` OR `bluetoothMac` | `macAddress` | `/^([0-9a-f]{1,2})([.:-])?([0-9a-f]{1,2})([.:-])?([0-9a-f]{1,2})([.:-])?([0-9a-f]{1,2})([.:-])?([0-9a-f]{1,2})([.:-])?([0-9a-f]{1,2})$/i` | #### Example normalizations ```diff { - "macAddress": "aabbccddeeff", "altMacAddress": "11.22.33.44.aa.bb", + "macAddress": [ // normalized AND collected into array + "AA:BB:CC:DD:EE:FF", + "11:22:33:44:AA:BB" + ], + "raw_macAddress": "aabbccddeeff" // preserved original raw value } ``` ### Normalize encryption status Source property `encryptionStatus` may be modified. If so, the original raw value will be maintained in `raw_encryptionStatus` | \_class | matching property name (one of) | target property | matching property value (one of) | | --- | --- | --- | --- | | Device, HostAgent | `encrypted` OR `encryptionStatus` OR `isEncryptionEnabled` OR `encryptionState` | `encryptionStatus` | `[true] OR` \[false\] OR `/^(encrypted|true|yes)/i` OR `/^(not encrypted|false|no|not_encrypted|notencrypted|unencrypted)$/i` OR `/^(unknown)?/i` | #### Example normalizations ```diff // Example 1: { "encryped": true, + "encryptionStatus": "encrypted" } // Example 2: { "isEncryptionEnabled": "FALSE", + "encryptionStatus": "unencrypted" } // Example 3: { - "encryptionStatus": "yes", + "encryptionStatus": "encrypted", + "raw_encryptionStatus: "yes" // preserved original raw value } ``` ## Findings ### Normalize severity | \_class | \_type (one of) | matching property name (one of) | matching property value (one of) | | --- | --- | --- | --- | | Finding | `aws_accessanalyzer_finding` OR `aws_guardduty_finding` OR `aws_inspector_finding` OR `aws_inspectorv2_finding` OR `aws_macie_finding` OR `azure_advisor_recommendation` OR `bugcrowd_submission` OR `cbdefense_alert` OR `checkmarx_finding` OR `cobalt_finding` OR `crowdstrike_vulnerability` OR `cycognito_issue` OR `detectify_finding` OR `github_code_scanning_finding` OR `github_finding` OR `github_repo_finding` OR `gitlab_finding` OR `gitleaks_finding` OR `hacker_one_report` OR `hackerone_report` OR `microsoft_defender_vulnerability` OR `netskope_compliance_finding` OR `nowsecure_finding` OR `nuclei_finding` OR `orca_finding` OR `orca_finding_alert` OR `probely_finding` OR `sast_scan_finding` OR `snyk_finding` OR `sysdig_finding` OR `tenable_container_finding` OR `tenable_vulnerability_finding` OR `trivy_finding` OR `veracode_finding` OR `qualys_finding` OR `qualys_host_finding` OR `wiz_vunerability_finding` | `severity` OR `Severity` | `/(^(info(rmational)?|(very low)|none|negligible))/i` OR `/(^low)/i` OR `/(^(medium|moderate))/i` OR `/(^high)/i` OR `/(^(critical|(very high)|hazardous|urgent))/i` OR `/(^unknown)/i` | > **NOTE** > > `aws_ecr_image_scan_finding` entities DO NOT have their severity normalized by default. If you would like them to be normalized, please contact support. ### Example normalizations ```diff // Example 1: { - "severity": "MEDIUM", + "severity": "medium", + "raw_severity": "MEDIUM" // preserved original value } // Example 2: { "Severity": "very low", + "severity": "info" } ``` --- Source: /data-model/entity-relationship-metadata # Entity relationship metadata JupiterOne assigns the following metadata internally to entities and relationships, and all internal metadata assigned by JupiterOne features a property name prefixed with and underscore (`_`). ### Class, Type, Key, and ID | Property | Type | Description | | --- | --- | --- | | `_class` | \`string | string\[\]\` | | `_type` | `string` | The specific type of the resource. | | `_key` | `string` | An identifier of the resource unique within an integration instance or data source scope. | | `_id` | `string` | A globally unique identifier of the resource within JupiterOne. | ### Timestamps All timestamps are store in Epoch milliseconds and displayed in the UI in ISO date string format: | Property | Type | Description | | --- | --- | --- | | `_createdOn` | `number` | The timestamp the entity/relationship was first created in JupiterOne. Usually represents a time after the resource was created in the provider environment. | | `_beginOn` | `number` | The timestamp when the latest version of entity/relationship was created. Equivalent to last updated timestamp within JupiterOne (_not_ the timestamp of the resource updated in the provider environment). | | `_endOn` | `number` | THe timestamp a version of the entity/relationship was deleted in JupiterOne. | > If available, timestamps from the resource provider, are generally normalized to one of the following: > > - `createdOn` > - `updatedOn` > - `deletedOn` > - `startedOn` > - `stoppedOn` ### State and source related metadata | Property | Type | Description | | --- | --- | --- | | `_deleted` | `boolean` | Indicates whether a resource was deleted from JupiterOne graph/CMDB. This typically means the resource was recently deleted from the provider source environment. | | `_version` | `number` | The version number, which increments every time a change to the resource configuration/attribute is captured. | | `_source` | `string` | The source from where the resource was created. Valid options include: `integration-managed`, `powerup-managed`, `system-internal`, `system-mapper`, and `api`. | ### Integration specific metadata The following metadata only exists on resources created via an integration: | Property | Type | Description | | --- | --- | --- | | `_integrationClass` | \`string | string\[\]\` | | `_integrationType` | `string` | Type of the integration. Typically the service provider name. For example: `aws`, `google`, `azure`, `okta`, `knowbe4`, `vmware`, etc. | | `_integrationName` | `string` | User-provided friendly name of the integration instance. | | `_integrationDefinitionId` | `string` | Internal UUID that identifies the definition for this integration, e.g. AWS, Azure, etc. | | `_integrationInstanceId` | `string` | Internal UUID that identifies the integration instance. An integration can have more than one configuration instances. For example, multiple AWS accounts have multiple AWS integration instances. | --- Source: /data-model/jupiterone-data-model # JupiterOne Data Model The JupiterOne Data Model is a reference model that illustrates digital resources and their complex interconnections across all ingested resources of an organization within an entity-relationship graph. The Data Model is defined by a set of **Entities** and their **Relationships**, operating as an adaptable model rather than a strict or rigid structure. **[📋 Download OpenAPI 3.1 Specification](/assets/files/openapi-69de98b255a4d6e96c30bd1ec962b026.json)** ## Entities An **Entity** is a node, or vertex, within the JupiterOne graph that represents a resource within your digital infrastructure. Each entity has a specific type that defines what that entity is and is assigned one or more higher-level class that represents a more abstract categorization or labeling of the entity in the perspective of security and technical operations. Entities have a dedicated **type** as well as a broader level **class** for categorization at a more abstract level: - Entity **Type**: denotes the specific entity type based on the entity's source. For example, an AWS resource may be of type `aws_instance`, `aws_s3_bucket`, or `aws_iam_use`. - Entity **Class**: an abstract, _super-type_ that classifies an entity within the general framework of IT and security operations. In the above example, an `aws_instance` entity has a class of `Host`, while an `aws_s3_bucket` is a `DataStore`, and an `aws_iam_user` a `User`. ### Common entity properties Most entities will share the following common properties: | Property | Type | Description | | --- | --- | --- | | `id` | `string`,`array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | `name` | `string` | Name of this entity | | `displayName` | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | `summary` | `string` | A summary / short description of this entity. | | `description` | `string` | An extended description of this entity. | | `classification` | `string`,`null` | The sensitivity of the data; should match company data classification scheme | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned | | `active` | `boolean` | Indicates if this entity is currently active. | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | | `createdBy` | `string` | The source/principal/user that created the entity | | `updatedBy` | `string` | The source/principal/user that updated the entity | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | `tags` | `array` | An array of unnamed tags | | `notes` | `array` | User provided notes about this entity | #### Findings Severity Data Normalization When JupiterOne ingests data from an integration or an API, it uses the property `severity` to normalize the severity rates of findings when severity is present. Normalizing the data simplifies searches and queries that apply to vendors with properties or values that are semantically equivalent but with different names and values. For example, `severity: LOW` and `Severity: Critical` properties would be normalized to `severity: low` and `severity: critical`, respectively but the original values remain available in `raw_severity`. Not all findings data has a severity rating. In that case, JupiterOne does not normalize a severity value. For more information about normalization, see [Entity Property Normalization](/data-model/entity-property-normalization.md). ### Additional entity properties In addition to the common entity properties outlined above, there are additional properties that can exist on entities. These properties are dependant upon class or are custom defined. #### Class-specific Entity properties Each specific class of Entity also has its own defined properties. For example, a `Person` entity will have properties including `firstName` and `lastName`, while a `Device` entity may have properties such as `hardwareVendor`, `hardwareModel`, and `hardwareSerial`. #### Custom entity properties You can also define custom properties for entity types. These are defined by the source system to which the resource belongs and can also be defined by individuals or teams managing the property resource. ### Defined entities Below is a list of reference entities as defined by the JupiterOne Data model, each with its own respective unique properties outside of the shared [common properties outlined above](#common-entity-properties). | Entity | Description | | --- | --- | | [AccessKey](/data-model/schemas/AccessKey.md) | A key used to grant access, such as ssh-key, access-key, api-key/token, mfa-token/device, etc. | | [AccessPolicy](/data-model/schemas/AccessPolicy.md) | A policy for access control assigned to a Host, Role, User, UserGroup, or Service. | | [AccessRole](/data-model/schemas/AccessRole.md) | An access control role mapped to a Principal (e.g. user, group, or service). | | [Account](/data-model/schemas/Account.md) | An organizational account for a service or a set of services (e.g. AWS, Okta, Bitbucket Team, Google G-Suite account, Apple Developer Account). Each Account should be connected to a Service. | | [Alert](/data-model/schemas/Alert.md) | A notice of any unusual or dangerous circumstance that is sent to responsible parties for the purpose of triggering action. | | [Application](/data-model/schemas/Application.md) | A software product or application. | | [ApplicationEndpoint](/data-model/schemas/ApplicationEndpoint.md) | An application endpoint is a program interface that either initiates or receives a request, such as an API. | | [Assessment](/data-model/schemas/Assessment.md) | An object to represent an assessment, including both compliance assessment such as a HIPAA Risk Assessment or a technical assessment such as a Penetration Testing. Each assessment should have findings (e.g. Vulnerability or Risk) associated. | | [Attacker](/data-model/schemas/Attacker.md) | An attacker or threat actor. | | [Backup](/data-model/schemas/Backup.md) | A specific repository or data store containing backup data. | | [Certificate](/data-model/schemas/Certificate.md) | A digital Certificate such as an SSL or S/MIME certificate. | | [Channel](/data-model/schemas/Channel.md) | A communication channel, such as a Slack channel or AWS SNS topic. | | [Cluster](/data-model/schemas/Cluster.md) | A cluster of compute or database resources/workloads. | | [CodeCommit](/data-model/schemas/CodeCommit.md) | A code commit to a repo. The commit id is captured in the \_id property of the Entity. | | [CodeDeploy](/data-model/schemas/CodeDeploy.md) | A code deploy job. | | [CodeModule](/data-model/schemas/CodeModule.md) | A software module. Such as an npm\_module or java\_library. | | [CodeRepo](/data-model/schemas/CodeRepo.md) | A source code repository. A CodeRepo is also a DataRepository therefore should carry all the required properties of DataRepository. | | [CodeReview](/data-model/schemas/CodeReview.md) | A code review record. | | [Configuration](/data-model/schemas/Configuration.md) | A Configuration contains definitions that describe a resource such as a Task, Deployment or Workload. For example, an `aws_ecs_task_definition` is a `Configuration`. | | [Container](/data-model/schemas/Container.md) | A standard unit of software that packages up code and all its dependencies and configurations. | | [Control](/data-model/schemas/Control.md) | A security or IT Control. A control can be implemented by a vendor/service, a person/team, a program/process, an automation code/script/configuration, or a system/host/device. Therefore, this is most likely an additional Class applied to a Service (e.g. Okta SSO), a Device (e.g. a physical firewall), or a HostAgent (e.g. Carbon Black CbDefense Agent). Controls are mapped to security policy procedures and compliance standards/requirements. | | [ControlPolicy](/data-model/schemas/ControlPolicy.md) | An technical or operational policy with rules that govern (or enforce, evaluate, monitor) a security control. | | [CryptoKey](/data-model/schemas/CryptoKey.md) | A key used to perform cryptographic functions, such as an encryption key. | | [DataCollection](/data-model/schemas/DataCollection.md) | An individual collection of data. The collection may exist in various formats, such as a table (e.g. a MySQL table). The exact data type is described in the \_type property of the Entity. | | [DataObject](/data-model/schemas/DataObject.md) | An individual data object, such as an aws-s3-object, sharepoint-document, source-code, or a file (on disk). The exact data type is described in the \_type property of the Entity. | | [DataStore](/data-model/schemas/DataStore.md) | A virtual repository where data is stored, such as aws-s3-bucket, aws-rds-cluster, aws-dynamodb-table, bitbucket-repo, sharepoint-site, docker-registry. The exact type is described in the \_type property of the Entity. | | [Database](/data-model/schemas/Database.md) | A database cluster/instance. | | [Deployment](/data-model/schemas/Deployment.md) | A deployment of code, application, infrastructure or service. For example, a Kubernetes deployment. An auto scaling group is also considered a deployment. | | [Device](/data-model/schemas/Device.md) | A physical device or media, such as a server, laptop, workstation, smartphone, tablet, router, firewall, switch, wifi-access-point, usb-drive, etc. The exact data type is described in the \_type property of the Entity. | | [Directory](/data-model/schemas/Directory.md) | Directory, such as LDAP or Active Directory. | | [Disk](/data-model/schemas/Disk.md) | A disk storage device such as an AWS EBS volume | | [Document](/data-model/schemas/Document.md) | A document or data object. | | [Domain](/data-model/schemas/Domain.md) | An internet domain. | | [DomainRecord](/data-model/schemas/DomainRecord.md) | The DNS Record of a Domain Zone. | | [DomainZone](/data-model/schemas/DomainZone.md) | The DNS Zone of an Internet Domain. | | [Entity](/data-model/schemas/Entity.md) | A node in the graph database that represents an Entity. This reference schema defines common shared properties among most Entities. | | [Finding](/data-model/schemas/Finding.md) | A security finding, which may be a vulnerability or just an informative issue. A single finding may impact one or more resources. The `IMPACTS` relationship between the Vulnerability and the resource entity that was impacted serves as the record of the finding. The `IMPACTS` relationship carries properties such as 'identifiedOn', 'remediatedOn', 'remediationDueOn', 'issueLink', etc. | | [Firewall](/data-model/schemas/Firewall.md) | A piece of hardware or software that protects a network/host/application. | | [Framework](/data-model/schemas/Framework.md) | An object to represent a standard compliance or technical security framework. | | [Function](/data-model/schemas/Function.md) | A virtual application function. For example, an aws\_lambda\_function, azure\_function, or google\_cloud\_function | | [Gateway](/data-model/schemas/Gateway.md) | A gateway/proxy that can be a system/appliance or software service, such as a network router or application gateway. | | [GraphObject](/data-model/schemas/GraphObject.md) | Standard metadata properties of a graph object, maintained by the system. These are visible to users but may not be directly modified. | | [Group](/data-model/schemas/Group.md) | A defined, generic group of Entities. This could represent a group of Resources, Users, Workloads, DataRepositories, etc. | | [Host](/data-model/schemas/Host.md) | A Host represents a computer, virtual machine, or other device that can run software and connect to a network. | | [HostAgent](/data-model/schemas/HostAgent.md) | A software agent or sensor that runs on a host/endpoint. | | [Image](/data-model/schemas/Image.md) | A system image. For example, an AWS AMI (Amazon Machine Image). | | [Incident](/data-model/schemas/Incident.md) | An operational or security incident. An event that negatively affects the confidentiality, integrity or availability of an organization's assets. | | [Internet](/data-model/schemas/Internet.md) | The Internet node in the graph. There should be only one Internet node. | | [IpAddress](/data-model/schemas/IpAddress.md) | An re-assignable IpAddress resource entity. Do not create an entity for an IP Address _configured_ on a Host. Use this only if the IP Address is a reusable resource, such as an Elastic IP Address object in AWS. | | [IpRange](/data-model/schemas/IpRange.md) | consecutive set of IP addresses used for network addressing and management. | | [Issue](/data-model/schemas/Issue.md) | An issue as used by GitHub, Jira, or other project trackers. | | [Key](/data-model/schemas/Key.md) | An ssh-key, access-key, api-key/token, pgp-key, etc. | | [Logs](/data-model/schemas/Logs.md) | A specific repository or destination containing application, network, or system logs. | | [Model](/data-model/schemas/Model.md) | A system of postulates, data, and inferences presented as a mathematical description of an entity or state of affairs. For example, a machine learning model. | | [Module](/data-model/schemas/Module.md) | A software or hardware module. Such as an npm\_module or java\_library. | | [NHI](/data-model/schemas/NHI.md) | A non-human identity (NHI) — any digital identity that is not a person, such as a service account, machine credential, secret, OAuth app, bot, certificate, API key, webhook, or CI/CD identity. NHIs are typically used by software, automation, or workloads to access systems and services. | | [Network](/data-model/schemas/Network.md) | A network, such as an aws-vpc, aws-subnet, cisco-meraki-vlan. | | [NetworkEndpoint](/data-model/schemas/NetworkEndpoint.md) | A network endpoint for connecting to or accessing network resources. For example, NFS mount targets or VPN endpoints. | | [NetworkInterface](/data-model/schemas/NetworkInterface.md) | An re-assignable software defined network interface resource entity. Do not create an entity for a network interface _configured_ on a Host. Use this only if the network interface is a reusable resource, such as an Elastic Network Interface object in AWS. | | [Organization](/data-model/schemas/Organization.md) | An organization, such as a company (e.g. JupiterOne) or a business unit (e.g. HR). An organization can be internal or external. Note that there is a more specific Vendor class. | | [PR](/data-model/schemas/PR.md) | A pull request. | | [PasswordPolicy](/data-model/schemas/PasswordPolicy.md) | A password policy is a specific `Ruleset`. It is separately defined because of its pervasive usage across digital environments and the well known properties (such as length and complexity) unique to a password policy. | | [Person](/data-model/schemas/Person.md) | An entity that represents an actual person, such as an employee of an organization. | | [Policy](/data-model/schemas/Policy.md) | A written policy documentation. | | [Port](/data-model/schemas/Port.md) | A number assigned to identify a network communication endpoint. | | [Problem](/data-model/schemas/Problem.md) | A problem identified from the analysis and correlation of assets and findings that is a notable issue worthy of action. It could be (or become) the cause, or potential cause, of one or more incidents or findings. | | [Procedure](/data-model/schemas/Procedure.md) | A written procedure and control documentation. A Procedure typically `IMPLEMENTS` a parent Policy. An actual Control further `IMPLEMENTS` a Procedure. | | [Process](/data-model/schemas/Process.md) | A compute process -- i.e. an instance of a computer program / software application that is being executed by one or many threads. This is NOT a program level operational process (i.e. a Procedure). | | [Product](/data-model/schemas/Product.md) | A product developed by the organization, such as a software product. | | [Program](/data-model/schemas/Program.md) | A program. For example, a bug bounty/vuln disclosure program. | | [Project](/data-model/schemas/Project.md) | A software development project. Can be used for other generic projects as well but the defined properties are geared towards software development projects. | | [Question](/data-model/schemas/Question.md) | An object that represents an inquiry, usually around some matter of uncertainty or difficulty. | | [Queue](/data-model/schemas/Queue.md) | A scheduling queue of computing processes or devices. | | [Record](/data-model/schemas/Record.md) | A DNS record; or an official record (e.g. Risk); or a written document (e.g. Policy/Procedure); or a reference (e.g. Vulnerability/Weakness). The exact record type is captured in the \_type property of the Entity. | | [RecordEntity](/data-model/schemas/RecordEntity.md) | A node in the graph database that represents a Record Entity, with a set of different defined common properties than standard (resource) entities. | | [Repository](/data-model/schemas/Repository.md) | A repository that contains resources. For example, a Docker container registry repository hosting Docker container images. | | [Requirement](/data-model/schemas/Requirement.md) | An individual requirement for security, compliance, regulation or design. | | [Resource](/data-model/schemas/Resource.md) | A generic assignable resource. A resource is typically non-functional by itself unless used by or attached to a host or workload. | | [Review](/data-model/schemas/Review.md) | A review record. | | [Risk](/data-model/schemas/Risk.md) | An object that represents an identified Risk as the result of an Assessment. The collection of Risk objects in JupiterOne make up the Risk Register. A Control may have a `MITIGATES` relationship to a Risk. | | [Root](/data-model/schemas/Root.md) | The root node in the graph. There should be only one Root node per organization account. | | [Rule](/data-model/schemas/Rule.md) | An operational or configuration compliance rule, often part of a Ruleset. | | [Ruleset](/data-model/schemas/Ruleset.md) | An operational or configuration compliance ruleset with rules that govern (or enforce, evaluate, monitor) a security control or IT system. | | [Scanner](/data-model/schemas/Scanner.md) | A system vulnerability, application code or network infrastructure scanner. | | [Secret](/data-model/schemas/Secret.md) | A stored encrypted secret, accessed by permitted users or applications. | | [Section](/data-model/schemas/Section.md) | An object to represent a section such as a compliance section. | | [Service](/data-model/schemas/Service.md) | A service provided by a vendor. | | [Site](/data-model/schemas/Site.md) | The physical location of an organization. A Person (i.e. employee) would typically has a relationship to a Site (i.e. located\_at or work\_at). Also used as the abstract reference to AWS Regions. | | [Standard](/data-model/schemas/Standard.md) | An object to represent a standard such as a compliance or technical standard. | | [Subscription](/data-model/schemas/Subscription.md) | A subscription to a service or channel. | | [Task](/data-model/schemas/Task.md) | A computational task. Examples include AWS Batch Job, ECS Task, etc. | | [Team](/data-model/schemas/Team.md) | A team consists of multiple member Person entities. For example, the Development team or the Security team. | | [ThreatIntel](/data-model/schemas/ThreatIntel.md) | Threat intelligence captures information collected from vulnerability risk analysis by those with substantive expertise and access to all-source information. Threat intelligence helps a security professional determine the risk of a vulnerability finding to their organization. | | [Training](/data-model/schemas/Training.md) | A training module, such as a security awareness training or secure development training. | | [User](/data-model/schemas/User.md) | A user account/login to access certain systems and/or services. Examples include okta-user, aws-iam-user, ssh-user, local-user (on a host), etc. | | [UserGroup](/data-model/schemas/UserGroup.md) | A user group, typically associated with some type of access control, such as a group in Okta or in Office365. If a UserGroup has an access policy attached, and all member Users of the UserGroup would inherit the policy. | | [Vault](/data-model/schemas/Vault.md) | A collection of secrets such as a key ring | | [Vendor](/data-model/schemas/Vendor.md) | An external organization that is a vendor or service provider. | | [Vulnerability](/data-model/schemas/Vulnerability.md) | A security vulnerability identified by a Common Vulnerabilities and Exposures (CVE) identifier. A single vulnerability may relate to multiple findings and impact multiple resources. The IMPACTS relationship between the Vulnerability and the resource entity that was impacted serves as the record of the finding. The IMPACTS relationship carries properties such as 'identifiedOn', 'remediatedOn', 'remediationDueOn', 'issueLink', etc. | | [Weakness](/data-model/schemas/Weakness.md) | A security weakness identified by a Common Weakness Enumeration (CWE) identifier. | | [Workflow](/data-model/schemas/Workflow.md) | A workflow such as an AWS CodePipeline, GitHub repository workflow, or Apache Airflow. | | [Workload](/data-model/schemas/Workload.md) | A virtual compute instance, it could be an aws-ec2-instance, a docker-container, an aws-lambda-function, an application-process, or a vmware-instance. The exact workload type is described in the \_type property of the Entity. | ### Special entities There are three special, singleton entities within the JupiterOne Data Model as well: | Entity | Description | | --- | --- | | `Everyone` | The global `UserGroup` the represents "everyone" publicly. | | `Internet` | The Internet, i.e., a `Network` entity with a CIDR value of `0.0.0.0/0` | | `Root` | The entity that represents the top-level organization. | ## Relationships Relationships are the edges between two entity nodes in the graph. The `_class` of the relationship should be, in most cases, a generic descriptive verb, such as `HAS` or `IMPLEMENTS`. Relationships can also carry their own properties. For example, `CodeRepo -- DEPLOYED TO -> Host` may have version as a property on the `DEPLOYED` relationship. This represents the mapping between a code repo to multiple deployment targets, while one deployment may be of a different version of the code than another. Storing the version as a relationship property allows us to avoid duplicate instances of the code repo entity being created to represent different versions. Relationships also have the same metadata properties as entities, which are managed by the integration providers. ### Findings Severity Data Normalization When JupiterOne ingests data from an integration or an API, it uses the property `j1_severity` to normalize the severity rates of findings when severity is present. Normalizing the data simplifies searches and queries that apply to vendors with properties or values that are semantically equivalent but with different names and values. For example, `vendor1_severity` and `vendor2_severity` properties would be normalized to be `j1_severity`, but the original values remain in the database. Not all findings data has a severity rating. In that case, JupiterOne does not provide the `j1_severity` for those findings. #### Example queries: `find Finding with [j1_severity] = "high"` This query returns a list of all findings with a normalized severity of “high”. `find Finding with [j1_severity] != undefined as f RETURN f.[j1_severity], count (f)` This query returns a count of all findings in JupiterOne grouped by j1\_severity. ### Relationship examples Below is a list of example relationships between abstract entity classes. ##### HAS / CONTAINS ```text Account -- HAS -> User Account -- HAS -> UserGroup Account -- HAS -> AccessRole Account -- HAS -> Resource CodeRepo -- HAS -> Vulnerability Host -- HAS -> Vulnerability Organization -- HAS -> Site Organization -- HAS -> Organization (e.g. a business unit) Application -- HAS -> Vulnerability CodeRepo -- HAS -> Vulnerability Host -- HAS -> Vulnerability Service -- HAS -> Vulnerability Site -- HAS -> Network Site -- HAS -> Site UserGroup -- HAS -> User Network -- CONTAINS -> Host Network -- CONTAINS -> Database Network -- CONTAINS -> Network (e.g. a subnet) ``` ##### IS / OWNS ```text User -- IS -> Person Vulnerability -- IS -> Vulnerability (e.g. a Snyk Vuln IS a CVE) Person -- OWNS -> Device ``` ##### EXPLOITS / IMPACTS ```text Vulnerability -- EXPLOITS -> Weakness Vulnerability -- IMPACTS -> CodeRepo | Application ``` ##### USES ```text Host -- USES -> Resource (e.g. aws_instance USES aws_ebs_volume) ``` ##### CONNECTS / TRIGGERS / EXTENDS ```text Application -- CONNECTS -> Account Gateway -- CONNECTS -> Network Gateway -- TRIGGERS -> Function HOST -- EXTENDS -> Resource ``` ##### IMPLEMENTS / MITIGATES ```text Procedure -- IMPLEMENTS -> Policy Control -- IMPLEMENTS -> Policy Control -- MITIGATES -> Risk ``` ##### MANAGES ```text Person -- MANAGES -> Person Person -- MANAGES -> Organization Person -- MANAGES -> Team User -- MANAGES -> Account User -- MANAGES -> UserGroup ControlPolicy -- MANAGES -> Control AccessPolicy -- MANAGES -> AccessRole ``` ##### EVALUATES / MONITORS / PROTECTS ```text ControlPolicy -- EVALUATES -> HostAgent -- MONITORS -> Host HostAgent -- PROTECTS -> Host ``` ##### TRUSTS ```text AccessRole -- TRUSTS -> AccessRole AccessRole -- TRUSTS -> Service AccessRole -- TRUSTS -> Account ``` ##### ASSIGNED ```text User -- ASSIGNED -> Application User -- ASSIGNED -> AccessRole UserGroup -- ASSIGNED -> AccessRole ``` ##### IDENTIFIED / PERFORMED / COMPLETED ```text Person -- PERFORMED -> Assessment Person -- COMPLETED -> Training Assessment -- IDENTIFIED -> Risk Assessment -- IDENTIFIED -> Vulnerability ``` ##### PROVIDES ```text Vendor -- PROVIDES -> Service ``` ##### CONTRIBUTES TO ```text User -- CONTRIBUTES TO -> CodeRepo ``` ##### OPENED ```text User -- OPENED -> CodeReview (i.e. PR) ``` ##### DEPLOYED TO ```text CodeRepo -- DEPLOYED TO -> Account CodeRepo -- DEPLOYED TO -> Host CodeRepo -- DEPLOYED TO -> Container CodeRepo -- DEPLOYED TO -> Function ``` --- Source: /data-model/schemas/AccessKey # AccessKey A key used to grant access, such as ssh-key, access-key, api-key/token, mfa-token/device, etc. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `fingerprint` | `string` | The fingerprint that identifies the key | | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `material` | `string` | The key material | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `usage` | `string` | The key usage - for example: ssh access or data encryption | | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/AccessPolicy # AccessPolicy A policy for access control assigned to a Host, Role, User, UserGroup, or Service. ##### AccessPolicy properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `admin` | `boolean` | Indicates if the policy grants administrative privilege. | | | `content` | `string` | Content of a policy contains the raw policy rules, if applicable. For example, the JSON text of an AWS IAM Policy. This is stored in raw data. | | | `rules` | `array` of `string`s | Rules of this policy. Each rule is written 'as-code' that can be operationalized with a control provider or within JupiterOne's rules engine. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/AccessRole # AccessRole An access control role mapped to a Principal (e.g. user, group, or service). ##### AccessRole properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `privilegeNames` | `array` of `string`s | The role's privilege names | | | `privilegeServiceIds` | `array` of `string`s | The role's privilege service IDs | | | `superAdmin` | `boolean` | Is the role an administrator role? | | | `systemRole` | `boolean` | Is this a system role? | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Account # Account An organizational account for a service or a set of services (e.g. AWS, Okta, Bitbucket Team, Google G-Suite account, Apple Developer Account). Each Account should be connected to a Service. ##### Account properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `vendor` \* | `string` | The canonical full name of the vendor of this account. For example, prefer 'Amazon Web Services' over 'AWS'. **Examples**: Amazon Web Services, ServiceNow, Okta | | | `accessURL` | `string` | The main URL to access this account, e.g. [https://jupiterone.okta.com](https://jupiterone.okta.com) | **Format**: `uri` | | `mfaEnabled` | `boolean` | Specifies whether multi-factor authentication (MFA) is enabled/required for users of this account. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `vendor` --- Source: /data-model/schemas/Alert # Alert A notice of any unusual or dangerous circumstance that is sent to responsible parties for the purpose of triggering action. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `category` | `string` | The category of the official record **Examples**: exception, finding, hr, incident, issue, job, legal, request, policy, procedure, problem, review, risk, other | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `summary` | `string` | A summary / short description of this entity. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Application # Application A software product or application. ##### Application properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `alternateURLs` | `array` of `string`s | The additional URLs related to this application. | | | `COTS` | `boolean` | Indicates if this is a Commercial Off-The-Shelf software application. Custom in-house developed application should have this set to false. | **default**: false | | `devURL` | `string` | The Development URL | **Format**: `uri` | | `external` | `boolean` | Indicates if this is an externally acquired software application. Custom in-house developed application should have this set to false. | **default**: false | | `FOSS` | `boolean` | Indicates if this is a Free or Open-Source software application or library. Custom in-house developed application should have this set to false. | **default**: false | | `license` | `string` | Stores the type of license **Examples**: BSD, CC-BY-3.0, CC-BY-4.0, GPL-2.0, GPL-3.0, LGPL-2.0, LGPL-2.1, LGPL-3.0, MIT, EULA, Proprietary, UNLICENSED, other | | | `licenseURL` | `string` | The URL to the full license | **Format**: `uri` | | `mobile` | `boolean` | Indicates if this is a mobile app. | **default**: false | | `productionURL` | `string` | The Production URL | **Format**: `uri` | | `SaaS` | `boolean` | Indicates if this is a Software-as-a-Service product. | **default**: false | | `stagingURL` | `string` | The Non-Production / Staging URL | **Format**: `uri` | | `testURL` | `string` | The Test URL | **Format**: `uri` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/ApplicationEndpoint # ApplicationEndpoint An application endpoint is a program interface that either initiates or receives a request, such as an API. ##### ApplicationEndpoint properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `address` \* | `string` **|** `null` | The endpoint address (e.g. an URI/URL, hostname) | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `address` --- Source: /data-model/schemas/Assessment # Assessment An object to represent an assessment, including both compliance assessment such as a HIPAA Risk Assessment or a technical assessment such as a Penetration Testing. Each assessment should have findings (e.g. Vulnerability or Risk) associated. ##### Assessment properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` \* | `string` | The category of the Assessment. **Examples**: Risk Assessment, Readiness Assessment, Gap Assessment, Validation Assessment, Compliance Assessment, Self Assessment, Certification, Audit, Technical Review, Operational Review, Penetration Testing, Vulnerability Scan, Other | | | `internal` \* | `boolean` | Indicates if this is an internal or external assessment/audit. Defaults to true. | **default**: true | | `summary` \* | `string` | The summary description of the Assessment. | | | `assessor` | `string` | Email or name or ID of the assessor | | | `assessors` | `array` of `string`s | List of email or name or ID of the assessors | | | `completedOn` | `number` | The timestamp (in milliseconds since epoch) when the Assessment was completed. | **Format**: `date-time` | | `reportURL` | `string` | Link to the assessment report, if available. | **Format**: `uri` | | `startedOn` | `number` | The timestamp (in milliseconds since epoch) when the Assessment was started. | **Format**: `date-time` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `category` - `summary` - `internal` --- Source: /data-model/schemas/Attacker # Attacker An attacker or threat actor. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Backup # Backup A specific repository or data store containing backup data. ##### Backup properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `encrypted` | `boolean` | Indicates whether the backup data is encrypted. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Certificate # Certificate A digital Certificate such as an SSL or S/MIME certificate. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Channel # Channel A communication channel, such as a Slack channel or AWS SNS topic. ##### Channel properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `encrypted` | `boolean` | Indicates whether the communication channel is encrypted. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Cluster # Cluster A cluster of compute or database resources/workloads. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/CodeCommit # CodeCommit A code commit to a repo. The commit id is captured in the \_id property of the Entity. ##### CodeCommit properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `branch` \* | `string` | The branch the code was committed to. | | | `merge` \* | `boolean` | Indicates if this commit is a merge, defaults to false. | **default**: false | | `message` \* | `string` | The commit message. | | | `versionBump` \* | `boolean` | Indicates if this commit is a versionBump, defaults to false. | **default**: false | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `branch` - `message` - `merge` - `versionBump` --- Source: /data-model/schemas/CodeDeploy # CodeDeploy A code deploy job. ##### CodeDeploy properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `action` | `string` | Deploy action (e.g. plan, apply, destroy, rollback). | | | `jobName` | `string` | Build/deploy job name. | | | `jobNumber` | `integer` | Build/deploy job number. | | | `production` | `boolean` | Indicates if this is a production deploy, defaults to true. | **default**: true | | `summary` | `string` | Descriptive text of the job. | | | `target` | `string` | Name of the target system or environment. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `category` | `string` | The category of the official record **Examples**: exception, finding, hr, incident, issue, job, legal, request, policy, procedure, problem, review, risk, other | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/CodeModule # CodeModule A software module. Such as an npm\_module or java\_library. ##### CodeModule properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `public` | `boolean` | Indicates if this is a public module. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/CodeRepo # CodeRepo A source code repository. A CodeRepo is also a DataRepository therefore should carry all the required properties of DataRepository. ##### CodeRepo properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `application` | `string` | The application that this repo is part of. | | | `project` | `string` | The project that this repo belongs to. | | | `public` | `boolean` | Indicates if this is a public repo. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/CodeReview # CodeReview A code review record. ##### CodeReview properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `title` \* | `string` | The title text of the review. | | | `state` | `string` | The state of the review. | | | `summary` | `string` | The summary text of the review. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `category` | `string` | The category of the official record **Examples**: exception, finding, hr, incident, issue, job, legal, request, policy, procedure, problem, review, risk, other | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `title` --- Source: /data-model/schemas/Configuration # Configuration A Configuration contains definitions that describe a resource such as a Task, Deployment or Workload. For example, an `aws_ecs_task_definition` is a `Configuration`. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Container # Container A standard unit of software that packages up code and all its dependencies and configurations. ##### Container properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `dockerVersion` | `string` | The version of the Docker Engine | | | `image` | `string` | The container image that the container is built from | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Control # Control A security or IT Control. A control can be implemented by a vendor/service, a person/team, a program/process, an automation code/script/configuration, or a system/host/device. Therefore, this is most likely an additional Class applied to a Service (e.g. Okta SSO), a Device (e.g. a physical firewall), or a HostAgent (e.g. Carbon Black CbDefense Agent). Controls are mapped to security policy procedures and compliance standards/requirements. ##### Control properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `function` | `string` **|** `array` of `string`s | The function of the control. It can be a string or string array. Value of each item should be either all lower case or, in the case of an acronym, all upper case. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/ControlPolicy # ControlPolicy An technical or operational policy with rules that govern (or enforce, evaluate, monitor) a security control. ##### ControlPolicy properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` | `string` | The category of policy. | **enum**: compliance, config, password, other | | `content` | `string` | Contents of the raw rules, if applicable. | | | `rules` | `array` of `string`s | Rules of policy. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/CryptoKey # CryptoKey A key used to perform cryptographic functions, such as an encryption key. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `fingerprint` | `string` | The fingerprint that identifies the key | | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `material` | `string` | The key material | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `usage` | `string` | The key usage - for example: ssh access or data encryption | | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Database # Database A database cluster/instance. ##### Database properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `encrypted` | `boolean` **|** `null` | If the repository is encrypted | | | `encryptionRequired` | `boolean` | If the data needs to be encrypted | | | `location` | `string` | URI to access the database. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/DataCollection # DataCollection An individual collection of data. The collection may exist in various formats, such as a table (e.g. a MySQL table). The exact data type is described in the \_type property of the Entity. ##### DataCollection properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `encrypted` | `boolean` | If the data in the table is encrypted | | | `encryptionRequired` | `boolean` | If the objects in the table need to be encrypted | | | `PCI` | `boolean` | Indicates if this data table contains Payment Card Information | | | `PHI` | `boolean` | Indicates if this data table contains Protected Health Information | | | `PII` | `boolean` | Indicates if this data table contains Personally Identifiable Information | | | `public` | `boolean` | Indicates if the data table is open to public access | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `classification` \* | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `classification` --- Source: /data-model/schemas/DataObject # DataObject An individual data object, such as an aws-s3-object, sharepoint-document, source-code, or a file (on disk). The exact data type is described in the \_type property of the Entity. ##### DataObject properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` | `string` | A user-provided category of the data, such as 'Source Code', 'Report', 'Patent Application', 'Business Plan', 'Customer Record', 'Genetic Data', etc. | | | `encrypted` | `boolean` | If the data is encrypted | | | `encryptionRequired` | `boolean` | If the data needs to be encrypted | | | `format` | `string` | The format of the data, such as 'document', 'raw', 'plaintext', 'binary', etc. | | | `location` | `string` | URI to the data, e.g. file path | | | `PCI` | `boolean` | Indicates if this data object is or contains Payment Card Information | | | `PHI` | `boolean` | Indicates if this data object is or contains Protected Health Information | | | `PII` | `boolean` | Indicates if this data object is or contains Personally Identifiable Information | | | `public` | `boolean` | Indicates if the data object is open to public access | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `classification` \* | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `classification` --- Source: /data-model/schemas/DataStore # DataStore A virtual repository where data is stored, such as aws-s3-bucket, aws-rds-cluster, aws-dynamodb-table, bitbucket-repo, sharepoint-site, docker-registry. The exact type is described in the \_type property of the Entity. ##### DataStore properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `encrypted` \* | `boolean` **|** `null` | If the data store is encrypted | | | `encryptionAlgorithm` | `string` | Encryption algorithm used to encrypt the data store | | | `encryptionKeyRef` | `string` | Reference to the encryption key used to encrypt the data store | | | `encryptionRequired` | `boolean` | If the data needs to be encrypted | | | `hasBackup` | `boolean` | Indicates if the data store is data backup has been configured/enabled. | | | `location` | `string` | URI to the data store, e.g. [https://docker-registry.jupiterone.com](https://docker-registry.jupiterone.com) or [https://jupiterone.sharepoint.com](https://jupiterone.sharepoint.com). Or a description to the physical location. | | | `public` | `boolean` | Indicates if the data store is open to public access | | | `retentionPeriodDays` | `number` | The number of days for which data is retained | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `classification` \* | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `classification` - `encrypted` --- Source: /data-model/schemas/Deployment # Deployment A deployment of code, application, infrastructure or service. For example, a Kubernetes deployment. An auto scaling group is also considered a deployment. ##### Deployment properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `currentSize` | `number` | Current size (i.e. number of instances) active with this deployment. | | | `desiredSize` | `number` | Desired size (i.e. number of instances) associated with this deployment. | | | `maxSize` | `number` | Maximum size (i.e. number of instances) limited by this deployment. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Device # Device A physical device or media, such as a server, laptop, workstation, smartphone, tablet, router, firewall, switch, wifi-access-point, usb-drive, etc. The exact data type is described in the \_type property of the Entity. ##### Device properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` \* | `string` **|** `null` | The device category **Examples**: server, endpoint, storage-media, mobile, network, other | | | `deviceId` \* | `array` of `string`s **|** `null` | The unique device identifier, traditionally known as a UDID | | | `displayName` \* | `string` | The display name of the device | | | `fqdn` \* | `array` of `string`s **|** `null` | The fully qualified domain name of the Device | | | `hostname` \* | `string` **|** `null` | The primary/local hostname | | | `ipv4Addresses` \* | `array` of `string`s **|** `null` | The IPv4 Addresses associated with the Device | | | `ipv6Addresses` \* | `array` of `string`s **|** `null` | The IPv6 Addresses associated with the Device | | | `lastSeenOn` \* | `integer` **|** `null` | The timestamp (in milliseconds since epoch) when the device was either last checked in or was scanned. | | | `macAddresses` \* | `array` of `string`s **|** `null` | The MAC Addresses associated with the Device, lowercase colon delimited | | | `make` \* | `string` **|** `null` | Same as hardwareVendor: The manufacturer or vendor of the device, e.g. Apple Inc., Generic | | | `model` \* | `string` **|** `null` | Same as hardwareModel: The device hardware model, e.g. MacBookPro13,3 | | | `osDetails` \* | `string` **|** `null` | Human readable details of the operating system, such as edition, service pack or code name (e.g. Microsoft Windows Server 2022 (64-bit) Enterprise, macOS Sequoia 15.1.1 (24B91)) | | | `osName` \* | `string` **|** `null` | The proper name of the operating system, without version (e.g. Microsoft Windows, macOS, Ubuntu Linux, Red Hat Enterprise Linux) | | | `osType` \* | `string` **|** `null` | The classification of the operating system | | | `osVersion` \* | `string` **|** `null` | The version of the operating system, ideally semver-ish (e.g. 20.04.3 LTS, 10.0.19045.3803) | | | `privateIpAddresses` \* | `array` of `string`s **|** `null` | The private IP addresses associated with the Device | | | `publicIpAddresses` \* | `array` of `string`s **|** `null` | The public IP addresses associated with the Device | | | `serial` \* | `string` **|** `null` | Same as hardwareSerial: The device serial number | | | `assetTag` | `array` of `string`s | The asset tag number/label that matches the identifier in asset tracking system, for company owned physical devices | **uniqueItems**: true, | | `autoSecurityPatchEnabled` | `boolean` | Indicates if security updates are auto-installed | **default**: false | | `autoSystemPatchEnabled` | `boolean` | Indicates if operating system updates are auto-installed | **default**: false | | `BYOD` | `boolean` | Indicates if this is a BYOD device -- an employee-provided device that has access to company systems/resources. | **default**: false | | `cost` | `number` | The purchase cost of the device. | | | `encrypted` | `boolean` | Indicates if the primary device storage is encrypted | **default**: false | | `firewallEnabled` | `boolean` | Indicates if local/host firewall is enabled | **default**: false | | `hardwareModel` | `string` | The device hardware model, e.g. MacBookPro13,3 | | | `hardwareSerial` | `string` | The device serial number | | | `hardwareVendor` | `string` | The manufacturer or vendor of the device, e.g. Apple Inc., Generic | | | `hardwareVersion` | `string` | The device hardware version | | | `location` | `string` | Site where this device is located. | | | `malwareProtected` | `boolean` | Indicates if malware protection is enabled | **default**: false | | `osKernel` | `string` **|** `null` | The version of the kernel running on the system (e.g. 5.15.0-91-generic, 4.18.0-513.5.1.el8\_9.x86\_64, 24.1.0, 10.0.22631) | | | `public` | `boolean` **|** `null` | Indicates if the device is publicly accessible from the internet | **default**: false | | `remoteAccessEnabled` | `boolean` | Indicates if remote access/login to the device is enabled | **default**: false | | `screenLockEnabled` | `boolean` | Indicates if screen lock protection is enabled | **default**: false | | `screenLockTimeout` | `number` | Screen lock timeout in seconds | | | `status` | `string` **|** `null` | Status label of this device | **enum**: assigned, archived, decommissioned, defective, deployed, disposed, locked, lost/stolen, pending, ready, unknown, other | | `userEmails` | `array` of `string`s | The email addresses of the users this device is assigned to. Used if the device is shared by more than one user. Otherwise the 'owner' is the sole user. Leave empty/undefined if the device is unassigned. | **uniqueItems**: true, **Format**: `email` | | `value` | `number` | The estimated business value of the device. The value is typically calculated as the monetary cost of the device + the value of data on the device. | | | `version` | `string` | Same as hardwareVersion: The device hardware version | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `category` - `ipv4Addresses` - `ipv6Addresses` - `macAddresses` - `publicIpAddresses` - `privateIpAddresses` - `hostname` - `fqdn` - `serial` - `deviceId` - `lastSeenOn` - `make` - `model` - `osName` - `osType` - `osDetails` - `osVersion` --- Source: /data-model/schemas/Directory # Directory Directory, such as LDAP or Active Directory. ##### Directory properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `directoryServers` | `array` of `string`s | List of directory servers. | | | `domainControllers` | `array` of `string`s | List of domain controllers. | | | `parent` | `string` | Parent directory, if the entity is a sub-directory. | | | `type` | `string` | Directory type. **Examples**: LDAP, AD | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Disk # Disk A disk storage device such as an AWS EBS volume ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `classification` \* | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `encrypted` \* | `boolean` **|** `null` | If the data store is encrypted | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `encryptionAlgorithm` | `string` | Encryption algorithm used to encrypt the data store | | | `encryptionKeyRef` | `string` | Reference to the encryption key used to encrypt the data store | | | `encryptionRequired` | `boolean` | If the data needs to be encrypted | | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `hasBackup` | `boolean` | Indicates if the data store is data backup has been configured/enabled. | | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `location` | `string` | URI to the data store, e.g. [https://docker-registry.jupiterone.com](https://docker-registry.jupiterone.com) or [https://jupiterone.sharepoint.com](https://jupiterone.sharepoint.com). Or a description to the physical location. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if the data store is open to public access | | | `retentionPeriodDays` | `number` | The number of days for which data is retained | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `classification` - `encrypted` --- Source: /data-model/schemas/Document # Document A document or data object. ##### Document properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `product` | `string` | The name of the product this document is applicable to. This reference is used when the document is product related, such as a product requirement document (PRD) or software bill-of-materials (SBOM). | | | `version` | `string` | The version of this document. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Domain # Domain An internet domain. ##### Domain properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `domainName` \* | `string` | Domain name. | | | `abuseContactEmail` | `string` | Abuse contact email. | | | `adminContactEmail` | `string` | Administrative contact email. | | | `autoRenew` | `boolean` | Indicates whether auto-renewal is configured. | | | `billingContactEmail` | `string` | Billing contact email. | | | `contactEmails` | `array` of `string`s | List of contact emails. | | | `locked` | `boolean` | Indicates whether domain transfer is locked/protected. | | | `nameservers` | `array` of `string`s | List of nameservers. | | | `parent` | `string` | Parent domain, if the entity is a sub-domain. | | | `registrantContactEmail` | `string` | Registrant contact email. | | | `registrar` | `string` | Domain registrar where this domain is registered. | | | `registrarName` | `string` | Domain registrar name. | | | `registrarUrl` | `string` | Domain registrar URL. | | | `techContactEmail` | `string` | Technical contact email. | | | `whoisServer` | `string` | WHOIS server that is responsible for resolving the details of this domain. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `domainName` --- Source: /data-model/schemas/DomainRecord # DomainRecord The DNS Record of a Domain Zone. ##### DomainRecord properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `TTL` \* | `number` | Time to Live before resolver cache expires. | | | `type` \* | `string` | DNS Record type. | **enum**: A, AAAA, ALIAS, CAA, CERT, CNAME, DNSKEY, DS, LOC, MX, NX, NS, NAPTR, PTR, SMIMEA, SOA, SPF, SRV, SSHFP, TLSA, TXT, URI | | `value` | `string` **|** `array` | The record value. Could be referenced as `data`, `content`, `resourceRecords`, `aliasTarget` or another property name depending on the DNS provider. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `type` - `TTL` --- Source: /data-model/schemas/DomainZone # DomainZone The DNS Zone of an Internet Domain. ##### DomainZone properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `domainName` \* | `string` | Domain name. | | | `parent` | `string` | Parent domain, if the entity is a sub-domain. | | | `recordsCount` | `number` | Total number of DNS records in this zone. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `domainName` --- Source: /data-model/schemas/Entity # Entity A node in the graph database that represents an Entity. This reference schema defines common shared properties among most Entities. ##### Entity properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Finding # Finding A security finding, which may be a vulnerability or just an informative issue. A single finding may impact one or more resources. The `IMPACTS` relationship between the Vulnerability and the resource entity that was impacted serves as the record of the finding. The `IMPACTS` relationship carries properties such as 'identifiedOn', 'remediatedOn', 'remediationDueOn', 'issueLink', etc. ##### Finding properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` \* | `string` **|** `array` **|** `null` | The category of the finding. **Examples**: data, application, host, network, endpoint, malware, event | | | `numericSeverity` \* | `number` **|** `null` | Severity rating based on impact and exploitability. **Examples**: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 | | | `open` \* | `boolean` **|** `null` | Indicates if this is an open vulnerability. | | | `severity` \* | `string` **|** `null` | Severity rating based on impact and exploitability. **Examples**: none, informational, low, medium, high, critical | | | `assessment` | `string` **|** `null` | The name/id of the assessment that produced this finding. | | | `blocksProduction` | `boolean` **|** `null` | Indicates whether this vulnerability finding is a blocking issue. If true, it should block a production deploy. Defaults to false. | | | `exploitability` | `number` **|** `null` | The exploitability score/rating. | | | `impact` | `number` **|** `null` | The impact description or rating. | | | `priority` | `string` **|** `null` | Priority level mapping to Severity rating. Can be a string such as 'critical', 'high', 'medium', 'low', 'info'. Or an integer usually between 0-5. | | | `production` | `boolean` **|** `null` | Indicates if this vulnerability is in production. | | | `public` | `boolean` **|** `null` | Indicates if this is a publicly disclosed vulnerability. If yes, this is usually a CVE and the 'webLink' should be set to '[https://nvd.nist.gov/vuln/detail/$\\{CVE-Number\\}](https://nvd.nist.gov/vuln/detail/$%5C%7BCVE-Number%5C%7D)' or to a vendor URL. If not, it is most likely a custom application vulnerability. | | | `recommendation` | `string` **|** `null` | Recommendation on how to remediate/fix this finding. Use 'remediationActions' field instead. | **deprecated**: true | | `references` | `array` **|** `null` | The array of links to references. | | | `remediationActions` | `string` **|** `null` | Recommended remediation actions or steps to address a finding, vulnerability or weakness. This field supports markdown formatting for rich text content including links, code blocks, and structured lists. Markdown-formatted text describing remediation steps is preferred. | | | `remediationSLA` | `integer` **|** `null` | The number of days that the Vulnerability must be remediated within, based on SLA set by the organization's internal vulnerability management program policy. The actually due date is set by 'remediationDueOn' property on the `IMPACTS` relationship between the Vulnerability and its impacted resource entity. | | | `score` | `number` **|** `null` | The overall vulnerability score, e.g. CVSSv3. | | | `status` | `string` **|** `null` | Status of the vulnerability | | | `stepsToReproduce` | `array` **|** `null` | Steps to reproduce this finding. | | | `targetDetails` | `array` **|** `null` | Additional details about the targets. Can be a string or an array. | | | `targets` | `array` **|** `null` | The target listing of projects, applications, repos or systems this vulnerability impacts. Specifying either the project/repo name or the application URL here will auto-map this Vulnerability to the corresponding Project/CodeRepo/Application entity if a match is found. | | | `validated` | `boolean` **|** `null` | Indicates if this Vulnerability finding has been validated by the security team. | | | `vector` | `string` **|** `null` | The vulnerability attack vector. (e.g. a CVSSv3 vector looks like this - 'AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N') | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `summary` | `string` | A summary / short description of this entity. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `category` - `severity` - `numericSeverity` - `open` --- Source: /data-model/schemas/Firewall # Firewall A piece of hardware or software that protects a network/host/application. ##### Firewall properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` \* | `array` of `string`s | The category of the Firewall. Indicates the scope that the Firewall applies to -- i.e. Network, Host, Application. | **Enum**: network, host, application, other | | `isStateful` | `boolean` | Indicates if the rules in the firewall is stateful. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `category` --- Source: /data-model/schemas/Framework # Framework An object to represent a standard compliance or technical security framework. ##### Framework properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `displayName` \* | `string` | Display name | | | `name` \* | `string` | Name of this entity | | | `standard` \* | `string` | The name of the framework standard. **Examples**: HIPAA, NIST, CSA STAR, PCI DSS, NIST CSF, FedRAMP, ISO 27001, SOC, OWASP, Other | | | `version` \* | `string` | The version of the framework. For example, OWASP may have version 2010, 2013, 2017. | | | `description` | `string` | An extended description of this entity. | | | `summary` | `string` | A summary / short description of this entity. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `standard` - `version` --- Source: /data-model/schemas/Function # Function A virtual application function. For example, an aws\_lambda\_function, azure\_function, or google\_cloud\_function ##### Function properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `codeHash` | `string` | The hash of code of this function. | | | `codeSize` | `string` | The size of code of this function. | | | `handler` | `string` | The handler of this function | | | `image` | `string` | The image of this function, typically refers to a zip package. | | | `memorySize` | `string` | The allocated memory of this function to execute. | | | `runtime` | `string` | The runtime of this function. For example: 'nodejs6.10', 'nodejs8.10', or 'python2.7'. | | | `trigger` | `string` | What triggers this function to execute. | | | `version` | `string` | The version of this function. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Gateway # Gateway A gateway/proxy that can be a system/appliance or software service, such as a network router or application gateway. ##### Gateway properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` \* | `array` of `string`s | The category of the Gateway (corresponds to which OSI layer does the Proxy operates at). | **Enum**: network, application, data, other | | `function` \* | `array` of `string`s | The function of the Gateway | **Enum**: routing, nat, api-gateway, content-filtering, content-distribution, load-balancing, firewall, ssl-termination, reverse-proxy, remote-access-gateway, application-protection, intrusion-detection, intrusion-prevention, mail-filtering, malware-protection, other | | `public` \* | `boolean` | Indicates if the Gateway is open to public access | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `category` - `function` - `public` --- Source: /data-model/schemas/GraphObject # GraphObject Standard metadata properties of a graph object, maintained by the system. These are visible to users but may not be directly modified. ##### GraphObject properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | ##### Required properties - `_key` - `_class` - `_type` --- Source: /data-model/schemas/Group # Group A defined, generic group of Entities. This could represent a group of Resources, Users, Workloads, DataRepositories, etc. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Host # Host A Host represents a computer, virtual machine, or other device that can run software and connect to a network. ##### Host properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` \* | `string` **|** `null` | The host category **Examples**: server, endpoint, storage-media, mobile, network, other | | | `deviceId` \* | `array` of `string`s **|** `null` | The unique device identifier, traditionally known as a UDID | | | `displayName` \* | `string` | The display name of the host | | | `fqdn` \* | `array` of `string`s **|** `null` | The fully qualified domain name of the Device | | | `hostname` \* | `string` **|** `null` | The primary/local hostname | | | `ipv4Addresses` \* | `array` of `string`s **|** `null` | The IPv4 Addresses associated with the Device | | | `ipv6Addresses` \* | `array` of `string`s **|** `null` | The IPv6 Addresses associated with the Device | | | `lastSeenOn` \* | `integer` **|** `null` | The timestamp (in milliseconds since epoch) when the host was either last checked in or was scanned. | | | `macAddresses` \* | `array` of `string`s **|** `null` | The MAC Addresses associated with the Device, lowercase colon delimited | | | `make` \* | `string` **|** `null` | Same as hardwareVendor: The manufacturer or vendor of the host, e.g. Apple Inc., Generic | | | `model` \* | `string` **|** `null` | Same as hardwareModel: The host hardware model, e.g. MacBookPro13,3 | | | `osDetails` \* | `string` **|** `null` | Human readable details of the operating system, such as edition, service pack or code name (e.g. Microsoft Windows Server 2022 (64-bit) Enterprise, macOS Sequoia 15.1.1 (24B91)) | | | `osName` \* | `string` **|** `null` | The proper name of the operating system, without version (e.g. Microsoft Windows, macOS, Ubuntu Linux, Red Hat Enterprise Linux) | | | `osType` \* | `string` **|** `null` | The classification of the operating system | | | `osVersion` \* | `string` **|** `null` | The version of the operating system, ideally semver-ish (e.g. 20.04.3 LTS, 10.0.19045.3803) | | | `privateIpAddresses` \* | `array` of `string`s **|** `null` | The private IP addresses associated with the Device | | | `publicIpAddresses` \* | `array` of `string`s **|** `null` | The public IP addresses associated with the Device | | | `serial` \* | `string` **|** `null` | Same as hardwareSerial: The host serial number | | | `osKernel` | `string` **|** `null` | The version of the kernel running on the system (e.g. 5.15.0-91-generic, 4.18.0-513.5.1.el8\_9.x86\_64, 24.1.0, 10.0.22631) | | | `public` | `boolean` **|** `null` | Indicates if the host is publicly accessible from the internet | **default**: false | | `status` | `string` **|** `null` | Status label of this device | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `category` - `ipv4Addresses` - `ipv6Addresses` - `macAddresses` - `publicIpAddresses` - `privateIpAddresses` - `hostname` - `fqdn` - `serial` - `deviceId` - `lastSeenOn` - `make` - `model` - `osName` - `osType` - `osDetails` - `osVersion` --- Source: /data-model/schemas/HostAgent # HostAgent A software agent or sensor that runs on a host/endpoint. ##### HostAgent properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `function` \* | `array` of `string`s | The function of sensor/agent | **Enum**: endpoint-compliance, endpoint-configuration, endpoint-protection, anti-malware, DLP, FIM, host-firewall, HIDS, log-monitor, activity-monitor, vulnerability-detection, container-security, other | | `lastSeenOn` \* | `number` **|** `null` | The timestamp (in milliseconds since epoch) when the device either last checked in or was scanned. | **Format**: `date-time` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `function` - `lastSeenOn` --- Source: /data-model/schemas/Image # Image A system image. For example, an AWS AMI (Amazon Machine Image). ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Incident # Incident An operational or security incident. An event that negatively affects the confidentiality, integrity or availability of an organization's assets. ##### Incident properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` \* | `string` | The category of the incident **Examples**: 1. General Incident, 2. Attack on Internal Facing Assets, 3. Attack on External Facing Assets, 4. Malware, 5. Social Engineering, 6. Data Breach, 7. Physical or Environmental | | | `reportable` \* | `boolean` | Indicates if this is a reportable incident per applicable regulations, such as HIPAA, PCI, or GDPR. | **default**: false | | `severity` \* | `string` | Severity rating based on impact. Can be a string such as 'critical', 'major', 'minor', or an integer usually between 1-3. | | | `impacts` | `array` of `string`s | The target listing of \[IDs/keys to\] systems and resources this incident impacts. | | | `postmortem` | `string` | Summary and/or a link to the documented lesson learned. | | | `reporter` | `string` | The person/entity who reported this incident. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `category` - `severity` - `reportable` --- Source: /data-model/schemas/Internet # Internet The Internet node in the graph. There should be only one Internet node. ##### Internet properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `CIDR` | `string` | The IPv4 network CIDR block | **const**: 0.0.0.0/0 | | `CIDRv6` | `string` | The IPv6 network CIDR block | **const**: ::/0 | | `displayName` | `string` | Display name | **const**: Internet | | `public` | `boolean` | Indicates if the network is open to public access | **const**: true | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | ##### Required properties - `_key` - `_class` - `_type` --- Source: /data-model/schemas/IpAddress # IpAddress An re-assignable IpAddress resource entity. Do not create an entity for an IP Address _configured_ on a Host. Use this only if the IP Address is a reusable resource, such as an Elastic IP Address object in AWS. ##### IpAddress properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `ipAddress` \* | `string` | The assigned IP address | **Format**: `ip` | | `dnsName` | `string` | The assigned DNS name | **Format**: `hostname` | | `ipVersion` | `integer` | Indicates IP version 4 or 6 | **default**: 4, **enum**: 4, 6 | | `privateIpAddress` | `string` | The assigned private IP address | **Format**: `ip` | | `publicIpAddress` | `string` | The assigned public IP address | **Format**: `ip` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `ipAddress` --- Source: /data-model/schemas/IpRange # IpRange consecutive set of IP addresses used for network addressing and management. ##### IpRange properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `active` \* | `boolean` | Indicates if the IP Range is currently active | | | `begin` \* | `string` | The beginning IP address of the range | **Format**: `ip` | | `end` \* | `string` | The ending IP address of the range | **Format**: `ip` | | `public` \* | `boolean` | Indicates if the IP Range is public | | | `asn` | `string` | Autonomous System Number that identifies a routing policy | **Format**: `asn` | | `cidr` | `array` of `string`s | An array of CIDRs that determine the IP Range | **Format**: `ipCidr` | | `country` | `string` | Country where the IP range is registered or assigned | | | `source` | `string` | The IP Range source | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `begin` - `end` - `active` - `public` --- Source: /data-model/schemas/Issue # Issue An issue as used by GitHub, Jira, or other project trackers. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Key # Key An ssh-key, access-key, api-key/token, pgp-key, etc. ##### Key properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `fingerprint` | `string` | The fingerprint that identifies the key | | | `material` | `string` | The key material | | | `usage` | `string` | The key usage - for example: ssh access or data encryption | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Logs # Logs A specific repository or destination containing application, network, or system logs. ##### Logs properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `type` | `string` | The type of logs **Examples**: network, system, application, access, other | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Model # Model A system of postulates, data, and inferences presented as a mathematical description of an entity or state of affairs. For example, a machine learning model. ##### Model properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `encrypted` | `boolean` | Indicates whether the model is encrypted | **default**: false | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Module # Module A software or hardware module. Such as an npm\_module or java\_library. ##### Module properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `public` | `boolean` | Indicates if this is a public module. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Network # Network A network, such as an aws-vpc, aws-subnet, cisco-meraki-vlan. ##### Network properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `CIDR` \* | `string` **|** `null` | The IPv4 network CIDR block (e.g. 0.0.0.0/0) | **pattern**: ^(\[0-9\]{1,3}.){3}\[0-9\]{1,3}(/(\[0-9\]|\[1-2\]\[0-9\]|3\[0-2\]))?$ | | `internal` \* | `boolean` **|** `null` | Indicates if this is an internal/private network. | | | `public` \* | `boolean` **|** `null` | Indicates if the network is publicly accessible. | | | `CIDRv6` | `string` | The IPv6 network CIDR block (e.g. ::/0) | **Format**: `ipv6` | | `environment` | `string` | The environment of network **Examples**: development, test, staging, production, private, wireless, guest, remote-access, administrative, other | | | `wireless` | `boolean` | Indicates if this is a wireless network. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `CIDR` - `public` - `internal` --- Source: /data-model/schemas/NetworkEndpoint # NetworkEndpoint A network endpoint for connecting to or accessing network resources. For example, NFS mount targets or VPN endpoints. ##### NetworkEndpoint properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `ipAddress` | `string` | The endpoint IP address | **Format**: `ip` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/NetworkInterface # NetworkInterface An re-assignable software defined network interface resource entity. Do not create an entity for a network interface _configured_ on a Host. Use this only if the network interface is a reusable resource, such as an Elastic Network Interface object in AWS. ##### NetworkInterface properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `dnsName` | `string` | The assigned DNS name | **Format**: `hostname` | | `ipAddress` | `string` | The assigned primary IP address | **Format**: `ip` | | `ipVersion` | `integer` | Indicates IP version 4 or 6 | **default**: 4, **enum**: 4, 6 | | `macAddress` | `string` **|** `null` | The assigned MAC address | | | `privateIpAddress` | `string` | The assigned private IP address | **Format**: `ip` | | `publicIpAddress` | `string` | The assigned public IP address | **Format**: `ip` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/NHI # NHI A non-human identity (NHI) — any digital identity that is not a person, such as a service account, machine credential, secret, OAuth app, bot, certificate, API key, webhook, or CI/CD identity. NHIs are typically used by software, automation, or workloads to access systems and services. ##### NHI properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `aiConfidence` | `string` | Confidence that this NHI is AI-related. 'confirmed' = signed evidence; 'high'/'medium'/'low' = heuristic strength. | **enum**: confirmed, high, medium, low | | `aiPlatform` | `string` | The AI platform or vendor this NHI belongs to (e.g. 'openai', 'anthropic', 'google-vertex'). Open string — new platforms appear constantly. | | | `isAi` | `boolean` | Whether this NHI is associated with an AI agent, model, or AI-powered workload. | | | `nhiOwnerStatus` | `string` | Ownership state used by governance triage workflows. | **enum**: assigned, unassigned, orphaned | | `nhiType` | `string` | The category of non-human identity. | **enum**: service\_account, credential, secret, oauth\_app, bot, certificate, api\_key, webhook, ci\_cd\_identity, service\_linked\_role, service\_role, workload\_identity, ci\_cd\_role, cross\_account\_role, sso\_role, federated\_role, iam\_role | | `owner` | `string` | Identifier of the human or team responsible for this NHI (e.g. email, team handle, employee ID). Free-form string — owner-resolution conventions are integration-specific. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Organization # Organization An organization, such as a company (e.g. JupiterOne) or a business unit (e.g. HR). An organization can be internal or external. Note that there is a more specific Vendor class. ##### Organization properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_type` \* | `string` | The type of organization (within the context of the primary organization). **Examples**: company, department, business-unit, subsidiary, government-agency, partner, other | | | `emailDomain` | `string` | The domain name for internal organization email addresses. | | | `external` | `boolean` | Indicates if this organization is external | | | `website` | `string` | The organization's main website URL. | **Format**: `uri` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/PasswordPolicy # PasswordPolicy A password policy is a specific `Ruleset`. It is separately defined because of its pervasive usage across digital environments and the well known properties (such as length and complexity) unique to a password policy. ##### PasswordPolicy properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `autoUnlockMins` | `integer` | Specifies the time interval (in minutes) a locked account remains locked before it is automatically unlocked (0 indicates no limit) | | | `excludeAttributes` | `array` of `string`s | The user profile attributes whose values must be excluded from the password | | | `excludeCommonPasswords` | `boolean` | Indicates whether to check passwords against a common/weak password dictionary | | | `excludeUsername` | `boolean` | Indicates if the username must be excluded from the password | | | `expiryWarningDays` | `integer` | Specifies the number of days prior to password expiration when a user will be warned to reset their password (0 indicates no warning) | | | `hardExpiry` | `boolean` | Specifies whether users are prevented from setting a new password after their password has expired | | | `historyCount` | `integer` | Specifies the number of previous passwords that users are prevented from reusing (0 indicates none) | | | `lockoutAttempts` | `integer` | Specifies the number of times users can attempt to log in to their accounts with an invalid password before their accounts are locked (0 indicates no limit) | | | `maxAgeDays` | `integer` | Specifies how long (in days) a password remains valid before it expires (0 indicates no limit - passwords do not expire) | | | `minAgeMins` | `integer` | Specifies the minimum time interval (in minutes) between password changes (0 indicates no limit) | | | `minLength` | `integer` | Minimum password length | | | `preventReset` | `boolean` | Indicates if the user is allowed/prevented to change their own password | | | `requireLowercase` | `boolean` | Indicates if a password must contain at least one lowercase character | | | `requireMFA` | `boolean` | Specifies whether multi-factor authentication (MFA) is required | | | `requireNumbers` | `boolean` | Indicates if a password must contain at least one number | | | `requireSymbols` | `boolean` | Indicates if a password must contain at least one symbol | | | `requireUppercase` | `boolean` | Indicates if a password must contain at least one uppercase character | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Person # Person An entity that represents an actual person, such as an employee of an organization. ##### Person properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `email` \* | `array` of `string`s | The email addresses of the person; the first one in the array is the primary email. | **Format**: `email` | | `firstName` \* | `string` | The person's official first name in the system (such as HR database) | | | `lastName` \* | `string` | The person's official last name in the system (such as HR database) | | | `address` | `string` | The person's physical contact address | | | `backgroundCheckedBy` | `string` | The agency or person who conducted the background/reference check | | | `backgroundCheckedOn` | `number` | Timestamp of the background and/or reference check | **Format**: `date-time` | | `emailDomain` | `array` of `string`s | The domain portion of the email addresses associated with the user account. | | | `employeeId` | `string` | The person's employee ID/number within an organization | | | `employeeType` | `string` | The type of employment **Examples**: employee, contractor, intern, vendor, advisor, other | | | `manager` | `string` | Name of the person's manager | | | `managerEmail` | `string` | Email of the person's manager | **Format**: `email` | | `managerId` | `string` | Employee ID of the person's manager | | | `middleName` | `string` | The person's official middle name in the system (such as HR database) | | | `phone` | `array` of `string`s | The person's phone numbers; the first one in the array is the primary contact number. | | | `title` | `string` | The person's role or title within an organization | | | `userIds` | `array` of `string`s | One or more user Ids associated with this person | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `firstName` - `lastName` - `email` --- Source: /data-model/schemas/Policy # Policy A written policy documentation. ##### Policy properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `content` \* | `string` | Text content of the policy. For policies/procedures used by the Policy Builder app, this will contain the template text in markdown format. Stored in raw data. | | | `summary` \* | `string` | Summary or overview the describes the policy. Summary text is intended as guidance to the author and not included in the published version. | | | `title` \* | `string` | Title of the policy | | | `adopted` | `boolean` | Indicates if policy or procedure has been adopted. Only adopted policies and procedures are included in the published view of the Policy Builder app. | | | `applicable` | `boolean` | Indicates if policy or procedure is applicable based on the organization's current risk and compliance needs. A Policy that is not applicable may become applicable later as the organization's requirements and maturity change. | | | `author` | `string` | Author of the record | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `category` | `string` | The category of the official record **Examples**: exception, finding, hr, incident, issue, job, legal, request, policy, procedure, problem, review, risk, other | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `title` - `summary` - `content` --- Source: /data-model/schemas/Port # Port A number assigned to identify a network communication endpoint. ##### Port properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `open` \* | `boolean` | Indicates if the port is open or shut communication. | | | `port` \* | `integer` | Port number | **minimum**: 1, **maximum**: 65536 | | `protocol` \* | `string` | Communication protocol last observed being used on this port. | **enum**: TCP, UDP, TCP/UDP, UDP/TCP | | `banner` | `string` | Provides information about the service running on the port. | | | `service` | `string` | Indicates the type or protocol of the service running on the port. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `protocol` - `open` - `port` --- Source: /data-model/schemas/PR # PR A pull request. ##### PR properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `repository` \* | `string` | The name of the CodeRepo this PR belongs to. | | | `source` \* | `string` | The source branch. | | | `state` \* | `string` | The state of the PR. **Examples**: open, merged, declined, superseded | | | `target` \* | `string` | The target/destination branch. | | | `title` \* | `string` | The title text of the PR. | | | `approved` | `boolean` | Indicates if every commit associated with this PR has been approved by a reviewer other than the code author. | | | `summary` | `string` | The summary text of the PR. | | | `validated` | `boolean` | Indicates if every commit associated with this PR was submitted by a validated author known to the organization. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `category` | `string` | The category of the official record **Examples**: exception, finding, hr, incident, issue, job, legal, request, policy, procedure, problem, review, risk, other | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `title` - `state` - `source` - `target` - `repository` --- Source: /data-model/schemas/Problem # Problem A problem identified from the analysis and correlation of assets and findings that is a notable issue worthy of action. It could be (or become) the cause, or potential cause, of one or more incidents or findings. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `category` \* | `string` **|** `array` **|** `null` | The category of the finding. **Examples**: data, application, host, network, endpoint, malware, event | | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `numericSeverity` \* | `number` **|** `null` | Severity rating based on impact and exploitability. **Examples**: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 | | | `open` \* | `boolean` **|** `null` | Indicates if this is an open vulnerability. | | | `severity` \* | `string` **|** `null` | Severity rating based on impact and exploitability. **Examples**: none, informational, low, medium, high, critical | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `assessment` | `string` **|** `null` | The name/id of the assessment that produced this finding. | | | `blocksProduction` | `boolean` **|** `null` | Indicates whether this vulnerability finding is a blocking issue. If true, it should block a production deploy. Defaults to false. | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `exploitability` | `number` **|** `null` | The exploitability score/rating. | | | `impact` | `number` **|** `null` | The impact description or rating. | | | `priority` | `string` **|** `null` | Priority level mapping to Severity rating. Can be a string such as 'critical', 'high', 'medium', 'low', 'info'. Or an integer usually between 0-5. | | | `production` | `boolean` **|** `null` | Indicates if this vulnerability is in production. | | | `public` | `boolean` **|** `null` | Indicates if this is a publicly disclosed vulnerability. If yes, this is usually a CVE and the 'webLink' should be set to '[https://nvd.nist.gov/vuln/detail/$\\{CVE-Number\\}](https://nvd.nist.gov/vuln/detail/$%5C%7BCVE-Number%5C%7D)' or to a vendor URL. If not, it is most likely a custom application vulnerability. | | | `recommendation` | `string` **|** `null` | Recommendation on how to remediate/fix this finding. Use 'remediationActions' field instead. | **deprecated**: true | | `references` | `array` **|** `null` | The array of links to references. | | | `remediationActions` | `string` **|** `null` | Recommended remediation actions or steps to address a finding, vulnerability or weakness. This field supports markdown formatting for rich text content including links, code blocks, and structured lists. Markdown-formatted text describing remediation steps is preferred. | | | `remediationSLA` | `integer` **|** `null` | The number of days that the Vulnerability must be remediated within, based on SLA set by the organization's internal vulnerability management program policy. The actually due date is set by 'remediationDueOn' property on the `IMPACTS` relationship between the Vulnerability and its impacted resource entity. | | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `score` | `number` **|** `null` | The overall vulnerability score, e.g. CVSSv3. | | | `status` | `string` **|** `null` | Status of the vulnerability | | | `stepsToReproduce` | `array` **|** `null` | Steps to reproduce this finding. | | | `summary` | `string` | A summary / short description of this entity. | | | `targetDetails` | `array` **|** `null` | Additional details about the targets. Can be a string or an array. | | | `targets` | `array` **|** `null` | The target listing of projects, applications, repos or systems this vulnerability impacts. Specifying either the project/repo name or the application URL here will auto-map this Vulnerability to the corresponding Project/CodeRepo/Application entity if a match is found. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` **|** `null` | Indicates if this Vulnerability finding has been validated by the security team. | | | `vector` | `string` **|** `null` | The vulnerability attack vector. (e.g. a CVSSv3 vector looks like this - 'AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N') | | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `category` - `severity` - `numericSeverity` - `open` --- Source: /data-model/schemas/Procedure # Procedure A written procedure and control documentation. A Procedure typically `IMPLEMENTS` a parent Policy. An actual Control further `IMPLEMENTS` a Procedure. ##### Procedure properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `content` \* | `string` | Text content of the policy. For policies/procedures used by the Policy Builder app, this will contain the template text in markdown format. Stored in raw data. | | | `summary` \* | `string` | Summary or overview the describes the procedure. Summary text is intended as guidance to the author and not included in the published version. | | | `title` \* | `string` | Title of the procedure | | | `adopted` | `boolean` | Indicates if procedure has been adopted. Only adopted policies and procedures are included in the published view of the Policy Builder app. | | | `applicable` | `boolean` | Indicates if procedure is applicable based on the organization's current risk and compliance needs. A Policy that is not applicable may become applicable later as the organization's requirements and maturity change. | | | `author` | `string` | Author of the record | | | `control` | `string` | The type of control specified by this procedure. **Examples**: administrative, technical, physical, operational, other | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `category` | `string` | The category of the official record **Examples**: exception, finding, hr, incident, issue, job, legal, request, policy, procedure, problem, review, risk, other | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `title` - `summary` - `content` --- Source: /data-model/schemas/Process # Process A compute process -- i.e. an instance of a computer program / software application that is being executed by one or many threads. This is NOT a program level operational process (i.e. a Procedure). ##### Process properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `state` | `string` | Indicates the state of the process. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Product # Product A product developed by the organization, such as a software product. ##### Product properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `appLink` | `array` of `string`s | App links/URLs related to this product. | | | `category` | `string` | Category that defines the product (e.g. 'web', 'mobile'). | | | `description` | `string` | Description of the product | | | `projectKey` | `array` of `string`s | Project key(s) that reference a Jira project, Bitbucket project, or similar related to this product. | | | `statusPage` | `array` of `string`s | Link to the status page of this product (for a SaaS product). | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Program # Program A program. For example, a bug bounty/vuln disclosure program. ##### Program properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `overview` | `string` | Program overview. | | | `type` | `string` | The type of program. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Project # Project A software development project. Can be used for other generic projects as well but the defined properties are geared towards software development projects. ##### Project properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `alternateURLs` | `array` of `string`s | The additional URLs related to this application. | | | `devURL` | `string` | The Development URL | **Format**: `uri` | | `key` | `string` | A defined project key. It is ideal for a code project to have a consistent key that matches that of issue tracking project. For example, the key for a Bitbucket project should match the key of its corresponding Jira project. | | | `productionURL` | `string` | The Production URL | **Format**: `uri` | | `stagingURL` | `string` | The Non-Production / Staging URL | **Format**: `uri` | | `testURL` | `string` | The Test URL | **Format**: `uri` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Question # Question An object that represents an inquiry, usually around some matter of uncertainty or difficulty. ##### Question properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `queries` \* | `array` | A request for information that contributes to answering a question. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `queries` --- Source: /data-model/schemas/Queue # Queue A scheduling queue of computing processes or devices. ##### Queue properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `items` | `array` | The items (processes, devices, jobs, etc.) in the queue | | | `priority` | `number` | The priority of the queue | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Record # Record A DNS record; or an official record (e.g. Risk); or a written document (e.g. Policy/Procedure); or a reference (e.g. Vulnerability/Weakness). The exact record type is captured in the \_type property of the Entity. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `category` | `string` | The category of the official record **Examples**: exception, finding, hr, incident, issue, job, legal, request, policy, procedure, problem, review, risk, other | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `summary` | `string` | A summary / short description of this entity. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/RecordEntity # RecordEntity A node in the graph database that represents a Record Entity, with a set of different defined common properties than standard (resource) entities. ##### RecordEntity properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `category` | `string` | The category of the official record **Examples**: exception, finding, hr, incident, issue, job, legal, request, policy, procedure, problem, review, risk, other | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `summary` | `string` | A summary / short description of this entity. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Repository # Repository A repository that contains resources. For example, a Docker container registry repository hosting Docker container images. ##### Repository properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `public` | `boolean` | Indicates if this is a public repo. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Requirement # Requirement An individual requirement for security, compliance, regulation or design. ##### Requirement properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `title` \* | `string` | The title text of the requirement. | | | `state` | `string` | The state of the requirement (e.g. 'implemented'). | | | `summary` | `string` | The summary text of the requirement. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `category` | `string` | The category of the official record **Examples**: exception, finding, hr, incident, issue, job, legal, request, policy, procedure, problem, review, risk, other | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `title` --- Source: /data-model/schemas/Resource # Resource A generic assignable resource. A resource is typically non-functional by itself unless used by or attached to a host or workload. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Review # Review A review record. ##### Review properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `title` \* | `string` | The title text of the review. | | | `state` | `string` | The state of the review. | | | `summary` | `string` | The summary text of the review. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `category` | `string` | The category of the official record **Examples**: exception, finding, hr, incident, issue, job, legal, request, policy, procedure, problem, review, risk, other | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `title` --- Source: /data-model/schemas/Risk # Risk An object that represents an identified Risk as the result of an Assessment. The collection of Risk objects in JupiterOne make up the Risk Register. A Control may have a `MITIGATES` relationship to a Risk. ##### Risk properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `impact` \* | `integer` | Impact rating. '3: high/severe', '2: medium/moderate', '1: low/minor', '0: none/insignificant'. **Examples**: 0, 1, 2, 3 | | | `probability` \* | `integer` | Probability rating of the risk: '3: high/certain', '2: medium/likely', '1: low/unlikely', '0: none/negligible'. **Examples**: 0, 1, 2, 3 | | | `score` \* | `integer` | Overall Risk Score = Probability x Impact | | | `status` \* | `string` | Current status of this documented risk. Default status is `open`. **Examples**: reported, acknowledged, accepted, mitigated, prioritized, transferred, pending, open | | | `assessment` | `string` | The name/id of the assessment that produced this risk. | | | `category` | `string` | The category (or area) of the risk. For example, 'process maturity' or 'natural disaster'. | | | `details` | `string` | Additional details to describe the risk. | | | `mitigation` | `string` | Description of the mitigation, either planned or implemented, if applicable. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `summary` | `string` | A summary / short description of this entity. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `probability` - `impact` - `score` - `status` --- Source: /data-model/schemas/Root # Root The root node in the graph. There should be only one Root node per organization account. ##### Root properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `displayName` | `string` | Display name | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | ##### Required properties - `_key` - `_class` - `_type` --- Source: /data-model/schemas/Rule # Rule An operational or configuration compliance rule, often part of a Ruleset. ##### Rule properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` | `string` | The category of ruleset. **Examples**: compliance, config, password, other | | | `content` | `string` | Contents of the rule, if applicable. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Ruleset # Ruleset An operational or configuration compliance ruleset with rules that govern (or enforce, evaluate, monitor) a security control or IT system. ##### Ruleset properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` | `string` | The category of ruleset. **Examples**: compliance, config, password, other | | | `content` | `string` | Contents of the raw rules, if applicable. | | | `rules` | `array` of `string`s | Rules of ruleset. Each rule is written 'as-code' that can be operationalized with a control provider or within JupiterOne's rules engine. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Scanner # Scanner A system vulnerability, application code or network infrastructure scanner. ##### Scanner properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` \* | `array` of `string`s | The category of scanner | **Examples**: system, network, application, other | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `category` --- Source: /data-model/schemas/Secret # Secret A stored encrypted secret, accessed by permitted users or applications. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Section # Section An object to represent a section such as a compliance section. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Service # Service A service provided by a vendor. ##### Service properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` \* | `array` of `string`s | The category of service, e.g. software, platform, infrastructure, other | **Examples**: software, platform, infrastructure, physical, network, application, security, other | | `function` \* | `array` of `string`s | The functions provided by the service, e.g. access-review, database, load-balancing, other | **Examples**: access-review, api-gateway, auditing, caching, certificate-management, config-auditing, content-distribution, container-orchestration, container-registry, compute, database, data-analytics, data-warehousing, ddos-protection, desktop-virtualization, DLP, DNS, email, encryption, file-system, IAM, indexing, key-management, kubernetes-management, load-balancing, logging, monitoring, networking, notification, password-management, provisioning, queuing, scheduling, serverless, SFTP, SIEM, storage, VAS, WAF, workflow, workload-management, other | | `endpoints` | `array` of `string`s | Array of service endpoints, e.g. ec2.amazonaws.com | | | `fedrampModerate` | `boolean` | Indicates whether this service is compliant with FedRAMP Moderate | | | `hipaaEligible` | `boolean` | Indicates whether this service is HIPPA eligible | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `category` - `function` --- Source: /data-model/schemas/Site # Site The physical location of an organization. A Person (i.e. employee) would typically has a relationship to a Site (i.e. located\_at or work\_at). Also used as the abstract reference to AWS Regions. ##### Site properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` | `array` of `string`s | Type of site | **Examples**: headquarters, branch, campus, office, aws-region, data-center, lab, other | | `hours` | `string` | Hours of operation. e.g. M-F 9am-6pm | | | `location` | `string` | The address/location of the site. Or an AWS Region (e.g. us-east-2). | | | `restricted` | `boolean` | Indicates that access to the site is restricted (a level above secured access). | | | `secured` | `boolean` | Indicates the site is secured with physical controls such as key card access and surveillance cameras. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Standard # Standard An object to represent a standard such as a compliance or technical standard. ##### Standard properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `name` \* | `string` | The name of the standard. **Examples**: HIPAA, NIST, CSA STAR, PCI DSS, NIST CSF, FedRAMP, ISO 27001, SOC, OWASP, Other | | | `version` \* | `string` | The version of the standard. For example, OWASP may have version 2010, 2013, 2017. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `version` --- Source: /data-model/schemas/Subscription # Subscription A subscription to a service or channel. ##### Subscription properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `authenticated` | `boolean` | Indicates whether the subscription is authenticated. | | | `pending` | `boolean` | Indicates whether the subscription is pending. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Task # Task A computational task. Examples include AWS Batch Job, ECS Task, etc. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Team # Team A team consists of multiple member Person entities. For example, the Development team or the Security team. ##### Team properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `email` | `string` | The team email address | **Format**: `email` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/ThreatIntel # ThreatIntel Threat intelligence captures information collected from vulnerability risk analysis by those with substantive expertise and access to all-source information. Threat intelligence helps a security professional determine the risk of a vulnerability finding to their organization. ##### ThreatIntel properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `references` | `array` of `string`s | The array of links to references. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `category` | `string` | The category of the official record **Examples**: exception, finding, hr, incident, issue, job, legal, request, policy, procedure, problem, review, risk, other | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `summary` | `string` | A summary / short description of this entity. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Training # Training A training module, such as a security awareness training or secure development training. ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `category` | `string` | The category of the official record **Examples**: exception, finding, hr, incident, issue, job, legal, request, policy, procedure, problem, review, risk, other | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `open` | `boolean` | Indicates if this record is currently open. For example, an open Vulnerability finding (Vulnerability extends Record). | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `summary` | `string` | A summary / short description of this entity. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/User # User A user account/login to access certain systems and/or services. Examples include okta-user, aws-iam-user, ssh-user, local-user (on a host), etc. ##### User properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `email` \* | `array` of `string`s **|** `null` | The primary email address associated with the user account | | | `firstName` \* | `string` **|** `null` | The user's official first name in the system (such as HR database) | | | `lastName` \* | `string` **|** `null` | The user's official last name in the system (such as HR database) | | | `shortLoginId` \* | `array` of `string`s **|** `null` | The shortened login Id. For example, if the username is the full email address ([first.last@company.com](mailto:first.last@company.com)), the shortLoginId would be the part before @ (first.last). | | | `username` \* | `array` of `string`s **|** `null` | Username | | | `active` | `boolean` | Prefer property 'isActive' | **deprecated**: true | | `emailDomain` | `array` of `string`s **|** `null` | The domain portion of the email addresses associated with the user account. | | | `employeeId` | `string` | The employee ID associated with the user account | | | `isActive` | `boolean` | Specifies whether user account is active or disabled. | | | `isAdmin` | `boolean` | Specifies whether the user is an admin user. | | | `isGuest` | `boolean` | Indicates whether the user is a guest is the system. A guest user is often a user outside of the organization who has limited or temporary access to the system. | | | `isMfaEnabled` | `boolean` | Specifies whether multi-factor authentication (MFA) is enabled for this user. | | | `isPerson` | `boolean` | Specifies whether the user is a person or a non-human identity. | | | `mfaEnabled` | `boolean` | Prefer property 'isMfaEnabled' | **deprecated**: true | | `mfaType` | `string` | Specifies what type of multi-factor authentication (MFA) is being used by this user. | | | `passwordChangedOn` | `number` | The timestamp (in milliseconds since epoch) of when the user's password was last rotated for this particular account. | **Format**: `date-time` | | `userIds` | `array` of `string`s | The user IDs associated with the user account | **uniqueItems**: true, | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `firstName` - `lastName` - `email` - `shortLoginId` - `username` --- Source: /data-model/schemas/UserGroup # UserGroup A user group, typically associated with some type of access control, such as a group in Okta or in Office365. If a UserGroup has an access policy attached, and all member Users of the UserGroup would inherit the policy. ##### UserGroup properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `email` | `string` | The group email address | **Format**: `email` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Vault # Vault A collection of secrets such as a key ring ##### Vault properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `name` \* | `string` | Name of the vault | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Vendor # Vendor An external organization that is a vendor or service provider. ##### Vendor properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `category` \* | `string` **|** `array` | The category of vendor. **Examples**: business-operations, cloud, facilities, finance, infrastructure, legal, purchasing, security, software, platform-development, platform-social-media, professional-services-staffing, professional-services-recruiting, professional-services-consulting, generic-service-provider, generic-subscription, CSP, ISP, MSP, MSSP, IdP, other | | | `admins` | `array` of `string`s | List of admin users to the vendor account, if applicable. If this vendor account is integrated directly to JupiterOne and its data is ingested, the admin users should be already mapped as User entities. | | | `alternateContactAddress` | `string` | Alternate/secondary physical/mailing address of the vendor. | | | `alternateContactEmail` | `string` | Email of the vendor's alternate/secondary point of contact person. | **Format**: `email` | | `alternateContactName` | `string` | The vendor's alternate/secondary point of contact person. | | | `alternateContactPhone` | `string` | Phone number of the vendor's alternate/secondary point of contact person. | | | `alternateContactTitle` | `string` | The title of the vendor's alternate/secondary point of contact. For example, 'CISO'. | | | `breachResponseDays` | `integer` | The number of days the vendor agrees to report an identified data breach, per vendor agreement and/or SLA. This is typically 3 to 30 days. Note that GDPR requires breach notification within 3 days / 72 hours. | | | `departments` | `array` of `string`s | List of business departments the vendor provides service for (e.g. IT, HR, Finance, Marketing, Development/Engineering, Security). | | | `emailDomain` | `string` | The email domain for the vendor (e.g. @jupiterone.io). | | | `linkToBAA` | `string` | Link to Business Associate Agreement (BAA) document - for HIPAA only. | **Format**: `uri` | | `linkToDPA` | `string` | Link to GDPR Data Processing Addendum (DPA) document - for GDPR only. | **Format**: `uri` | | `linkToISA` | `string` | Link to the external information security assessment (ISA) report. | **Format**: `uri` | | `linkToMSA` | `string` | Link to Master Service Agreement (MSA) document. | **Format**: `uri` | | `linkToNDA` | `string` | Link to Non-Disclosure Agreement (NDA) document. | **Format**: `uri` | | `linkToSLA` | `string` | Link to Service Level Agreement (SLA) document. | **Format**: `uri` | | `linkToVTR` | `string` | Link to the external vendor technology risk (VTR) report. | **Format**: `uri` | | `mainContactAddress` | `string` | Main physical/mailing address of the vendor. | | | `mainContactEmail` | `string` | Email of the vendor's point of contact person. | **Format**: `email` | | `mainContactName` | `string` | The vendor's point of contact person. | | | `mainContactPhone` | `string` | Phone number of the vendor's point of contact person. | | | `mainContactTitle` | `string` | The title of the vendor's main point of contact. For example, 'Manager of Operations'. | | | `statusPage` | `string` | Link to the vendor's service status page (e.g. [https://status.aws.amazon.com/](https://status.aws.amazon.com/)). | **Format**: `uri` | | `validatedOn` | `number` | The timestamp (in milliseconds since epoch) of when this vendor was last validated per the vendor management policy. | **Format**: `date-time` | | `website` | `string` | The vendor's main website URL. | **Format**: `uri` | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `category` --- Source: /data-model/schemas/Vulnerability # Vulnerability A security vulnerability identified by a Common Vulnerabilities and Exposures (CVE) identifier. A single vulnerability may relate to multiple findings and impact multiple resources. The IMPACTS relationship between the Vulnerability and the resource entity that was impacted serves as the record of the finding. The IMPACTS relationship carries properties such as 'identifiedOn', 'remediatedOn', 'remediationDueOn', 'issueLink', etc. ##### Vulnerability properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `cveId` \* | `string` **|** `null` | The Common Vulnerabilities and Exposures (CVE) identifier of the vulnerability as a string, formatted exactly as CVE-YYYY-NNNN (where YYYY is the 4-digit year and NNNN is a sequence of at least 4 digits). This field must contain only the CVE ID with no additional text or details. For example, CVE-2021-44228 is valid, but CVE-2021-44228 (YOKOGAWA) is invalid. | | | `open` \* | `boolean` **|** `null` | Indicates whether the CVE vulnerability is currently open (unresolved) against the entity. This boolean field is true when the vulnerability is active and false when it is resolved or no longer applicable. If the open status is not provided, it defaults to true. | **default**: true | | `blocking` | `boolean` **|** `null` | Indicates whether this vulnerability finding is a blocking issue. If true, it should block a production deploy. Defaults to false. | **default**: false | | `category` | `string` **|** `null` | The category of the vulnerability finding **Examples**: application, system, infrastructure, other | | | `exploitability` | `number` **|** `null` | The exploitability score/rating. | | | `impact` | `number` **|** `null` | The impact score/rating. | | | `impacts` | `array` **|** `null` | The target listing of projects, applications, repos or systems this vulnerability impacts. Specifying either the project/repo name or the application URL here will auto-map this Vulnerability to the corresponding Project/CodeRepo/Application entity if a match is found. | | | `priority` | `string` **|** `null` | Priority level mapping to Severity rating. Can be a string such as 'critical', 'high', 'medium', 'low', 'info'. Or an integer usually between 0-5. | | | `production` | `boolean` **|** `null` | Indicates if this vulnerability is in production. | | | `public` | `boolean` **|** `null` | Indicates if this is a publicly disclosed vulnerability. If yes, this is usually a CVE and the 'webLink' should be set to '[https://nvd.nist.gov/vuln/detail/$\\{CVE-Number\\}](https://nvd.nist.gov/vuln/detail/$%5C%7BCVE-Number%5C%7D)' or to a vendor URL. If not, it is most likely a custom application vulnerability. | | | `references` | `array` **|** `null` | The array of links to references. | | | `remediationSLA` | `integer` **|** `null` | The number of days that the Vulnerability must be remediated within, based on SLA set by the organization's internal vulnerability management program policy. The actually due date is set by 'remediationDueOn' property on the `IMPACTS` relationship between the Vulnerability and its impacted resource entity. | | | `score` | `number` **|** `null` | The overall vulnerability score, e.g. CVSSv3. | | | `severity` | `string` **|** `null` | Severity rating based on impact and exploitability. Can be a string such as 'critical', 'high', 'medium', 'low', 'info'. Or an integer usually between 0-5. | | | `status` | `string` **|** `null` | Status of the vulnerability | | | `validated` | `boolean` **|** `null` | Indicates if this Vulnerability finding has been validated by the security team. | | | `vector` | `string` **|** `null` | The vulnerability attack vector. (e.g. a CVSSv3 vector looks like this - 'AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N') | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `summary` | `string` | A summary / short description of this entity. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `open` - `cveId` --- Source: /data-model/schemas/Weakness # Weakness A security weakness identified by a Common Weakness Enumeration (CWE) identifier. ##### Weakness properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `cweId` \* | `string` **|** `null` | The Common Weakness Enumeration (CWE) identifier of the weakness as a string formatted exactly as CWE-NNN, where NNN is one or more digits. This field must contain only the CWE ID with no additional text or context. For example, CWE-117 is valid, but 'cwe-117: FeedbackSubmit.java (Line: 142)' is invalid. | | | `open` \* | `boolean` | Indicates whether the CWE weakness is currently open (unresolved) against the entity. This boolean field is true when the weakness is active and false when it is resolved or no longer applicable. If the open status is not provided, it defaults to true. | **default**: true | | `category` | `string` | The category of the vulnerability finding **Examples**: application, system, infrastructure, other | | | `exploitability` | `string` | Indicates the likelihood of exploit. | | | `references` | `array` of `string`s | The array of links to references. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `approved` | `boolean` | If this is record has been reviewed and approved. | | | `approvedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was approved. | **Format**: `date-time` | | `approvers` | `array` of `string`s | The list of approvers on the record. | | | `classification` | `string` | The sensitivity of the data; should match company data classification scheme. For example: critical - confidential - internal - public. **Examples**: critical, confidential, internal, public | | | `content` | `string` | Text content of the record/documentation | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `exception` | `boolean` | Indicates if this record has an applied exception. For example, exception for a known finding or a PR that is not fully approved. | | | `exceptionReason` | `string` | Reason / description of the exception. | | | `production` | `boolean` | If this is a production record. For example, a production change management ticket would have this set to `true`, and have a `category` = `change` property. Another example would be a Vulnerability finding in production. | | | `public` | `boolean` | If this is a public record. Defaults to false. | **default**: false | | `reportedOn` | `number` | The timestamp (in milliseconds since epoch) when this record was reported/opened. In most cases, this would be the same as `createdOn` but occasionally a record can be created at a different time than when it was first reported. | **Format**: `date-time` | | `reporter` | `string` | The person or system that reported or created this record. | | | `summary` | `string` | A summary / short description of this entity. | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `webLink` | `string` | Hyperlink to the location of this record, e.g. URL to a Jira issue | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` - `open` - `cweId` --- Source: /data-model/schemas/Workflow # Workflow A workflow such as an AWS CodePipeline, GitHub repository workflow, or Apache Airflow. ##### Workflow properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `name` \* | `string` | Name of the workflow | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /data-model/schemas/Workload # Workload A virtual compute instance, it could be an aws-ec2-instance, a docker-container, an aws-lambda-function, an application-process, or a vmware-instance. The exact workload type is described in the \_type property of the Entity. ##### Workload properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `fqdn` | `string` | The fully qualified domain name of attached to the instance, if applicable | | | `image` | `string` | The image this workload is derived from, such as an AMI or docker image. At the abstract level, this usually maps to the \_id of a Resource. | | ##### Inherited properties | Property | Type | Description | Specifications | | --- | --- | --- | --- | | `_class` \* | `string` **|** `array` of `string`s | One or more classes conforming to a standard, abstract security data model. For example, an EC2 instance will have '\_class':'Host'. | | | `_key` \* | `string` | An identifier unique within the scope containing the object. For example, for a Bitbucket repo, this will be the GUID of the repo as assigned by Bitbucket. For an IAM Role, this will be the ARN of the role. | **minLength**: 10 | | `_type` \* | `string` | The type of object, typically reflecting the vendor and resource type. For example, 'aws\_iam\_user'. In some cases, a system knows about a type of entity that other systems know about, such as 'user\_endpoint' or 'cve'. | **minLength**: 3 | | `displayName` \* | `string` | Display name, e.g. a person's preferred name or an AWS account alias | | | `name` \* | `string` | Name of this entity | | | `active` | `boolean` | Indicates if this entity is currently active. | | | `classification` | `string` **|** `null` | The sensitivity of the data; should match company data classification scheme **Examples**: critical, confidential, internal, public | | | `complianceStatus` | `number` | The compliance status of the entity, as a percentage of compliancy. | **minimum**: 0, **maximum**: 1 | | `createdBy` | `string` | The source/principal/user that created the entity | | | `createdOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was created at the source. This is different than `_createdOn` which is the timestamp the entity was first ingested into JupiterOne. | **Format**: `date-time` | | `criticality` | `integer` | A number that represents the value or criticality of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `deletedBy` | `string` | The source/principal/user that deleted the entity | | | `deletedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was deleted at the source. | **Format**: `date-time` | | `description` | `string` | An extended description of this entity. | | | `discoveredBy` | `string` | The source/principal/user that discovered the entity | | | `discoveredOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was discovered. | **Format**: `date-time` | | `expiresOn` | `number` | If the entity is a temporary resource, optionally set the expiration date. For example, the expiration date of an SSL cert. | **Format**: `date-time` | | `id` | `string` **|** `array` | Identifiers of this entity assigned by the providers. Values are expected to be unique within the provider scope. | | | `notes` | `array` of `string`s | User provided notes about this entity | | | `owner` | `string` | The owner of this entity. This could reference the name of the owner, or as reference ID/key to another entity in the graph as the owner. | | | `public` | `boolean` | Indicates if this is a public-facing resource (e.g. a public IP or public DNS record) or if the entity is publicly accessible. Default is false. | | | `risk` | `integer` | The risk level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `status` | `string` | Status of this entity set by the external source system or by a user, e.g. Active, Inactive, Decommissioned **Examples**: active, inactive, suspended, terminated, open, closed, pending, unknown, other | | | `summary` | `string` | A summary / short description of this entity. | | | `tags` | `array` of `string`s | An array of unnamed tags | | | `temporary` | `boolean` | Indicates if this node is a temporary resource, such as a lambda instance or an EC2 instance started by ECS. | | | `trust` | `integer` | The trust level of this entity, on a scale between 1-10. | **minimum**: 1, **maximum**: 10 | | `trusted` | `boolean` | Indicates if this is a trusted resource. For example, a trusted Network, Host, Device, Application, Person, User, or Vendor. | | | `updatedBy` | `string` | The source/principal/user that updated the entity | | | `updatedOn` | `number` | The timestamp (in milliseconds since epoch) when the entity was last updated at the source. | **Format**: `date-time` | | `validated` | `boolean` | Indicates if this node has been validated as a known/valid Entity. | | | `webLink` | `string` | Web link to the source. For example: [https://console.aws.amazon.com/iam/home#/roles/Administrator](https://console.aws.amazon.com/iam/home#/roles/Administrator). This property is used by the UI to add a hyperlink to the entity. | **Format**: `uri` | ##### Required properties - `_key` - `_class` - `_type` - `name` - `displayName` --- Source: /features/admin/access-controls # Role-Based Access Control (RBAC) ## Table of Contents - [Overview](#overview) - [Components of RBAC](#components-of-rbac) - [Data Layer RBAC](#data-layer-rbac) - [Resource RBAC](#resource-rbac) - [App Level Permissions](#app-level-permissions) - [Managing User Groups](#managing-user-groups) - [Troubleshooting](#troubleshooting) ## Overview JupiterOne provides a comprehensive role-based access control (RBAC) system that allows administrators to manage user access across the platform. The system is designed to provide granular control over: - What data users can access - What resources they can manage - What features they can use > **NOTE** > > All JupiterOne accounts have access to RBAC features. The system is designed to be flexible enough to support both simple and complex permission requirements. ## Components of RBAC The RBAC system consists of three main components that work together to provide comprehensive access control: 1. **Data Layer RBAC** - Controls what data users can access when writing J1QL queries or viewing dashboards 2. **Resource RBAC** - Manages CRUD permissions for major resource types (Integrations, Rules, Dashboards) 3. **App Level Permissions** - Controls read/write access to application components ### Data Layer RBAC Data Layer RBAC allows administrators to restrict what data users can access when writing J1QL queries or viewing dashboards. This is configured through query policies that filter data based on: - Entity class - Entity type - Integration class - Integration type - Any other properties that are queryable on an entity #### Where Query Policies Apply Query policies filter the J1QL a user runs on demand. Some features run queries on their own or show stored results, and they handle query policies differently: - **Alert rules**: Rules run with account-wide access. A rule's scheduled run isn't tied to the user who created or last edited it, and no query policy is applied to its J1QL. This covers everything the rule produces: its stored evaluation results, its alert counts, and the data passed to its actions (Slack, email, webhooks, ticketing, and so on). - **Stored rule results**: Stored evaluation results are shown as they were captured. They aren't filtered by the viewer's query policy. Resource RBAC controls who can see a rule's results, based on whether the viewer can access that rule or its resource group. Access isn't controlled row by row. - **Trend widgets**: Trend widgets filter the results they show by the viewer's query policy. Admins can turn this filtering off for an individual widget. Filtering works by matching the policy's properties against each returned row, so queries that aggregate or that return renamed properties may not filter the way you expect. - **Questions**: Question results aren't filtered by query policy, including question widgets on dashboards. > **NOTE** > > If some users shouldn't see sensitive data, use Resource RBAC to stop them from creating or viewing alert rules and questions. To configure Data Layer RBAC: 1. Go to **Settings** (the gear icon) **\>** **User Groups** 2. Select the user group you want to edit 3. In the Query Policy section, select and add the query type and values for each filter and click **Add** ![Configure Data Layer RBAC](/assets/images/data-layer-rbac-a62299730ebc149fb42f28041a2b15a2.png) ![Data Layer RBAC Query Policy Configuration](/assets/images/data-layer-rbac-query-policy-4ac5b560ce71557c2e27be56da65d34f.png) If you want to set up queries based on sets of filters that you want to then link by OR logic, create separate permission sets. ### Resource RBAC Resource RBAC allows administrators to manage CRUD (Create, Read, Update, Delete) permissions for major resource types within JupiterOne: - Alerts - Collectors - Dashboards - Integrations - Control Frameworks - Controls > **NOTE** > > Resource RBAC has no impact on Data Layer RBAC for resource management. For example, if a user has Resource RBAC permissions to manage an integration, they will be able to do so regardless of their Data Layer RBAC settings. #### Resource Groups Resources can be organized into resource groups for easier permission management. A resource group is a collection of resources that logically belong together to meet a specific use case. ![Resource Groups](/assets/images/resource-groups-eaf47541c968e57c4ae3bb7a67a764b6.png) > **NOTE** > > - A resource can only be part of a single resource group > - Multiple groups can have access to that resource group > - _No Resource Group_ is not a resource group itself. You cannot give a group access to all resources that do not have a resource group. You can, however, create a resource group called 'General', and assign resources to that group. #### Resource RBAC Permissions You can manage RBAC permissions at the user group level in the settings app. Below are some common use cases: ##### Resource Group Admin This group can create, read, update, and delete resources within a single resource group. ![Resource Group Admin](/assets/images/resource-group-admin-ffb4e0bd0efba75682c6afb5a88c1735.png) ##### Resource Group Readonly This group can read resources within a single resource group, but cannot create or update resources. This user will have read access to all future resources that are created within this resource group. ![Resource Group Readonly](/assets/images/resource-group-readonly-2e2bc790bb19d49a71d072a72bbab497.png) ##### Resource Area Admin This group can read, update, and delete **all** resources as well as create resources within any resource group. They can also create resources outside of resource groups. ![Resource Area Admin](/assets/images/resource-area-admin-dc3a6f8f05207f8cabe11a0937dac8c6.png) ##### Granular Resource Access This is a group that has access to only a few specific resources. This group cannot create resources because only a resource area admin can create resources outside of resource groups. ![Granular Resource Access](/assets/images/granular-resource-7e2244d3f8bc8620d986c8ce53d552d2.png) > **NOTE** > > We recommend staying away from granular resource access unless it is very limited in scope. Managing access this way, without resource groups, can become very cumbersome and runs into some system limitations that are set in place. ### App Level Permissions App Level Permissions manage read and write access to application components that do not currently support Resource RBAC. Each app has two permission levels: - **Read-only** - Allows viewing and using the app's features - **Admin** - Allows all actions including administrative functions ![App Level Permissions](/assets/images/app-level-permissions-1f5b0a4fc1d49374b79ae73680fa29b3.png) > **NOTE** > > Admin permissions will allow all actions included in the Read-only permissions for each app. #### Global Shared Permissions Some permissions are not bound to a specific app but are relevant to resources that span different apps: - **Graph Data** - Used anywhere entity and relationship data is retrieved on demand or when entities/relationships are mutated directly - **Questions** - Saved J1QL queries used in the Home page Questions Library and in app for mapping to compliance requirements > **NOTE** > > The Graph Data permission does not completely restrict the ability to query graph data. You should limit access to graph data through Data Layer RBAC described above. #### App List and Required Permissions The following apps are available, along with shared permissions that may be used by features in each app: > **NOTE** > > You may see a subset of these apps in your settings based on your account subscription level. - **Home Page** (the base/root page - `/home`) > Shared permissions used by this app: **Read / Write Questions** and **Read Graph Data** for access to Questions Library and running J1QL queries respectively. Optionally **Write Graph Data** for editing entities from query results. - **Assets** (URL ending with `/assets`) > Shared permissions used by this app: **Read / Write Graph Data** (app is unusable without Read Graph Data, Write Graph Data used for editing entities). **Assets: Admin** is required to view and manage [asset criticality](/features/assets/asset-criticality.md). - **Policies** (URL ending with `/policies`) > Shared permissions used by this app: **Read Graph Data** for loading the policy elements and raw data, and **Write Graph Data** for saving changes to the policy entities. - **Compliance** (URL ending with `/compliance`) > Shared permissions used by this app: **Read Graph Data** for expanding queries used as evidence to view results, **Read / Write Questions** for editing the questions used in this app. - **Vulnerabilities** (URL ending with `/vulnerabilities`) > Shared permissions used by this app: **Read Graph Data** (the app shows empty tables without it) and **Write Graph Data** for changing vulnerability lifecycle states. See [Unified Vulnerability Management permissions](/features/vulnerability-management/permissions.md) for the permissions required by each action. - **Shared: Graph Data** > Shared permissions used by this app: **Read Graph Data**. App will not function without this permission as it is focused on graph exploration. - **Shared: Questions** > Shared permissions used by this app: **Questions**. This gives users access to the question library in JupiterOne. ## Managing User Groups ### Creating User Groups 1. Navigate to the **Settings** menu (the cog icon next to notifications) 2. Click on **User groups** in the **Admin** section 3. From the new window select **New group** 4. Enter the desired **Group name** and **Group description**, and click **Create** 5. You will be navigated to the Group's **Details** page. From here, you can customize: - Data Layer RBAC policies - Resource RBAC permissions - App Level Permissions 6. Lastly, to add users to the group, navigate to the Group Members tab and select **Add Member** ![Create and edit user groups within JupiterOne](/assets/images/group-create-edit-f1afdf764efc8ecf48c258309b510e54.png) ### Editing User Groups 1. Navigate to **Settings > User Groups** 2. Select the user group from the menu that you wish to edit 3. Make your desired changes in the Details and/or Group Members sections 4. Press **Save group** > **NOTE** > > Changes made to members are saved immediately, only changes made to the user group's details section will need to be manually saved with the Save button. You can also revert accidental changes to a user group by pressing **Reset**. ### Switching User Group Views Users can be members of multiple groups. You can switch between groups to utilize different permission sets: 1. Select the profile icon in the side nav 2. Choose the group listed under **User groups** ![Choosing user permission group in JupiterOne](/assets/images/role-based-changes-13cdfc642119d6a4c91e4d6237db4250.png) > **NOTE** > > When "All Permissions" is selected, permissions across groups are 'rounded up'. For example, if a user is part of the Administrator group, their edit access from that group would override view permissions in any other group they may be a part of. To swap to the read-only view, they would need to choose a particular group. ## Troubleshooting ### Common Issues 1. **Users Can't Access Expected Resources** - Check if the user is in the correct group - Verify Data Layer RBAC policies are correctly configured - Ensure resource groups are properly assigned 2. **Resource Group Problems** - Confirm resources are assigned to the correct group - Check if resources can only be in one group - Verify group access permissions are properly set ### Getting Help If you encounter issues with RBAC configuration consult with your JupiterOne account representative --- Source: /features/admin/admin-settings # Admin settings In addition to account settings, JupiterOne workspace admins have additional configuration settings available to them to manage and organize their JupiterOne workspace. All of the Admin settings can be found in the **Admin** panel in the **Settings** menu (the cog icon) in the top-right of the window. From within the Admin panel, you can access: - Account management - Users - User groups - Security & access - Account API tokens - Account parameters - User API tokens - Organizational units - Resource groups - Audit events - Data streaming ### Account Management The Account Management section provides an overview of your JupiterOne Workspace's account. Here you can find your account usage details, including the breakdown of total entities and billable entities. ![Account Usage graph and billable entity count on JupiterOne](/assets/images/billable-entities-31eb463529f27fc74494c229e8c174a8.png) You can also access the following information relating to your workspace: - Company Logo URL (editable) - Display Name (editable) - Vanity URL - Account ID - Owner ### Users Within the Users section, you can review all current workspace users and manage user access. #### Invite users You can invite new users to your JupiterOne workspace by selecting **Invite user**. Provide their email and select the corresponding user group for which you would like them to have access, and click **Send invitation**. #### Review pending invitations In addition to inviting new users, you can review outstanding invitations from the Users section. If there are pending invitations, they will be displayed above the User list as illustrated below. ![Pending invites in the JuptierOne Admin User's section](/assets/images/pending-invites-ca3db719333f76d2be1fd3ec3481664a.png) Select **Review invitations** within the notification to view the pending invitations. Within the new window, you will find the group member email and invitation send date. **To revoke an invitation**, click the revoke button next to the invite. ### User groups From the User Groups tab, you are able to create and manage the user groups within your JupiterOne workspace. You can find detailed [documentation covering user access and groups here](/features/admin/access-controls.md). ### Security & Access There are several options for managing your workspace's Access and Security to your JupiterOne workspace. From within the Security & Access section, you can: - **Control Domain Access**: Restrict user workspace access to only allow user emails with particular whitelisted domains. - Configure an **IP allowlist**: Restrict the account to a set of source IP addresses, rejecting web app and API traffic from anywhere else. [Read more about the IP allowlist →](/features/admin/ip-allowlist.md) - Specify the **Default User Groups**: this determines the user groups assigned to SSO sign-ins that arrive without a `group_names` claim. When the list is empty, these sign-ins fall back to the **Users** group. This behavior is controlled by the **Assign default groups to SSO users without group claims** switch, which is on by default. When you turn it off, a SAML sign-in with no `group_names` claim does not create a new user and does not add or remove any group memberships—useful when there is another source of truth for users and groups. - Enable **Single Sign On (SSO)** [Read more about enabling SSO →](/features/admin/saml-sso.md) - Enable **Require MFA for non-SSO users**: this requires users that are able to log in with email and password to enroll an Authenticator app to access the JupiterOne workspace. - Configure an **Inactivity Timeout**: as an added security measure, you can automatically log users out after a period of inactivity. When a user's session is idle for longer than the configured duration, they are signed out of the JupiterOne workspace and must log in again. - Set the **User API token expiration**: define an account-wide maximum lifetime for personal User API Tokens. The limit applies only to newly created tokens—users cannot create a token that expires beyond it, and the create-token dialog caps the expiration accordingly. Existing tokens are unaffected and keep their original expiration. Leaving this unset (or set to no limit) allows tokens up to the standard one-year maximum. ### Account API Tokens You can manage account-wide API Tokens by navigating to **Settings > Admin > Account API Tokens**. From here, you are able to access, create, and remove API Tokens for your JupiterOne workspace. Additionally, within this window, JupiterOne displays am API Consumption graph that tracks the total number of invocations on a daily basis. ### Account Parameters Account parameters allow you to configure and store lengthy values as variables for use within queries and rules. Defining parameters enables users in your JupiterOne workspace to utilize those parameters as shorthand reference to a particular value when querying or creating alerts. [Read more about Parameter configuration here →](/features/admin/parameters.md) ### User API Tokens Much like Account API Tokens, JupiterOne Admin have the ability to review personal User API Tokens for all users within their JupiterOne workspace. From User Tokens in the Admin panel, you can review and remove all personal API Tokens that have been created by users in your JupiterOne workspace. --- Source: /features/admin/askj1-ai # Natural Language search > **INFO** > > This page has moved. JupiterOne AI capabilities, including natural language search, are now documented in the [JupiterOne AI](/features/jupiterone-ai.md) section. > > For natural language search specifically, see [Natural language search](/features/jupiterone-ai/ai-capabilities.md#natural-language-search). --- Source: /features/admin/data-streaming # Data Streaming (J1DS) JupiterOne Data Streaming (J1DS) streams your JupiterOne data to an Amazon S3 bucket you own, giving you access to it outside JupiterOne. Two streams are available, and each can be enabled on its own: | Stream | Contents | | --- | --- | | **Graph changes** | Entity and relationship changes from your graph | | **Audit log** | Account activity events — who did what, and when | Both write to the same bucket under separate prefixes, so you configure the destination once. ## How it Works **Graph changes.** J1DS captures the graph database transaction logs, gathers the change events, and writes those events to your configured AWS S3 bucket. These events represent the "after" state of any change made to an Entity or Relationship in the graph. The events can be Create, Update, or Delete events. **Audit log.** J1DS periodically reads your account's activity events and writes them to the same bucket. These are the same records shown under **Settings > Audit Events** in the JupiterOne UI, in a form suited to long-term retention and querying. ## Requirements - A JupiterOne account with the J1DS entitlement (covers both streams) - Administrator access to your JupiterOne account - An Amazon S3 bucket in the required AWS region (shown in the Data Streaming settings page) - Your 12-digit AWS Account ID - The S3 bucket name ## Configuring Your S3 Bucket Policy Before enabling data streaming, you must add a bucket policy to your S3 bucket that grants JupiterOne write access. Without this policy, the **Test Connection** step will fail. The **S3 Bucket Policy** panel on the Data Streaming settings page provides a ready-to-use policy with the correct AWS account ID and role already filled in for your environment. Copy the policy from that panel and replace `` with the name of your S3 bucket. > **INFO** > > The role name `jupiterone-data-streaming` is the same for all deployments — do not change it. This policy grants JupiterOne **write-only** access (`s3:PutObject`) to the `jupiterone/*` prefix in your bucket and requires encrypted transport. ## Enabling Data Streaming 1. Navigate to **Settings > Data Streaming**. 2. Review the **Setup Instructions** panel on the right — it shows the required AWS region for your S3 bucket. 3. Copy the bucket policy from the **S3 Bucket Policy** panel and apply it to your S3 bucket. 4. Turn on the streams you want: - **Stream graph changes** — entity and relationship changes - **Stream audit log** — account activity events You can enable either, or both. Turning on at least one enables the fields below. 5. Enter your **S3 Bucket Name**. 6. Enter your **AWS Account ID** (12 digits). 7. Check the region confirmation checkbox to confirm your S3 bucket is in the required region. 8. Click **Test Connection** — the test must succeed before you can save. 9. Click **Save**. > **NOTE** > > You must successfully run **Test Connection** before saving for the first time. The Save button is not enabled until the connection test passes. > **TIP** > > Enabling only the audit log is a supported configuration. Because graph streaming is what requires change capture on your graph database, leaving it off means your account carries none of that overhead while still receiving audit data. ## What Happens When You Enable Data Streaming - Data is written to your S3 bucket every few minutes (typically every 5–15 minutes). If there is nothing new, no file is written at all. - Only data from the point of enablement forward is captured — there is no historical backfill, for either stream. - With **graph changes** on, JupiterOne begins capturing changes to entities and relationships in your graph. - With **audit log** on, audit events are exported once they have settled. An event becomes eligible a few minutes after it occurs, so the audit stream trails live activity slightly more than the graph stream does. Nothing is skipped as a result — the delay exists precisely so that events still in flight are not missed. ## Data Partitioning Each stream writes under its own prefix, with the same partitioning below it: ```text jupiterone/graph/cdc/accountId=/year=/month=/day=/time=.jsonl.gz jupiterone/audit/accountId=/year=/month=/day=/time=.jsonl.gz ``` Each file is gzip compressed and contains newline-delimited JSON records covering the period since the last export. This partitioning scheme works well with standard discovery tools (e.g. AWS Glue crawler) and allows customers with multiple JupiterOne accounts to collect data into a single target bucket. Because the two streams occupy separate prefixes, you can grant access to one and not the other, apply different lifecycle rules to each, or crawl them as separate tables. > **INFO** > > J1DS also writes to `jupiterone/.connection-test`, which is used to test connectivity from the JupiterOne platform to your S3 bucket. ## Data Format ### Graph changes Each record represents the "after" state of a graph object following a change. Example: ```json { "operation": "u", "eventType": "entity", "properties": { "_scope": "eb4f2fac-e9a1-474d-8859-5f0e5ef90b16", "_source": "integration-managed", "_key": "slack-user:team_T0129XXXXXX:user_U09B1XXXXXX", "_accountId": "j1dev", "_type": "slack_user", "_class": ["User"], "_id": "3e6fa6e5-158d-5f03-8839-a964652b57dc", "_deleted": false, "_version": 1, "_createdOn": 1755879780646, "_beginOn": 1759510655079, "username": "some.user", "email": "some.user@example.com", "displayName": "Some User", "active": true }, "labels": ["Entity", "User", "slack_user"] } ``` - `eventType` — `entity` or `relationship` - `operation` — `c` (create), `u` (update), or `d` (delete) - `properties` — the full set of properties for the object after the change - `labels` — the graph labels (classes and type) for the object ### Audit log Each record is one activity event. Example: ```json { "id": "c95f969f-9f95-4822-a075-8271156a6f3a", "accountId": "j1dev", "timestamp": 1787747715680, "category": "audit/create", "resourceType": "iam:token", "resourceId": "9c1019cc-adda-44e8-8923-74ebf3c3e79d", "performedByUserId": "someone@example.com", "data": { "username": "someone@example.com", "tokenName": "user-session-566c7868", "tokenType": "user-session" } } ``` - `id` — unique identifier for the event. Use it to deduplicate (see [Known Limitations](#known-limitations)) - `accountId` — your JupiterOne account, included in the record as well as the path so records stay self-describing when merged across accounts - `timestamp` — when the action occurred, in epoch milliseconds - `category` — the action, prefixed `audit/`; for example `audit/create`, `audit/update`, `audit/delete`, `audit/authenticate` - `resourceType` / `resourceId` — what was acted on - `performedByUserId` — who performed it, resolved to an email address where possible. **May be absent**: the field is optional, and events raised by the platform itself rather than by a person carry no user. Treat it as nullable when you define a table schema over these files - `data` — event-specific detail; the shape varies by `resourceType` > **NOTE** > > Records within a single audit file are ordered newest first. Order across files is not guaranteed, so sort by `timestamp` if sequence matters to you. ## Security - When configuring J1DS you must provide the bucket name **and** the AWS account that the bucket belongs to. J1DS uses the `expected bucket owner` mechanism when writing, which mitigates S3 bucket hijacking. - The bucket policy grants **write-only** access — J1DS cannot read data from your bucket. - All data transfer requires encrypted transport (`aws:SecureTransport`). ## Disabling Data Streaming 1. Navigate to **Settings > Data Streaming**. 2. Turn off the stream you no longer want — or both. 3. Click **Save**. That stream stops and no new data is written for it. Existing data in your S3 bucket is not affected or deleted, and the other stream is unaffected if you left it on. ## Re-enabling Data Streaming > **WARNING** > > Re-enabling a stream starts fresh. Anything that occurred while it was disabled is **not** retroactively captured. Only new data going forward will be streamed. This applies to both streams. To re-enable, follow the same steps described in [Enabling Data Streaming](#enabling-data-streaming). ## Known Limitations 1. Graph change data is written on a best-efforts basis and is designed for "at most once" delivery. The system is tolerant to transient failures but cannot buffer transactions indefinitely. 2. Audit log data is designed for "at least once" delivery, so an event can appear more than once — for example if an export is retried. Deduplicate on the `id` field, which is stable for a given event. 3. S3 managed KMS encryption is supported. The `PutObject` calls made by J1DS (including multipart uploads) work with S3 managed KMS encryption keys. 4. Audit records carry the fields listed under [Data Format](#audit-log). Resource display names and descriptions are not included as separate fields; where available, equivalent detail appears inside `data`. --- Source: /features/admin/data-streaming-athena-queries # Querying J1DS Data in Amazon Athena This page walks through deploying an AWS Glue and Athena infrastructure stack on top of your J1DS S3 bucket and running three SQL query patterns against your JupiterOne entity and relationship change history. For instructions on enabling J1DS and configuring your S3 bucket, see [Data Streaming (J1DS)](/features/admin/data-streaming.md). > **NOTE** > > This stack covers the graph change stream (`jupiterone/graph/cdc`) only. The audit log stream writes under `jupiterone/audit` with a different record shape, so it needs its own Glue table and is not created by this template. ## Prerequisites - AWS account with permissions to create CloudFormation stacks, Glue databases and tables, Athena workgroups, S3 buckets, and IAM roles - AWS CLI v2 installed and configured with credentials for your target account - J1DS enabled and streaming to an S3 bucket (see [Data Streaming (J1DS)](/features/admin/data-streaming.md) for setup) - The S3 bucket name where J1DS is writing data ## Deploy the Stack **1\. Download the CloudFormation template:** [Download the CloudFormation template](/assets/files/j1ds-athena-setup-fcf675926654923f4ab9c25c6dc51a51.yaml) **2\. Deploy the stack:** ```bash aws cloudformation deploy \ --template-file j1ds-athena-setup.yaml \ --stack-name j1ds-usage-example \ --parameter-overrides \ SourceBucketName=YOUR_BUCKET_NAME \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM ``` Replace `YOUR_BUCKET_NAME` with your J1DS S3 bucket name. **3\. Note the stack outputs** — the deploy command prints the Glue database name (`j1ds-usage-example-cdc`) and Athena WorkGroup name (`j1ds-usage-example`). These values appear in every query. ## Verify the Deployment Run a COUNT query in the Athena console to confirm data is accessible. Open the [Amazon Athena console](https://console.aws.amazon.com/athena/), select the `j1ds-usage-example` workgroup, and run: ```sql SELECT COUNT(*) FROM "j1ds-usage-example-cdc".entities WHERE accountid = 'YOUR_ACCOUNT_ID' AND year = 2026 AND month = 3; ``` Replace `YOUR_ACCOUNT_ID` with your JupiterOne account ID and adjust `year`/`month` to the current period. **Expected:** a non-zero row count. If the result is zero, verify that J1DS is streaming (check your S3 bucket for recent `.jsonl.gz` files) and that the `year`/`month` values match files present in the bucket. > **INFO** > > The `accountid` partition filter is **required** for all queries. Omitting it causes an Athena error, not an empty result — the table uses an injected partition projection that requires a caller-supplied value. > > This is especially important if you stream multiple JupiterOne accounts (e.g., dev and prod) into the same CDC bucket. Each account's data is stored under a separate `accountId=` partition, so the `accountid` filter ensures your query returns results for a single account. ## CDC Schema Reference ### Record Structure Every row in the `entities` and `relationships` tables corresponds to one CDC event: | Field | Column | Type | Values | | --- | --- | --- | --- | | operation | `operation` | string | `c` (create), `u` (update), `d` (delete) | | eventType | `eventtype` | string | `entity` or `relationship` | | properties | `properties` | string (JSON) | JSON blob — access with `json_extract_scalar()` | | labels | `labels` | array (entities) / string (relationships) | Entity: `["Entity","User","slack_user"]` / Relationship: `"HAS"` | ### Key Properties Fields The `properties` column is a raw JSON string. Use `json_extract_scalar()` to access individual fields: | Field | Access Pattern | Description | | --- | --- | --- | | `_id` | `json_extract_scalar(properties, '$._id')` | Stable UUID — the entity or relationship identifier | | `_type` | `json_extract_scalar(properties, '$._type')` | Provider-specific type, e.g., `slack_user`, `aws_s3_bucket` | | `_class` | `json_extract_scalar(properties, '$._class')` | Abstract class, e.g., `User`, `DataStore` | | `_beginOn` | `CAST(json_extract_scalar(properties, '$._beginon') AS BIGINT)` | Epoch milliseconds when this version became current | | `displayName` | `json_extract_scalar(properties, '$.displayName')` | Human-readable name | ## Query: Entity History Use this query to audit all state changes to a specific entity over time. It returns every CDC event for a single entity ID, ordered chronologically. Replace `YOUR_ENTITY_ID` with the `_id` value of the entity you want to audit. ```sql SELECT year, month, day, operation, -- c=create, u=update, d=delete eventtype, -- always 'entity' in this table json_extract_scalar(properties, '$._id') AS entity_id, json_extract_scalar(properties, '$._type') AS entity_type, json_extract_scalar(properties, '$._class') AS entity_class, json_extract_scalar(properties, '$.displayName') AS display_name, properties FROM "j1ds-usage-example-cdc".entities WHERE accountid = 'YOUR_ACCOUNT_ID' -- REQUIRED: injected partition AND year = 2026 -- narrow partition range AND month = 3 -- to reduce bytes scanned AND json_extract_scalar(properties, '$._id') = 'YOUR_ENTITY_ID' -- replace with your entity _id ORDER BY year, month, day; ``` ### Example Output | year | month | day | operation | entity\_type | entity\_class | display\_name | | --- | --- | --- | --- | --- | --- | --- | | 2026 | 3 | 17 | c | slack\_user | User | Alice Johnson | | 2026 | 3 | 18 | u | slack\_user | User | Alice Johnson | | 2026 | 3 | 19 | u | slack\_user | User | Alice J. | ## Query: Latest State Snapshot Use this query to get the current state of all entities in your account — one row per entity, deduplicated to the most recent version. It uses `MAX_BY` to select the properties blob with the highest `_beginon` timestamp for each entity ID. ```sql SELECT json_extract_scalar(latest_properties, '$._id') AS entity_id, json_extract_scalar(latest_properties, '$._type') AS entity_type, json_extract_scalar(latest_properties, '$._class') AS entity_class, json_extract_scalar(latest_properties, '$.displayName') AS display_name, latest_properties AS properties FROM ( SELECT MAX_BY(properties, CAST(json_extract_scalar(properties, '$._beginon') AS BIGINT)) AS latest_properties FROM "j1ds-usage-example-cdc".entities WHERE accountid = 'YOUR_ACCOUNT_ID' -- REQUIRED: injected partition AND year = 2026 -- filter to recent data AND month = 3 -- to control scan cost AND json_extract_scalar(properties, '$._beginon') IS NOT NULL -- guard against missing _beginon GROUP BY json_extract_scalar(properties, '$._id') ) ORDER BY entity_type, display_name; -- NOTE: _beginon is epoch milliseconds stored as a JSON number. -- CAST to BIGINT is required for correct MAX_BY ordering (not lexicographic). -- operation: c=create, u=update, d=delete ``` ### Example Output | entity\_id | entity\_type | entity\_class | display\_name | | --- | --- | --- | --- | | a1b2c3d4-... | aws\_s3\_bucket | DataStore | my-data-bucket | | d4e5f6a7-... | slack\_user | User | Alice Johnson | ## Query: Change Detection Use this query to see what changed in your account over a time window, grouped by day, operation type, and entity type. Adjust the `day BETWEEN` range to scope the window you want to examine. ```sql SELECT year, month, day, operation, -- c=create, u=update, d=delete json_extract_scalar(properties, '$._type') AS entity_type, COUNT(*) AS change_count FROM "j1ds-usage-example-cdc".entities WHERE accountid = 'YOUR_ACCOUNT_ID' -- REQUIRED: injected partition AND year = 2026 AND month = 3 AND day BETWEEN 1 AND 7 -- replace with your window GROUP BY year, month, day, operation, json_extract_scalar(properties, '$._type') ORDER BY year, month, day, operation; -- TIP: To compare two windows, wrap each as a subquery and LEFT JOIN on entity_type, -- or use EXCEPT to find entity types that appeared only in one window. -- eventtype is always 'entity' in this table (use relationships table for relationship changes). ``` ### Example Output | year | month | day | operation | entity\_type | change\_count | | --- | --- | --- | --- | --- | --- | | 2026 | 3 | 1 | c | aws\_iam\_role | 12 | | 2026 | 3 | 1 | u | slack\_user | 45 | | 2026 | 3 | 2 | c | aws\_s3\_bucket | 3 | ## Cost and Performance Notes > **NOTE** > > - Athena charges **$5 per TB scanned** > - All queries include partition filters (`accountid`, `year`, `month`) to minimize scan scope > - The WorkGroup enforces a **10 GB per-query cutoff** (~$0.05 maximum per query) > - Typical per-query cost for a single account's daily data: **under $0.01** > - Adding `day` filters (e.g., `AND day BETWEEN 1 AND 7`) reduces scanned data further --- Source: /features/admin/ip-allowlist # IP allowlist The IP allowlist restricts your JupiterOne account to a set of source IP addresses that you define. Once enabled, requests coming from any other address are rejected. The allowlist applies to the whole account, not to individual users or groups. It is configured by account admins in **Settings > Admin > Security & Access**. > **NOTE** > > The allowlist is an access control, not a network boundary. It does not make JupiterOne unreachable from other addresses — it means requests from those addresses are refused. ## What the allowlist blocks When the allowlist is enabled, JupiterOne checks the source IP of every authenticated request against your entries and rejects anything that does not match. This covers: - **Web app usage.** Every action a user takes in the JupiterOne app. - **API and SDK traffic.** Anything authenticated with a JupiterOne API token, including the CLI, the SDK, custom scripts, and CI jobs. - **Integrations you run yourself.** Any collector or job that authenticates to JupiterOne with an account or user API token from your own infrastructure. Blocked requests fail with a permission error. They are not treated as authentication failures, so a blocked user is not prompted to log in again. ### What the allowlist does not block **Signing in.** A user connecting from a non-allowed address can still authenticate, but no action they take afterward will succeed. Expect this to look like a working login followed by an app that cannot load anything. The allowlist governs requests made against your account with your users' sessions and your API tokens. It is a restriction on where your account can be used from, not a replacement for the rest of your access controls — keep managing token lifetimes, user offboarding, and group permissions as you would without it. > **NOTE** > > If you are assessing the allowlist as part of a security review and need its exact coverage boundary, contact your JupiterOne account team or support rather than relying on this page. > **CAUTION** > > JupiterOne staff are subject to your allowlist too. Support engineers cannot access your account from outside your allowed addresses. See [If you get locked out](#if-you-get-locked-out) for what this means for support requests. ## Configure the allowlist 1. Click **Settings** (the gear icon) and select **Admin**. 2. Open **Security & Access** and find the **IP allowlist** section. 3. Enable the allowlist and add your entries. You can add them one at a time, or paste many at once with **Bulk add** (see [Add entries in bulk](#add-entries-in-bulk)). For each entry, provide: - **Address or range** — a single IPv4 or IPv6 address, or a CIDR block of either family. For example `203.0.113.42`, `203.0.113.0/24`, `2001:db8::1`, or `2001:db8::/48`. - **Label** — a short description of what the entry covers, such as `HQ office egress` or `Chicago VPN`. Labels are up to 64 characters. 4. Save your changes. An account can hold up to 500 entries, and malformed addresses are rejected as you type them. An enabled allowlist with no entries is not a valid configuration and will not save. ### Add entries in bulk To add many entries at once, click **Bulk add** next to **Add CIDR**. This opens the **Bulk add CIDR ranges** dialog with a box to paste into. Paste one entry per line, as `,