Add vendors to processing activities

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2025-10-30 15:09:57 +01:00
parent 104e8ad6ae
commit 8cd014ebbc
16 changed files with 1018 additions and 51 deletions

View File

@@ -38,6 +38,16 @@ export const processingActivityNodeQuery = graphql`
securityMeasures
dataProtectionImpactAssessment
transferImpactAssessment
vendors(first: 50) {
edges {
node {
id
name
websiteUrl
category
}
}
}
organization {
id
name
@@ -73,6 +83,15 @@ export const createProcessingActivityMutation = graphql`
securityMeasures
dataProtectionImpactAssessment
transferImpactAssessment
vendors(first: 50) {
edges {
node {
id
name
websiteUrl
}
}
}
createdAt
}
}
@@ -100,6 +119,15 @@ export const updateProcessingActivityMutation = graphql`
securityMeasures
dataProtectionImpactAssessment
transferImpactAssessment
vendors(first: 50) {
edges {
node {
id
name
websiteUrl
}
}
}
updatedAt
}
}
@@ -172,6 +200,7 @@ export const useCreateProcessingActivity = (connectionId?: string) => {
securityMeasures?: string;
dataProtectionImpactAssessment?: string;
transferImpactAssessment?: string;
vendorIds?: string[];
}) => {
if (!input.organizationId) {
return alert(__("Failed to create processing activity: organization is required"));
@@ -199,6 +228,7 @@ export const useCreateProcessingActivity = (connectionId?: string) => {
securityMeasures: input.securityMeasures,
dataProtectionImpactAssessment: input.dataProtectionImpactAssessment,
transferImpactAssessment: input.transferImpactAssessment,
vendorIds: input.vendorIds,
},
connections: connectionId ? [connectionId] : [],
},
@@ -227,6 +257,7 @@ export const useUpdateProcessingActivity = () => {
securityMeasures?: string;
dataProtectionImpactAssessment?: string;
transferImpactAssessment?: string;
vendorIds?: string[];
}) => {
if (!input.id) {
return alert(__("Failed to update processing activity: ID is required"));

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<d19bc7dbb1b1ec90138ba9e902dadd4a>>
* @generated SignedSource<<d01ca9f47a4ce6e732cffd5deb9150c6>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -31,6 +31,7 @@ export type CreateProcessingActivityInput = {
specialOrCriminalData: ProcessingActivitySpecialOrCriminalData;
transferImpactAssessment: ProcessingActivityTransferImpactAssessment;
transferSafeguards?: ProcessingActivityTransferSafeguards | null | undefined;
vendorIds?: ReadonlyArray<string> | null | undefined;
};
export type ProcessingActivityGraphCreateMutation$variables = {
connections: ReadonlyArray<string>;
@@ -57,6 +58,15 @@ export type ProcessingActivityGraphCreateMutation$data = {
readonly specialOrCriminalData: ProcessingActivitySpecialOrCriminalData;
readonly transferImpactAssessment: ProcessingActivityTransferImpactAssessment;
readonly transferSafeguards: ProcessingActivityTransferSafeguards | null | undefined;
readonly vendors: {
readonly edges: ReadonlyArray<{
readonly node: {
readonly id: string;
readonly name: string;
readonly websiteUrl: string | null | undefined;
};
}>;
};
};
};
};
@@ -85,6 +95,20 @@ v2 = [
}
],
v3 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
v4 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
v5 = {
"alias": null,
"args": null,
"concreteType": "ProcessingActivityEdge",
@@ -100,20 +124,8 @@ v3 = {
"name": "node",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
(v3/*: any*/),
(v4/*: any*/),
{
"alias": null,
"args": null,
@@ -212,6 +224,54 @@ v3 = {
"name": "transferImpactAssessment",
"storageKey": null
},
{
"alias": null,
"args": [
{
"kind": "Literal",
"name": "first",
"value": 50
}
],
"concreteType": "VendorConnection",
"kind": "LinkedField",
"name": "vendors",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "VendorEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "Vendor",
"kind": "LinkedField",
"name": "node",
"plural": false,
"selections": [
(v3/*: any*/),
(v4/*: any*/),
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "websiteUrl",
"storageKey": null
}
],
"storageKey": null
}
],
"storageKey": null
}
],
"storageKey": "vendors(first:50)"
},
{
"alias": null,
"args": null,
@@ -243,7 +303,7 @@ return {
"name": "createProcessingActivity",
"plural": false,
"selections": [
(v3/*: any*/)
(v5/*: any*/)
],
"storageKey": null
}
@@ -268,7 +328,7 @@ return {
"name": "createProcessingActivity",
"plural": false,
"selections": [
(v3/*: any*/),
(v5/*: any*/),
{
"alias": null,
"args": null,
@@ -291,16 +351,16 @@ return {
]
},
"params": {
"cacheID": "3a675caa3773822d9b478ad1669eb69f",
"cacheID": "4992c543938b28bc08d2316602d7bd1e",
"id": null,
"metadata": {},
"name": "ProcessingActivityGraphCreateMutation",
"operationKind": "mutation",
"text": "mutation ProcessingActivityGraphCreateMutation(\n $input: CreateProcessingActivityInput!\n) {\n createProcessingActivity(input: $input) {\n processingActivityEdge {\n node {\n id\n name\n purpose\n dataSubjectCategory\n personalDataCategory\n specialOrCriminalData\n consentEvidenceLink\n lawfulBasis\n recipients\n location\n internationalTransfers\n transferSafeguards\n retentionPeriod\n securityMeasures\n dataProtectionImpactAssessment\n transferImpactAssessment\n createdAt\n }\n }\n }\n}\n"
"text": "mutation ProcessingActivityGraphCreateMutation(\n $input: CreateProcessingActivityInput!\n) {\n createProcessingActivity(input: $input) {\n processingActivityEdge {\n node {\n id\n name\n purpose\n dataSubjectCategory\n personalDataCategory\n specialOrCriminalData\n consentEvidenceLink\n lawfulBasis\n recipients\n location\n internationalTransfers\n transferSafeguards\n retentionPeriod\n securityMeasures\n dataProtectionImpactAssessment\n transferImpactAssessment\n vendors(first: 50) {\n edges {\n node {\n id\n name\n websiteUrl\n }\n }\n }\n createdAt\n }\n }\n }\n}\n"
}
};
})();
(node as any).hash = "bd2e03818df99d5b692216d738b18583";
(node as any).hash = "2150e01b5dfb4ebf1553817b7cb39f08";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<a78af4956f20232f8c6084f66ee6aac5>>
* @generated SignedSource<<5dea7ccaf98a1223d9e4cc1ecdfbb0bc>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -14,6 +14,7 @@ export type ProcessingActivityLawfulBasis = "CONSENT" | "CONTRACTUAL_NECESSITY"
export type ProcessingActivitySpecialOrCriminalData = "NO" | "POSSIBLE" | "YES";
export type ProcessingActivityTransferImpactAssessment = "NEEDED" | "NOT_NEEDED";
export type ProcessingActivityTransferSafeguards = "ADEQUACY_DECISION" | "BINDING_CORPORATE_RULES" | "CERTIFICATION_MECHANISMS" | "CODES_OF_CONDUCT" | "DEROGATIONS" | "STANDARD_CONTRACTUAL_CLAUSES";
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 ProcessingActivityGraphNodeQuery$variables = {
processingActivityId: string;
};
@@ -42,6 +43,16 @@ export type ProcessingActivityGraphNodeQuery$data = {
readonly transferImpactAssessment?: ProcessingActivityTransferImpactAssessment;
readonly transferSafeguards?: ProcessingActivityTransferSafeguards | null | undefined;
readonly updatedAt?: any;
readonly vendors?: {
readonly edges: ReadonlyArray<{
readonly node: {
readonly category: VendorCategory;
readonly id: string;
readonly name: string;
readonly websiteUrl: string | null | undefined;
};
}>;
};
};
};
export type ProcessingActivityGraphNodeQuery = {
@@ -184,6 +195,61 @@ v18 = {
"storageKey": null
},
v19 = {
"alias": null,
"args": [
{
"kind": "Literal",
"name": "first",
"value": 50
}
],
"concreteType": "VendorConnection",
"kind": "LinkedField",
"name": "vendors",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "VendorEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "Vendor",
"kind": "LinkedField",
"name": "node",
"plural": false,
"selections": [
(v2/*: any*/),
(v4/*: any*/),
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "websiteUrl",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "category",
"storageKey": null
}
],
"storageKey": null
}
],
"storageKey": null
}
],
"storageKey": "vendors(first:50)"
},
v20 = {
"alias": null,
"args": null,
"concreteType": "Organization",
@@ -196,14 +262,14 @@ v19 = {
],
"storageKey": null
},
v20 = {
v21 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "createdAt",
"storageKey": null
},
v21 = {
v22 = {
"alias": null,
"args": null,
"kind": "ScalarField",
@@ -247,7 +313,8 @@ return {
(v18/*: any*/),
(v19/*: any*/),
(v20/*: any*/),
(v21/*: any*/)
(v21/*: any*/),
(v22/*: any*/)
],
"type": "ProcessingActivity",
"abstractKey": null
@@ -302,7 +369,8 @@ return {
(v18/*: any*/),
(v19/*: any*/),
(v20/*: any*/),
(v21/*: any*/)
(v21/*: any*/),
(v22/*: any*/)
],
"type": "ProcessingActivity",
"abstractKey": null
@@ -313,16 +381,16 @@ return {
]
},
"params": {
"cacheID": "b2dd76939002ce8c523c7ac5a49c29f5",
"cacheID": "9e9d13d95bf99c04488b8bdd313e8f33",
"id": null,
"metadata": {},
"name": "ProcessingActivityGraphNodeQuery",
"operationKind": "query",
"text": "query ProcessingActivityGraphNodeQuery(\n $processingActivityId: ID!\n) {\n node(id: $processingActivityId) {\n __typename\n ... on ProcessingActivity {\n id\n snapshotId\n name\n purpose\n dataSubjectCategory\n personalDataCategory\n specialOrCriminalData\n consentEvidenceLink\n lawfulBasis\n recipients\n location\n internationalTransfers\n transferSafeguards\n retentionPeriod\n securityMeasures\n dataProtectionImpactAssessment\n transferImpactAssessment\n organization {\n id\n name\n }\n createdAt\n updatedAt\n }\n id\n }\n}\n"
"text": "query ProcessingActivityGraphNodeQuery(\n $processingActivityId: ID!\n) {\n node(id: $processingActivityId) {\n __typename\n ... on ProcessingActivity {\n id\n snapshotId\n name\n purpose\n dataSubjectCategory\n personalDataCategory\n specialOrCriminalData\n consentEvidenceLink\n lawfulBasis\n recipients\n location\n internationalTransfers\n transferSafeguards\n retentionPeriod\n securityMeasures\n dataProtectionImpactAssessment\n transferImpactAssessment\n vendors(first: 50) {\n edges {\n node {\n id\n name\n websiteUrl\n category\n }\n }\n }\n organization {\n id\n name\n }\n createdAt\n updatedAt\n }\n id\n }\n}\n"
}
};
})();
(node as any).hash = "7beac09f84d60e20e73a5b8e958908dd";
(node as any).hash = "0112adb4f323533e0ce7a0922c5866d2";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<48427eb821d3a0f4e53430bb384d0305>>
* @generated SignedSource<<08099a83039838c6c79dbf1ca7c99034>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -31,6 +31,7 @@ export type UpdateProcessingActivityInput = {
specialOrCriminalData?: ProcessingActivitySpecialOrCriminalData | null | undefined;
transferImpactAssessment?: ProcessingActivityTransferImpactAssessment | null | undefined;
transferSafeguards?: ProcessingActivityTransferSafeguards | null | undefined;
vendorIds?: ReadonlyArray<string> | null | undefined;
};
export type ProcessingActivityGraphUpdateMutation$variables = {
input: UpdateProcessingActivityInput;
@@ -55,6 +56,15 @@ export type ProcessingActivityGraphUpdateMutation$data = {
readonly transferImpactAssessment: ProcessingActivityTransferImpactAssessment;
readonly transferSafeguards: ProcessingActivityTransferSafeguards | null | undefined;
readonly updatedAt: any;
readonly vendors: {
readonly edges: ReadonlyArray<{
readonly node: {
readonly id: string;
readonly name: string;
readonly websiteUrl: string | null | undefined;
};
}>;
};
};
};
};
@@ -71,7 +81,21 @@ var v0 = [
"name": "input"
}
],
v1 = [
v1 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
v2 = {
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
v3 = [
{
"alias": null,
"args": [
@@ -94,20 +118,8 @@ v1 = [
"name": "processingActivity",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "id",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "name",
"storageKey": null
},
(v1/*: any*/),
(v2/*: any*/),
{
"alias": null,
"args": null,
@@ -206,6 +218,54 @@ v1 = [
"name": "transferImpactAssessment",
"storageKey": null
},
{
"alias": null,
"args": [
{
"kind": "Literal",
"name": "first",
"value": 50
}
],
"concreteType": "VendorConnection",
"kind": "LinkedField",
"name": "vendors",
"plural": false,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "VendorEdge",
"kind": "LinkedField",
"name": "edges",
"plural": true,
"selections": [
{
"alias": null,
"args": null,
"concreteType": "Vendor",
"kind": "LinkedField",
"name": "node",
"plural": false,
"selections": [
(v1/*: any*/),
(v2/*: any*/),
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "websiteUrl",
"storageKey": null
}
],
"storageKey": null
}
],
"storageKey": null
}
],
"storageKey": "vendors(first:50)"
},
{
"alias": null,
"args": null,
@@ -226,7 +286,7 @@ return {
"kind": "Fragment",
"metadata": null,
"name": "ProcessingActivityGraphUpdateMutation",
"selections": (v1/*: any*/),
"selections": (v3/*: any*/),
"type": "Mutation",
"abstractKey": null
},
@@ -235,19 +295,19 @@ return {
"argumentDefinitions": (v0/*: any*/),
"kind": "Operation",
"name": "ProcessingActivityGraphUpdateMutation",
"selections": (v1/*: any*/)
"selections": (v3/*: any*/)
},
"params": {
"cacheID": "9ede6451e111196c25a7a4cee9ad86bf",
"cacheID": "8050213c76270c28b5543a629a956d47",
"id": null,
"metadata": {},
"name": "ProcessingActivityGraphUpdateMutation",
"operationKind": "mutation",
"text": "mutation ProcessingActivityGraphUpdateMutation(\n $input: UpdateProcessingActivityInput!\n) {\n updateProcessingActivity(input: $input) {\n processingActivity {\n id\n name\n purpose\n dataSubjectCategory\n personalDataCategory\n specialOrCriminalData\n consentEvidenceLink\n lawfulBasis\n recipients\n location\n internationalTransfers\n transferSafeguards\n retentionPeriod\n securityMeasures\n dataProtectionImpactAssessment\n transferImpactAssessment\n updatedAt\n }\n }\n}\n"
"text": "mutation ProcessingActivityGraphUpdateMutation(\n $input: UpdateProcessingActivityInput!\n) {\n updateProcessingActivity(input: $input) {\n processingActivity {\n id\n name\n purpose\n dataSubjectCategory\n personalDataCategory\n specialOrCriminalData\n consentEvidenceLink\n lawfulBasis\n recipients\n location\n internationalTransfers\n transferSafeguards\n retentionPeriod\n securityMeasures\n dataProtectionImpactAssessment\n transferImpactAssessment\n vendors(first: 50) {\n edges {\n node {\n id\n name\n websiteUrl\n }\n }\n }\n updatedAt\n }\n }\n}\n"
}
};
})();
(node as any).hash = "ee0c2f6027edae2b80f603503f5f3815";
(node as any).hash = "cb14a2c41f4690c0079a185c8caad3f4";
export default node;