Rename vendors to third parties

Renames the user-facing 'vendor' concept to 'third party' across the
entire codebase. The shared common_third_parties reference table is
unchanged.

Migration. Renames the vendor_category enum, the vendors and
vendor_<entity> tables (contacts, services, compliance_reports,
business_associate_agreements, data_privacy_agreements,
risk_assessments) and their vendor_id columns, the asset_vendors /
data_vendors / processing_activity_vendors junction tables,
generated_documents.vendors_document_id, the webhook_event_type
'vendor:<verb>' values, and the snapshots_type 'VENDORS' value.

Backend. Renames coredata models and SQL queries, probo services,
GraphQL / MCP API surface, console / trust / webhook resolvers and
types, the CLI (prb vendor* -> prb third-party*; pkg/cmd/vendormgmt
-> pkg/cmd/thirdpartymgmt), the document generator, vetting agent
prompts, and the common-third-parties-import command.

Frontend, packages, n8n, e2e. Renames apps/console pages, components,
hooks, routes, dialogs, and tabs; the shared @probo/vendors package
(now @probo/third-parties); the @probo/ui Vendors atoms (now
ThirdParties, VendorLogo -> ThirdPartyLogo); the n8n community node
actions/vendor folder (now actions/thirdParty); and the e2e Go test
suite (console and MCP). Filesystem and URL paths use kebab-case
(third-parties), GraphQL fields and TypeScript identifiers use
camelCase (thirdParty / thirdParties), Go types use PascalCase
(ThirdParty), and human-facing text uses 'third party' with a space.

Co-authored-by: Bryan Frimin <bryan@getprobo.com>
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2026-05-13 16:15:33 +02:00
parent 9eed0d71c8
commit eecbe4c46c
281 changed files with 8491 additions and 8425 deletions

View File

