Add new url fields to vendors

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2025-05-27 20:07:15 -07:00
parent a4a279c5de
commit 6eb3332103
15 changed files with 837 additions and 359 deletions

View File

@@ -387,10 +387,10 @@ function ListVendorContent({
websiteUrl: vendor.websiteUrl,
category: vendor.category as VendorCategory || null,
privacyPolicyUrl: vendor.privacyPolicyUrl,
serviceLevelAgreementUrl:
vendor.serviceLevelAgreementUrl,
dataProcessingAgreementUrl:
vendor.dataProcessingAgreementUrl,
serviceLevelAgreementUrl: vendor.serviceLevelAgreementUrl,
dataProcessingAgreementUrl: vendor.dataProcessingAgreementUrl,
businessAssociateAgreementUrl: vendor.businessAssociateAgreementUrl,
subprocessorsListUrl: vendor.subprocessorsListUrl,
certifications: vendor.certifications,
securityPageUrl: vendor.securityPageUrl,
trustPageUrl: vendor.trustPageUrl,

View File

@@ -76,6 +76,8 @@ const vendorViewQuery = graphql`
privacyPolicyUrl
serviceLevelAgreementUrl
dataProcessingAgreementUrl
businessAssociateAgreementUrl
subprocessorsListUrl
securityPageUrl
trustPageUrl
certifications
@@ -152,6 +154,8 @@ const updateVendorMutation = graphql`
privacyPolicyUrl
serviceLevelAgreementUrl
dataProcessingAgreementUrl
businessAssociateAgreementUrl
subprocessorsListUrl
securityPageUrl
trustPageUrl
certifications
@@ -242,6 +246,8 @@ const assessVendorMutation = graphql`
privacyPolicyUrl
serviceLevelAgreementUrl
dataProcessingAgreementUrl
businessAssociateAgreementUrl
subprocessorsListUrl
securityPageUrl
trustPageUrl
certifications
@@ -1440,6 +1446,8 @@ function VendorViewContent({
privacyPolicyUrl: data.node.privacyPolicyUrl || "",
serviceLevelAgreementUrl: data.node.serviceLevelAgreementUrl || "",
dataProcessingAgreementUrl: data.node.dataProcessingAgreementUrl || "",
businessAssociateAgreementUrl: data.node.businessAssociateAgreementUrl || "",
subprocessorsListUrl: data.node.subprocessorsListUrl || "",
securityPageUrl: data.node.securityPageUrl || "",
trustPageUrl: data.node.trustPageUrl || "",
certifications: data.node.certifications || [],
@@ -1583,6 +1591,8 @@ function VendorViewContent({
privacyPolicyUrl: data.node.privacyPolicyUrl || "",
serviceLevelAgreementUrl: data.node.serviceLevelAgreementUrl || "",
dataProcessingAgreementUrl: data.node.dataProcessingAgreementUrl || "",
businessAssociateAgreementUrl: data.node.businessAssociateAgreementUrl || "",
subprocessorsListUrl: data.node.subprocessorsListUrl || "",
securityPageUrl: data.node.securityPageUrl || "",
trustPageUrl: data.node.trustPageUrl || "",
certifications: data.node.certifications || [],
@@ -2188,6 +2198,116 @@ function VendorViewContent({
)}
</div>
</div>
<div className="grid grid-cols-1 md:grid-cols-[180px_1fr] py-4 px-5">
<p className="text-sm font-medium text-[#6B716A]">
Business Associate Agreement URL
</p>
<div className="flex items-center space-x-2 w-full">
<Input
value={formData.businessAssociateAgreementUrl}
onChange={(e) =>
handleFieldChange(
"businessAssociateAgreementUrl",
e.target.value,
)
}
className="border-0 bg-transparent p-0 shadow-none focus-visible:ring-0 flex-1"
/>
{formData.businessAssociateAgreementUrl && (
<a
href={formData.businessAssociateAgreementUrl}
target="_blank"
rel="noopener noreferrer"
className="text-primary hover:underline"
>
<svg
width="16"
height="16"
viewBox="0 0 16 16"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M6.66667 9.33333L13.3333 2.66667"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
<path
d="M8.66667 2.66667H13.3333V7.33333"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
<path
d="M13.3333 9.33333V12.6667C13.3333 13.0203 13.1929 13.3594 12.9428 13.6095C12.6928 13.8595 12.3536 14 12 14H3.33333C2.97971 14 2.64057 13.8595 2.39052 13.6095C2.14048 13.3594 2 13.0203 2 12.6667V4C2 3.64638 2.14048 3.30724 2.39052 3.05719C2.64057 2.80714 2.97971 2.66667 3.33333 2.66667H6.66667"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
</a>
)}
</div>
</div>
<div className="grid grid-cols-1 md:grid-cols-[180px_1fr] py-4 px-5">
<p className="text-sm font-medium text-[#6B716A]">
Subprocessors List URL
</p>
<div className="flex items-center space-x-2 w-full">
<Input
value={formData.subprocessorsListUrl}
onChange={(e) =>
handleFieldChange(
"subprocessorsListUrl",
e.target.value,
)
}
className="border-0 bg-transparent p-0 shadow-none focus-visible:ring-0 flex-1"
/>
{formData.subprocessorsListUrl && (
<a
href={formData.subprocessorsListUrl}
target="_blank"
rel="noopener noreferrer"
className="text-primary hover:underline"
>
<svg
width="16"
height="16"
viewBox="0 0 16 16"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M6.66667 9.33333L13.3333 2.66667"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
<path
d="M8.66667 2.66667H13.3333V7.33333"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
<path
d="M13.3333 9.33333V12.6667C13.3333 13.0203 13.1929 13.3594 12.9428 13.6095C12.6928 13.8595 12.3536 14 12 14H3.33333C2.97971 14 2.64057 13.8595 2.39052 13.6095C2.14048 13.3594 2 13.0203 2 12.6667V4C2 3.64638 2.14048 3.30724 2.39052 3.05719C2.64057 2.80714 2.97971 2.66667 3.33333 2.66667H6.66667"
stroke="currentColor"
strokeWidth="1.5"
strokeLinecap="round"
strokeLinejoin="round"
/>
</svg>
</a>
)}
</div>
</div>
<div className="grid grid-cols-1 md:grid-cols-[180px_1fr] py-4 px-5">
<p className="text-sm font-medium text-[#6B716A]">
Data Processing Agreement URL
@@ -2434,6 +2554,8 @@ function VendorViewContent({
privacyPolicyUrl: newData.privacyPolicyUrl || prevData.privacyPolicyUrl,
serviceLevelAgreementUrl: newData.serviceLevelAgreementUrl || prevData.serviceLevelAgreementUrl,
dataProcessingAgreementUrl: newData.dataProcessingAgreementUrl || prevData.dataProcessingAgreementUrl,
businessAssociateAgreementUrl: newData.businessAssociateAgreementUrl || prevData.businessAssociateAgreementUrl,
subprocessorsListUrl: newData.subprocessorsListUrl || prevData.subprocessorsListUrl,
securityPageUrl: newData.securityPageUrl || prevData.securityPageUrl,
trustPageUrl: newData.trustPageUrl || prevData.trustPageUrl,
certifications: newData.certifications || prevData.certifications,

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<a8dc580c053c9091819cb2d348c0b3e0>>
* @generated SignedSource<<e33d04e89343a05d9253002551abc2f8>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -11,6 +11,7 @@
import { ConcreteRequest } from 'relay-runtime';
export type VendorCategory = "ANALYTICS" | "CLOUD_MONITORING" | "CLOUD_PROVIDER" | "COLLABORATION" | "CUSTOMER_SUPPORT" | "DATA_STORAGE_AND_PROCESSING" | "DOCUMENT_MANAGEMENT" | "EMPLOYEE_MANAGEMENT" | "ENGINEERING" | "FINANCE" | "IDENTITY_PROVIDER" | "IT" | "MARKETING" | "OFFICE_OPERATIONS" | "OTHER" | "PASSWORD_MANAGEMENT" | "PRODUCT_AND_DESIGN" | "PROFESSIONAL_SERVICES" | "RECRUITING" | "SALES" | "SECURITY" | "VERSION_CONTROL";
export type CreateVendorInput = {
businessAssociateAgreementUrl?: string | null | undefined;
businessOwnerId?: string | null | undefined;
category?: VendorCategory | null | undefined;
certifications?: ReadonlyArray<string> | null | undefined;
@@ -25,6 +26,7 @@ export type CreateVendorInput = {
securityPageUrl?: string | null | undefined;
serviceLevelAgreementUrl?: string | null | undefined;
statusPageUrl?: string | null | undefined;
subprocessorsListUrl?: string | null | undefined;
termsOfServiceUrl?: string | null | undefined;
trustPageUrl?: string | null | undefined;
websiteUrl?: string | null | undefined;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<f0c7d1514ae65ab5cef017af474f5825>>
* @generated SignedSource<<8469b802866967389dde2e2a5aa02584>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -20,6 +20,7 @@ export type VendorViewAssessVendorMutation$variables = {
export type VendorViewAssessVendorMutation$data = {
readonly assessVendor: {
readonly vendor: {
readonly businessAssociateAgreementUrl: string | null | undefined;
readonly businessOwner: {
readonly fullName: string;
readonly id: string;
@@ -40,6 +41,7 @@ export type VendorViewAssessVendorMutation$data = {
readonly securityPageUrl: string | null | undefined;
readonly serviceLevelAgreementUrl: string | null | undefined;
readonly statusPageUrl: string | null | undefined;
readonly subprocessorsListUrl: string | null | undefined;
readonly termsOfServiceUrl: string | null | undefined;
readonly trustPageUrl: string | null | undefined;
readonly updatedAt: string;
@@ -150,6 +152,20 @@ v3 = [
"name": "dataProcessingAgreementUrl",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "businessAssociateAgreementUrl",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "subprocessorsListUrl",
"storageKey": null
},
{
"alias": null,
"args": null,
@@ -251,16 +267,16 @@ return {
"selections": (v3/*: any*/)
},
"params": {
"cacheID": "592ee741d52ee98a1e10330e97a14707",
"cacheID": "01d19edac3190732f32c6be16df0ce72",
"id": null,
"metadata": {},
"name": "VendorViewAssessVendorMutation",
"operationKind": "mutation",
"text": "mutation VendorViewAssessVendorMutation(\n $input: AssessVendorInput!\n) {\n assessVendor(input: $input) {\n vendor {\n id\n name\n description\n statusPageUrl\n termsOfServiceUrl\n privacyPolicyUrl\n serviceLevelAgreementUrl\n dataProcessingAgreementUrl\n securityPageUrl\n trustPageUrl\n certifications\n headquarterAddress\n legalName\n websiteUrl\n category\n businessOwner {\n id\n fullName\n }\n securityOwner {\n id\n fullName\n }\n updatedAt\n }\n }\n}\n"
"text": "mutation VendorViewAssessVendorMutation(\n $input: AssessVendorInput!\n) {\n assessVendor(input: $input) {\n vendor {\n id\n name\n description\n statusPageUrl\n termsOfServiceUrl\n privacyPolicyUrl\n serviceLevelAgreementUrl\n dataProcessingAgreementUrl\n businessAssociateAgreementUrl\n subprocessorsListUrl\n securityPageUrl\n trustPageUrl\n certifications\n headquarterAddress\n legalName\n websiteUrl\n category\n businessOwner {\n id\n fullName\n }\n securityOwner {\n id\n fullName\n }\n updatedAt\n }\n }\n}\n"
}
};
})();
(node as any).hash = "8dddda77f031533f207ac903d883a902";
(node as any).hash = "e0398e78ad6679a42adfdf2817588c3f";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<a24deac1363fef61e3bc8f1a5b3d1848>>
* @generated SignedSource<<6aeb4bc16ba7ab84d3c9dc07b88f0e62>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -19,6 +19,7 @@ export type VendorViewQuery$variables = {
};
export type VendorViewQuery$data = {
readonly node: {
readonly businessAssociateAgreementUrl?: string | null | undefined;
readonly businessOwner?: {
readonly fullName: string;
readonly id: string;
@@ -70,6 +71,7 @@ export type VendorViewQuery$data = {
readonly securityPageUrl?: string | null | undefined;
readonly serviceLevelAgreementUrl?: string | null | undefined;
readonly statusPageUrl?: string | null | undefined;
readonly subprocessorsListUrl?: string | null | undefined;
readonly termsOfServiceUrl?: string | null | undefined;
readonly trustPageUrl?: string | null | undefined;
readonly updatedAt?: string;
@@ -169,111 +171,125 @@ v11 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "securityPageUrl",
"name": "businessAssociateAgreementUrl",
"storageKey": null
},
v12 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "trustPageUrl",
"name": "subprocessorsListUrl",
"storageKey": null
},
v13 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "certifications",
"name": "securityPageUrl",
"storageKey": null
},
v14 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "headquarterAddress",
"name": "trustPageUrl",
"storageKey": null
},
v15 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "legalName",
"name": "certifications",
"storageKey": null
},
v16 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "websiteUrl",
"name": "headquarterAddress",
"storageKey": null
},
v17 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "category",
"name": "legalName",
"storageKey": null
},
v18 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "websiteUrl",
"storageKey": null
},
v19 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "category",
"storageKey": null
},
v20 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "fullName",
"storageKey": null
},
v19 = [
v21 = [
(v3/*: any*/),
(v18/*: any*/)
(v20/*: any*/)
],
v20 = {
v22 = {
"alias": null,
"args": null,
"concreteType": "People",
"kind": "LinkedField",
"name": "businessOwner",
"plural": false,
"selections": (v19/*: any*/),
"selections": (v21/*: any*/),
"storageKey": null
},
v21 = {
v23 = {
"alias": null,
"args": null,
"concreteType": "People",
"kind": "LinkedField",
"name": "securityOwner",
"plural": false,
"selections": (v19/*: any*/),
"storageKey": null
},
v22 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "createdAt",
"storageKey": null
},
v23 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "updatedAt",
"selections": (v21/*: any*/),
"storageKey": null
},
v24 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "__typename",
"name": "createdAt",
"storageKey": null
},
v25 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "cursor",
"name": "updatedAt",
"storageKey": null
},
v26 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "__typename",
"storageKey": null
},
v27 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "cursor",
"storageKey": null
},
v28 = {
"alias": null,
"args": null,
"concreteType": "PageInfo",
@@ -298,7 +314,7 @@ v26 = {
],
"storageKey": null
},
v27 = [
v29 = [
{
"alias": null,
"args": null,
@@ -351,18 +367,18 @@ v27 = [
"name": "fileSize",
"storageKey": null
},
(v22/*: any*/),
(v24/*: any*/)
(v24/*: any*/),
(v26/*: any*/)
],
"storageKey": null
},
(v25/*: any*/)
(v27/*: any*/)
],
"storageKey": null
},
(v26/*: any*/)
(v28/*: any*/)
],
v28 = [
v30 = [
{
"alias": null,
"args": null,
@@ -422,28 +438,28 @@ v28 = [
"kind": "LinkedField",
"name": "assessedBy",
"plural": false,
"selections": (v19/*: any*/),
"selections": (v21/*: any*/),
"storageKey": null
},
(v22/*: any*/),
(v24/*: any*/)
(v24/*: any*/),
(v26/*: any*/)
],
"storageKey": null
},
(v25/*: any*/)
(v27/*: any*/)
],
"storageKey": null
},
(v26/*: any*/)
(v28/*: any*/)
],
v29 = [
v31 = [
{
"kind": "Variable",
"name": "id",
"variableName": "organizationId"
}
],
v30 = {
v32 = {
"alias": null,
"args": [
{
@@ -461,16 +477,16 @@ v30 = {
],
"storageKey": null
},
v31 = {
v33 = {
"kind": "Literal",
"name": "first",
"value": 100
},
v32 = [
(v31/*: any*/)
v34 = [
(v33/*: any*/)
],
v33 = [
(v31/*: any*/),
v35 = [
(v33/*: any*/),
{
"kind": "Literal",
"name": "orderBy",
@@ -516,10 +532,12 @@ return {
(v15/*: any*/),
(v16/*: any*/),
(v17/*: any*/),
(v20/*: any*/),
(v21/*: any*/),
(v18/*: any*/),
(v19/*: any*/),
(v22/*: any*/),
(v23/*: any*/),
(v24/*: any*/),
(v25/*: any*/),
{
"alias": "complianceReports",
"args": null,
@@ -527,7 +545,7 @@ return {
"kind": "LinkedField",
"name": "__VendorView_complianceReports_connection",
"plural": false,
"selections": (v27/*: any*/),
"selections": (v29/*: any*/),
"storageKey": null
},
{
@@ -537,7 +555,7 @@ return {
"kind": "LinkedField",
"name": "__VendorView_riskAssessments_connection",
"plural": false,
"selections": (v28/*: any*/),
"selections": (v30/*: any*/),
"storageKey": null
}
],
@@ -549,7 +567,7 @@ return {
},
{
"alias": "organization",
"args": (v29/*: any*/),
"args": (v31/*: any*/),
"concreteType": null,
"kind": "LinkedField",
"name": "node",
@@ -579,7 +597,7 @@ return {
"name": "user",
"plural": false,
"selections": [
(v30/*: any*/)
(v32/*: any*/)
],
"storageKey": null
}
@@ -607,7 +625,7 @@ return {
"name": "node",
"plural": false,
"selections": [
(v24/*: any*/),
(v26/*: any*/),
(v3/*: any*/),
{
"kind": "InlineFragment",
@@ -626,23 +644,25 @@ return {
(v15/*: any*/),
(v16/*: any*/),
(v17/*: any*/),
(v20/*: any*/),
(v21/*: any*/),
(v18/*: any*/),
(v19/*: any*/),
(v22/*: any*/),
(v23/*: any*/),
(v24/*: any*/),
(v25/*: any*/),
{
"alias": null,
"args": (v32/*: any*/),
"args": (v34/*: any*/),
"concreteType": "VendorComplianceReportConnection",
"kind": "LinkedField",
"name": "complianceReports",
"plural": false,
"selections": (v27/*: any*/),
"selections": (v29/*: any*/),
"storageKey": "complianceReports(first:100)"
},
{
"alias": null,
"args": (v32/*: any*/),
"args": (v34/*: any*/),
"filters": null,
"handle": "connection",
"key": "VendorView_complianceReports",
@@ -651,17 +671,17 @@ return {
},
{
"alias": null,
"args": (v32/*: any*/),
"args": (v34/*: any*/),
"concreteType": "VendorRiskAssessmentConnection",
"kind": "LinkedField",
"name": "riskAssessments",
"plural": false,
"selections": (v28/*: any*/),
"selections": (v30/*: any*/),
"storageKey": "riskAssessments(first:100)"
},
{
"alias": null,
"args": (v32/*: any*/),
"args": (v34/*: any*/),
"filters": null,
"handle": "connection",
"key": "VendorView_riskAssessments",
@@ -677,20 +697,20 @@ return {
},
{
"alias": "organization",
"args": (v29/*: any*/),
"args": (v31/*: any*/),
"concreteType": null,
"kind": "LinkedField",
"name": "node",
"plural": false,
"selections": [
(v24/*: any*/),
(v26/*: any*/),
(v3/*: any*/),
{
"kind": "InlineFragment",
"selections": [
{
"alias": null,
"args": (v33/*: any*/),
"args": (v35/*: any*/),
"concreteType": "PeopleConnection",
"kind": "LinkedField",
"name": "peoples",
@@ -713,7 +733,7 @@ return {
"plural": false,
"selections": [
(v3/*: any*/),
(v18/*: any*/),
(v20/*: any*/),
{
"alias": null,
"args": null,
@@ -721,21 +741,21 @@ return {
"name": "primaryEmailAddress",
"storageKey": null
},
(v24/*: any*/)
(v26/*: any*/)
],
"storageKey": null
},
(v25/*: any*/)
(v27/*: any*/)
],
"storageKey": null
},
(v26/*: any*/)
(v28/*: any*/)
],
"storageKey": "peoples(first:100,orderBy:{\"direction\":\"ASC\",\"field\":\"FULL_NAME\"})"
},
{
"alias": null,
"args": (v33/*: any*/),
"args": (v35/*: any*/),
"filters": [
"orderBy"
],
@@ -767,7 +787,7 @@ return {
"name": "user",
"plural": false,
"selections": [
(v30/*: any*/),
(v32/*: any*/),
(v3/*: any*/)
],
"storageKey": null
@@ -779,7 +799,7 @@ return {
]
},
"params": {
"cacheID": "83601f58c499976a22f7dec4312d147b",
"cacheID": "031a80a31c3e3d6254e949069860c988",
"id": null,
"metadata": {
"connection": [
@@ -805,11 +825,11 @@ return {
},
"name": "VendorViewQuery",
"operationKind": "query",
"text": "query VendorViewQuery(\n $vendorId: ID!\n $organizationId: ID!\n) {\n node(id: $vendorId) {\n __typename\n ... on Vendor {\n id\n name\n description\n statusPageUrl\n termsOfServiceUrl\n privacyPolicyUrl\n serviceLevelAgreementUrl\n dataProcessingAgreementUrl\n securityPageUrl\n trustPageUrl\n certifications\n headquarterAddress\n legalName\n websiteUrl\n category\n businessOwner {\n id\n fullName\n }\n securityOwner {\n id\n fullName\n }\n createdAt\n updatedAt\n complianceReports(first: 100) {\n edges {\n node {\n id\n reportName\n reportDate\n validUntil\n fileUrl\n fileSize\n createdAt\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n riskAssessments(first: 100) {\n edges {\n node {\n id\n assessedAt\n expiresAt\n dataSensitivity\n businessImpact\n notes\n assessedBy {\n id\n fullName\n }\n createdAt\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n id\n }\n organization: node(id: $organizationId) {\n __typename\n ...PeopleSelector_organization\n id\n }\n viewer {\n user {\n people(organizationId: $organizationId) {\n id\n }\n id\n }\n id\n }\n}\n\nfragment PeopleSelector_organization on Organization {\n id\n peoples(first: 100, orderBy: {direction: ASC, field: FULL_NAME}) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n"
"text": "query VendorViewQuery(\n $vendorId: ID!\n $organizationId: ID!\n) {\n node(id: $vendorId) {\n __typename\n ... on Vendor {\n id\n name\n description\n statusPageUrl\n termsOfServiceUrl\n privacyPolicyUrl\n serviceLevelAgreementUrl\n dataProcessingAgreementUrl\n businessAssociateAgreementUrl\n subprocessorsListUrl\n securityPageUrl\n trustPageUrl\n certifications\n headquarterAddress\n legalName\n websiteUrl\n category\n businessOwner {\n id\n fullName\n }\n securityOwner {\n id\n fullName\n }\n createdAt\n updatedAt\n complianceReports(first: 100) {\n edges {\n node {\n id\n reportName\n reportDate\n validUntil\n fileUrl\n fileSize\n createdAt\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n riskAssessments(first: 100) {\n edges {\n node {\n id\n assessedAt\n expiresAt\n dataSensitivity\n businessImpact\n notes\n assessedBy {\n id\n fullName\n }\n createdAt\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n }\n id\n }\n organization: node(id: $organizationId) {\n __typename\n ...PeopleSelector_organization\n id\n }\n viewer {\n user {\n people(organizationId: $organizationId) {\n id\n }\n id\n }\n id\n }\n}\n\nfragment PeopleSelector_organization on Organization {\n id\n peoples(first: 100, orderBy: {direction: ASC, field: FULL_NAME}) {\n edges {\n node {\n id\n fullName\n primaryEmailAddress\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n }\n }\n}\n"
}
};
})();
(node as any).hash = "812a334dc26fb2961aae24862496ff0c";
(node as any).hash = "8a9a11b173a6ff4db496c888cb3f0842";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<687421f6528edb3fe7623b14cda888d7>>
* @generated SignedSource<<1869215126a875b4693649fdbd2fdd9c>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -11,6 +11,7 @@
import { ConcreteRequest } from 'relay-runtime';
export type VendorCategory = "ANALYTICS" | "CLOUD_MONITORING" | "CLOUD_PROVIDER" | "COLLABORATION" | "CUSTOMER_SUPPORT" | "DATA_STORAGE_AND_PROCESSING" | "DOCUMENT_MANAGEMENT" | "EMPLOYEE_MANAGEMENT" | "ENGINEERING" | "FINANCE" | "IDENTITY_PROVIDER" | "IT" | "MARKETING" | "OFFICE_OPERATIONS" | "OTHER" | "PASSWORD_MANAGEMENT" | "PRODUCT_AND_DESIGN" | "PROFESSIONAL_SERVICES" | "RECRUITING" | "SALES" | "SECURITY" | "VERSION_CONTROL";
export type UpdateVendorInput = {
businessAssociateAgreementUrl?: string | null | undefined;
businessOwnerId?: string | null | undefined;
category?: VendorCategory | null | undefined;
certifications?: ReadonlyArray<string> | null | undefined;
@@ -25,6 +26,7 @@ export type UpdateVendorInput = {
securityPageUrl?: string | null | undefined;
serviceLevelAgreementUrl?: string | null | undefined;
statusPageUrl?: string | null | undefined;
subprocessorsListUrl?: string | null | undefined;
termsOfServiceUrl?: string | null | undefined;
trustPageUrl?: string | null | undefined;
websiteUrl?: string | null | undefined;
@@ -35,6 +37,7 @@ export type VendorViewUpdateVendorMutation$variables = {
export type VendorViewUpdateVendorMutation$data = {
readonly updateVendor: {
readonly vendor: {
readonly businessAssociateAgreementUrl: string | null | undefined;
readonly businessOwner: {
readonly fullName: string;
readonly id: string;
@@ -55,6 +58,7 @@ export type VendorViewUpdateVendorMutation$data = {
readonly securityPageUrl: string | null | undefined;
readonly serviceLevelAgreementUrl: string | null | undefined;
readonly statusPageUrl: string | null | undefined;
readonly subprocessorsListUrl: string | null | undefined;
readonly termsOfServiceUrl: string | null | undefined;
readonly trustPageUrl: string | null | undefined;
readonly updatedAt: string;
@@ -165,6 +169,20 @@ v3 = [
"name": "dataProcessingAgreementUrl",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "businessAssociateAgreementUrl",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "subprocessorsListUrl",
"storageKey": null
},
{
"alias": null,
"args": null,
@@ -266,16 +284,16 @@ return {
"selections": (v3/*: any*/)
},
"params": {
"cacheID": "8ead09e0003d808fcf2d2bc8ca19c8b2",
"cacheID": "dd590c1e78969f50f0f36352d70e0aa2",
"id": null,
"metadata": {},
"name": "VendorViewUpdateVendorMutation",
"operationKind": "mutation",
"text": "mutation VendorViewUpdateVendorMutation(\n $input: UpdateVendorInput!\n) {\n updateVendor(input: $input) {\n vendor {\n id\n name\n description\n statusPageUrl\n termsOfServiceUrl\n privacyPolicyUrl\n serviceLevelAgreementUrl\n dataProcessingAgreementUrl\n securityPageUrl\n trustPageUrl\n certifications\n headquarterAddress\n legalName\n websiteUrl\n category\n businessOwner {\n id\n fullName\n }\n securityOwner {\n id\n fullName\n }\n updatedAt\n }\n }\n}\n"
"text": "mutation VendorViewUpdateVendorMutation(\n $input: UpdateVendorInput!\n) {\n updateVendor(input: $input) {\n vendor {\n id\n name\n description\n statusPageUrl\n termsOfServiceUrl\n privacyPolicyUrl\n serviceLevelAgreementUrl\n dataProcessingAgreementUrl\n businessAssociateAgreementUrl\n subprocessorsListUrl\n securityPageUrl\n trustPageUrl\n certifications\n headquarterAddress\n legalName\n websiteUrl\n category\n businessOwner {\n id\n fullName\n }\n securityOwner {\n id\n fullName\n }\n updatedAt\n }\n }\n}\n"
}
};
})();
(node as any).hash = "90aa0b06cde30ea8a7deb711d5ba0c69";
(node as any).hash = "61c12bb5fe14c4499601363ae8070e6d";
export default node;