(resource: JsonRecord)
| 608 | } |
| 609 | |
| 610 | export function normalizeVantaVendor(resource: JsonRecord): VantaVendor { |
| 611 | const authDetails = isRecordLike(resource.authDetails) |
| 612 | ? { |
| 613 | method: getString(resource.authDetails.method), |
| 614 | passwordMFA: getBoolean(resource.authDetails.passwordMFA), |
| 615 | passwordMinimumLength: getNumber(resource.authDetails.passwordMinimumLength), |
| 616 | passwordRequiresNumber: getBoolean(resource.authDetails.passwordRequiresNumber), |
| 617 | passwordRequiresSymbol: getBoolean(resource.authDetails.passwordRequiresSymbol), |
| 618 | } |
| 619 | : null |
| 620 | const contractAmount = isRecordLike(resource.contractAmount) |
| 621 | ? { |
| 622 | amount: getNumber(resource.contractAmount.amount), |
| 623 | currency: getString(resource.contractAmount.currency), |
| 624 | } |
| 625 | : null |
| 626 | const latestDecision = isRecordLike(resource.latestDecision) |
| 627 | ? { |
| 628 | status: getString(resource.latestDecision.status), |
| 629 | lastUpdatedAt: getString(resource.latestDecision.lastUpdatedAt), |
| 630 | } |
| 631 | : null |
| 632 | const procurementRequest = isRecordLike(resource.linkedTaskTrackerTaskProcurementRequest) |
| 633 | ? { |
| 634 | url: getString(resource.linkedTaskTrackerTaskProcurementRequest.url), |
| 635 | service: getString(resource.linkedTaskTrackerTaskProcurementRequest.service), |
| 636 | } |
| 637 | : null |
| 638 | |
| 639 | return { |
| 640 | id: getString(resource.id), |
| 641 | name: getString(resource.name), |
| 642 | status: getString(resource.status), |
| 643 | websiteUrl: getString(resource.websiteUrl), |
| 644 | category: isRecordLike(resource.category) ? getString(resource.category.displayName) : null, |
| 645 | servicesProvided: getString(resource.servicesProvided), |
| 646 | additionalNotes: getString(resource.additionalNotes), |
| 647 | accountManagerName: getString(resource.accountManagerName), |
| 648 | accountManagerEmail: getString(resource.accountManagerEmail), |
| 649 | securityOwnerUserId: getString(resource.securityOwnerUserId), |
| 650 | businessOwnerUserId: getString(resource.businessOwnerUserId), |
| 651 | inherentRiskLevel: getString(resource.inherentRiskLevel), |
| 652 | residualRiskLevel: getString(resource.residualRiskLevel), |
| 653 | isRiskAutoScored: getBoolean(resource.isRiskAutoScored), |
| 654 | isVisibleToAuditors: getBoolean(resource.isVisibleToAuditors), |
| 655 | riskAttributeIds: getStringArray(resource.riskAttributeIds), |
| 656 | vendorHeadquarters: getString(resource.vendorHeadquarters), |
| 657 | contractStartDate: getString(resource.contractStartDate), |
| 658 | contractRenewalDate: getString(resource.contractRenewalDate), |
| 659 | contractTerminationDate: getString(resource.contractTerminationDate), |
| 660 | contractAmount, |
| 661 | nextSecurityReviewDueDate: getString(resource.nextSecurityReviewDueDate), |
| 662 | lastSecurityReviewCompletionDate: getString(resource.lastSecurityReviewCompletionDate), |
| 663 | authDetails, |
| 664 | customFields: normalizeVantaCustomFields(resource.customFields), |
| 665 | latestDecision, |
| 666 | linkedTaskTrackerTaskProcurementRequest: procurementRequest, |
| 667 | } |
no test coverage detected