@@ -0,0 +1,278 @@
// Copyright (c) 2025-2026 Probo Inc <hello@getprobo.com>.
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
import type { INodeProperties } from 'n8n-workflow';
import * as createOp from './create.operation';
import * as updateOp from './update.operation';
import * as deleteOp from './delete.operation';
import * as getOp from './get.operation';
import * as getAllOp from './getAll.operation';
import * as createContactOp from './createContact.operation';
import * as updateContactOp from './updateContact.operation';
import * as deleteContactOp from './deleteContact.operation';
import * as getContactOp from './getContact.operation';
import * as getAllContactsOp from './getAllContacts.operation';
import * as createServiceOp from './createService.operation';
import * as updateServiceOp from './updateService.operation';
import * as deleteServiceOp from './deleteService.operation';
import * as getServiceOp from './getService.operation';
import * as getAllServicesOp from './getAllServices.operation';
import * as createRiskAssessmentOp from './createRiskAssessment.operation';
import * as getRiskAssessmentOp from './getRiskAssessment.operation';
import * as getAllRiskAssessmentsOp from './getAllRiskAssessments.operation';
import * as getAllComplianceReportsOp from './getAllComplianceReports.operation';
import * as deleteComplianceReportOp from './deleteComplianceReport.operation';
import * as getBusinessAssociateAgreementOp from './getBusinessAssociateAgreement.operation';
import * as deleteBusinessAssociateAgreementOp from './deleteBusinessAssociateAgreement.operation';
import * as updateBusinessAssociateAgreementOp from './updateBusinessAssociateAgreement.operation';
import * as getDataPrivacyAgreementOp from './getDataPrivacyAgreement.operation';
import * as deleteDataPrivacyAgreementOp from './deleteDataPrivacyAgreement.operation';
import * as updateDataPrivacyAgreementOp from './updateDataPrivacyAgreement.operation';
import * as publishOp from './publish.operation';
export const description: INodeProperties[] = [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['thirdParty'],
},
},
options: [
{
name: 'Create',
value: 'create',
description: 'Create a new third party',
action: 'Create a third party',
},
{
name: 'Create Contact',
value: 'createContact',
description: 'Create a new third party contact',
action: 'Create a third party contact',
},
{
name: 'Create Risk Assessment',
value: 'createRiskAssessment',
description: 'Create a new third party risk assessment',
action: 'Create a third party risk assessment',
},
{
name: 'Create Service',
value: 'createService',
description: 'Create a new third party service',
action: 'Create a third party service',
},
{
name: 'Delete',
value: 'delete',
description: 'Delete a third party',
action: 'Delete a third party',
},
{
name: 'Delete Business Associate Agreement',
value: 'deleteBusinessAssociateAgreement',
description: 'Delete a third party business associate agreement',
action: 'Delete a third party business associate agreement',
},
{
name: 'Delete Compliance Report',
value: 'deleteComplianceReport',
description: 'Delete a third party compliance report',
action: 'Delete a third party compliance report',
},
{
name: 'Delete Contact',
value: 'deleteContact',
description: 'Delete a third party contact',
action: 'Delete a third party contact',
},
{
name: 'Delete Data Privacy Agreement',
value: 'deleteDataPrivacyAgreement',
description: 'Delete a third party data privacy agreement',
action: 'Delete a third party data privacy agreement',
},
{
name: 'Delete Service',
value: 'deleteService',
description: 'Delete a third party service',
action: 'Delete a third party service',
},
{
name: 'Get',
value: 'get',
description: 'Get a third party',
action: 'Get a third party',
},
{
name: 'Get Business Associate Agreement',
value: 'getBusinessAssociateAgreement',
description: 'Get a third party business associate agreement',
action: 'Get a third party business associate agreement',
},
{
name: 'Get Contact',
value: 'getContact',
description: 'Get a third party contact',
action: 'Get a third party contact',
},
{
name: 'Get Data Privacy Agreement',
value: 'getDataPrivacyAgreement',
description: 'Get a third party data privacy agreement',
action: 'Get a third party data privacy agreement',
},
{
name: 'Get Many',
value: 'getAll',
description: 'Get many third parties',
action: 'Get many third parties',
},
{
name: 'Get Many Compliance Reports',
value: 'getAllComplianceReports',
description: 'Get many third party compliance reports',
action: 'Get many third party compliance reports',
},
{
name: 'Get Many Contacts',
value: 'getAllContacts',
description: 'Get many third party contacts',
action: 'Get many third party contacts',
},
{
name: 'Get Many Risk Assessments',
value: 'getAllRiskAssessments',
description: 'Get many third party risk assessments',
action: 'Get many third party risk assessments',
},
{
name: 'Get Many Services',
value: 'getAllServices',
description: 'Get many third party services',
action: 'Get many third party services',
},
{
name: 'Get Risk Assessment',
value: 'getRiskAssessment',
description: 'Get a third party risk assessment',
action: 'Get a third party risk assessment',
},
{
name: 'Get Service',
value: 'getService',
description: 'Get a third party service',
action: 'Get a third party service',
},
{
name: 'Publish List',
value: 'publish',
description: 'Publish the third party register as a document version',
action: 'Publish the third party register',
},
{
name: 'Update',
value: 'update',
description: 'Update an existing third party',
action: 'Update a third party',
},
{
name: 'Update Business Associate Agreement',
value: 'updateBusinessAssociateAgreement',
description: 'Update a third party business associate agreement validity',
action: 'Update a third party business associate agreement',
},
{
name: 'Update Contact',
value: 'updateContact',
description: 'Update an existing third party contact',
action: 'Update a third party contact',
},
{
name: 'Update Data Privacy Agreement',
value: 'updateDataPrivacyAgreement',
description: 'Update a third party data privacy agreement validity',
action: 'Update a third party data privacy agreement',
},
{
name: 'Update Service',
value: 'updateService',
description: 'Update an existing third party service',
action: 'Update a third party service',
},
],
default: 'create',
},
...createOp.description,
...updateOp.description,
...deleteOp.description,
...getOp.description,
...getAllOp.description,
...createContactOp.description,
...updateContactOp.description,
...deleteContactOp.description,
...getContactOp.description,
...getAllContactsOp.description,
...createServiceOp.description,
...updateServiceOp.description,
...deleteServiceOp.description,
...getServiceOp.description,
...getAllServicesOp.description,
...createRiskAssessmentOp.description,
...getRiskAssessmentOp.description,
...getAllRiskAssessmentsOp.description,
...getAllComplianceReportsOp.description,
...deleteComplianceReportOp.description,
...getBusinessAssociateAgreementOp.description,
...deleteBusinessAssociateAgreementOp.description,
...updateBusinessAssociateAgreementOp.description,
...getDataPrivacyAgreementOp.description,
...deleteDataPrivacyAgreementOp.description,
...updateDataPrivacyAgreementOp.description,
...publishOp.description,
];
export {
createOp as create,
updateOp as update,
deleteOp as delete,
getOp as get,
getAllOp as getAll,
createContactOp as createContact,
updateContactOp as updateContact,
deleteContactOp as deleteContact,
getContactOp as getContact,
getAllContactsOp as getAllContacts,
createServiceOp as createService,
updateServiceOp as updateService,
deleteServiceOp as deleteService,
getServiceOp as getService,
getAllServicesOp as getAllServices,
createRiskAssessmentOp as createRiskAssessment,
getRiskAssessmentOp as getRiskAssessment,
getAllRiskAssessmentsOp as getAllRiskAssessments,
getAllComplianceReportsOp as getAllComplianceReports,
deleteComplianceReportOp as deleteComplianceReport,
getBusinessAssociateAgreementOp as getBusinessAssociateAgreement,
deleteBusinessAssociateAgreementOp as deleteBusinessAssociateAgreement,
updateBusinessAssociateAgreementOp as updateBusinessAssociateAgreement,
getDataPrivacyAgreementOp as getDataPrivacyAgreement,
deleteDataPrivacyAgreementOp as deleteDataPrivacyAgreement,
updateDataPrivacyAgreementOp as updateDataPrivacyAgreement,
publishOp as publish,
};