diff --git a/docs/build-your-software-catalog/sync-data-to-catalog/incident-management/servicenow.md b/docs/build-your-software-catalog/sync-data-to-catalog/incident-management/servicenow.md index fa0a4bdc8b..831a63837a 100644 --- a/docs/build-your-software-catalog/sync-data-to-catalog/incident-management/servicenow.md +++ b/docs/build-your-software-catalog/sync-data-to-catalog/incident-management/servicenow.md @@ -37,6 +37,7 @@ The resources that can be ingested from ServiceNow into Port are listed below. - `Group` - (`/api/now/table/sys_user_group`) - `Service Catalog` - (`/api/now/table/sc_catalog`) - `Incident` - (`/api/now/table/incident`) +- `Vulnerability` - (`/api/now/table/sn_vul_vulnerable_item`) :::tip Ingesting extra resources While the section above only lists three supported resources, Port's ServiceNow integration uses the [ServiceNow Table API](https://developer.servicenow.com/dev.do#!/reference/api/xanadu/rest/c_TableAPI#table-GET) to ingest entities. @@ -984,6 +985,129 @@ resources: createdBy: .sys_created_by isActive: .active priority: .priority + - kind: sn_vul_vulnerable_item + selector: + query: 'true' + apiQueryParams: + sysparmDisplayValue: 'true' + sysparmExcludeReferenceLink: 'false' + sysparmFields: 'sys_id,state,first_found,last_found,priority,risk_score,sys_created_on,sys_created_by,sys_updated_on,sys_updated_by,active' + port: + entity: + mappings: + identifier: .sys_id + title: (.number // "Vulnerability " + .sys_id) + blueprint: '"servicenowVulnerability"' + properties: + state: .state + priority: .priority + riskScore: .risk_score + firstFound: .first_found + lastFound: .last_found + createdOn: .sys_created_on + createdBy: .sys_created_by + updatedOn: .sys_updated_on + updatedBy: .sys_updated_by + isActive: .active +``` + + + +### Vulnerability + +
+Vulnerability blueprint + +```json showLineNumbers +{ + "identifier": "servicenowVulnerability", + "title": "Servicenow Vulnerability", + "icon": "Servicenow", + "schema": { + "properties": { + "state": { + "title": "State", + "type": "string" + }, + "priority": { + "title": "Priority", + "type": "string" + }, + "riskScore": { + "title": "Risk Score", + "type": "number" + }, + "firstFound": { + "title": "First Found", + "type": "string" + }, + "lastFound": { + "title": "Last Found", + "type": "string" + }, + "createdOn": { + "title": "Created On", + "type": "string" + }, + "createdBy": { + "title": "Created By", + "type": "string" + }, + "updatedOn": { + "title": "Updated On", + "type": "string" + }, + "updatedBy": { + "title": "Updated By", + "type": "string" + }, + "isActive": { + "title": "Is Active", + "type": "boolean" + } + }, + "required": [] + }, + "mirrorProperties": {}, + "calculationProperties": {}, + "aggregationProperties": {}, + "relations": {} +} +``` + +
+ +
+Integration configuration + +```yaml showLineNumbers +createMissingRelatedEntities: true +deleteDependentEntities: true +resources: + - kind: sn_vul_vulnerable_item + selector: + query: "true" + apiQueryParams: + sysparmDisplayValue: 'true' + sysparmExcludeReferenceLink: 'false' + sysparmFields: 'sys_id,state,first_found,last_found,priority,risk_score,sys_created_on,sys_created_by,sys_updated_on,sys_updated_by,active' + port: + entity: + mappings: + identifier: .sys_id + title: (.number // "Vulnerability " + .sys_id) + blueprint: '"servicenowVulnerability"' + properties: + state: .state + priority: .priority + riskScore: .risk_score + firstFound: .first_found + lastFound: .last_found + createdOn: .sys_created_on + createdBy: .sys_created_by + updatedOn: .sys_updated_on + updatedBy: .sys_updated_by + isActive: .active ```
@@ -1225,6 +1349,28 @@ Here is an example of the payload structure from ServiceNow: +
+ Vulnerability response data + +```json showLineNumbers +{ + "sys_id": "b7ad7e0347b1f650360b3b12d16d434f", + "number": "VIT0010001", + "state": "Under Investigation", + "priority": "2 - High", + "risk_score": "75", + "first_found": "2024-01-15", + "last_found": "2024-12-18", + "sys_created_on": "2025-12-18 06:21:33", + "sys_created_by": "admin", + "sys_updated_on": "2025-12-18 06:21:33", + "sys_updated_by": "admin", + "active": "true" +} +``` + +
+ ### Mapping Result The combination of the sample payload and the Ocean configuration generates the following Port entity: @@ -1313,6 +1459,38 @@ The combination of the sample payload and the Ocean configuration generates the +
+ Vulnerability entity in Port + +```json showLineNumbers +{ + "identifier": "b7ad7e0347b1f650360b3b12d16d434f", + "title": "VIT0010001", + "icon": "ServiceNow", + "blueprint": "servicenowVulnerability", + "team": [], + "properties": { + "state": "Under Investigation", + "priority": "2 - High", + "riskScore": "75", + "firstFound": "2024-01-15", + "lastFound": "2024-12-18", + "createdOn": "2025-12-18 06:21:33", + "createdBy": "admin", + "updatedOn": "2025-12-18 06:21:33", + "updatedBy": "admin", + "isActive": "true" + }, + "relations": {}, + "createdAt": "2025-12-18T06:21:33.000Z", + "createdBy": "hBx3VFZjqgLPEoQLp7POx5XaoB0cgsxW", + "updatedAt": "2025-12-18T06:21:33.000Z", + "updatedBy": "hBx3VFZjqgLPEoQLp7POx5XaoB0cgsxW" +} +``` + +
+ ## Relevant Guides For relevant guides and examples, see the [guides section](https://docs.port.io/guides?tags=ServiceNow).