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:
@@ -91,8 +91,8 @@ export const description: INodeProperties[] = [
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
displayName: 'Vendor IDs',
|
||||
name: 'vendorIds',
|
||||
displayName: 'ThirdParty IDs',
|
||||
name: 'thirdPartyIds',
|
||||
type: 'string',
|
||||
displayOptions: {
|
||||
show: {
|
||||
@@ -101,7 +101,7 @@ export const description: INodeProperties[] = [
|
||||
},
|
||||
},
|
||||
default: '',
|
||||
description: 'Comma-separated list of vendor IDs',
|
||||
description: 'Comma-separated list of thirdParty IDs',
|
||||
},
|
||||
{
|
||||
displayName: 'Options',
|
||||
@@ -124,11 +124,11 @@ export const description: INodeProperties[] = [
|
||||
description: 'Whether to include owner details in the response',
|
||||
},
|
||||
{
|
||||
displayName: 'Include Vendors',
|
||||
name: 'includeVendors',
|
||||
displayName: 'Include ThirdParties',
|
||||
name: 'includeThirdParties',
|
||||
type: 'boolean',
|
||||
default: false,
|
||||
description: 'Whether to include vendors in the response',
|
||||
description: 'Whether to include thirdParties in the response',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -142,10 +142,10 @@ export async function execute(
|
||||
const name = this.getNodeParameter('name', itemIndex) as string;
|
||||
const dataClassification = this.getNodeParameter('dataClassification', itemIndex) as string;
|
||||
const ownerId = this.getNodeParameter('ownerId', itemIndex) as string;
|
||||
const vendorIdsStr = this.getNodeParameter('vendorIds', itemIndex, '') as string;
|
||||
const thirdPartyIdsStr = this.getNodeParameter('thirdPartyIds', itemIndex, '') as string;
|
||||
const options = this.getNodeParameter('options', itemIndex, {}) as {
|
||||
includeOwner?: boolean;
|
||||
includeVendors?: boolean;
|
||||
includeThirdParties?: boolean;
|
||||
};
|
||||
|
||||
const ownerFragment = options.includeOwner
|
||||
@@ -156,8 +156,8 @@ export async function execute(
|
||||
}`
|
||||
: '';
|
||||
|
||||
const vendorsFragment = options.includeVendors
|
||||
? `vendors(first: 100) {
|
||||
const thirdPartiesFragment = options.includeThirdParties
|
||||
? `thirdParties(first: 100) {
|
||||
edges {
|
||||
node {
|
||||
id
|
||||
@@ -176,7 +176,7 @@ export async function execute(
|
||||
name
|
||||
dataClassification
|
||||
${ownerFragment}
|
||||
${vendorsFragment}
|
||||
${thirdPartiesFragment}
|
||||
createdAt
|
||||
updatedAt
|
||||
}
|
||||
@@ -185,7 +185,7 @@ export async function execute(
|
||||
}
|
||||
`;
|
||||
|
||||
const vendorIds = vendorIdsStr ? vendorIdsStr.split(',').map((id) => id.trim()).filter(Boolean) : undefined;
|
||||
const thirdPartyIds = thirdPartyIdsStr ? thirdPartyIdsStr.split(',').map((id) => id.trim()).filter(Boolean) : undefined;
|
||||
|
||||
const variables = {
|
||||
input: {
|
||||
@@ -193,7 +193,7 @@ export async function execute(
|
||||
name,
|
||||
dataClassification,
|
||||
ownerId,
|
||||
...(vendorIds && vendorIds.length > 0 && { vendorIds }),
|
||||
...(thirdPartyIds && thirdPartyIds.length > 0 && { thirdPartyIds }),
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -51,11 +51,11 @@ export const description: INodeProperties[] = [
|
||||
description: 'Whether to include owner details in the response',
|
||||
},
|
||||
{
|
||||
displayName: 'Include Vendors',
|
||||
name: 'includeVendors',
|
||||
displayName: 'Include ThirdParties',
|
||||
name: 'includeThirdParties',
|
||||
type: 'boolean',
|
||||
default: false,
|
||||
description: 'Whether to include vendors in the response',
|
||||
description: 'Whether to include thirdParties in the response',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -68,7 +68,7 @@ export async function execute(
|
||||
const datumId = this.getNodeParameter('datumId', itemIndex) as string;
|
||||
const options = this.getNodeParameter('options', itemIndex, {}) as {
|
||||
includeOwner?: boolean;
|
||||
includeVendors?: boolean;
|
||||
includeThirdParties?: boolean;
|
||||
};
|
||||
|
||||
const ownerFragment = options.includeOwner
|
||||
@@ -79,8 +79,8 @@ export async function execute(
|
||||
}`
|
||||
: '';
|
||||
|
||||
const vendorsFragment = options.includeVendors
|
||||
? `vendors(first: 100) {
|
||||
const thirdPartiesFragment = options.includeThirdParties
|
||||
? `thirdParties(first: 100) {
|
||||
edges {
|
||||
node {
|
||||
id
|
||||
@@ -98,7 +98,7 @@ export async function execute(
|
||||
name
|
||||
dataClassification
|
||||
${ownerFragment}
|
||||
${vendorsFragment}
|
||||
${thirdPartiesFragment}
|
||||
createdAt
|
||||
updatedAt
|
||||
}
|
||||
|
||||
@@ -81,11 +81,11 @@ export const description: INodeProperties[] = [
|
||||
description: 'Whether to include owner details in the response',
|
||||
},
|
||||
{
|
||||
displayName: 'Include Vendors',
|
||||
name: 'includeVendors',
|
||||
displayName: 'Include ThirdParties',
|
||||
name: 'includeThirdParties',
|
||||
type: 'boolean',
|
||||
default: false,
|
||||
description: 'Whether to include vendors in the response',
|
||||
description: 'Whether to include thirdParties in the response',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -100,7 +100,7 @@ export async function execute(
|
||||
const limit = this.getNodeParameter('limit', itemIndex, 50) as number;
|
||||
const options = this.getNodeParameter('options', itemIndex, {}) as {
|
||||
includeOwner?: boolean;
|
||||
includeVendors?: boolean;
|
||||
includeThirdParties?: boolean;
|
||||
};
|
||||
|
||||
const ownerFragment = options.includeOwner
|
||||
@@ -111,8 +111,8 @@ export async function execute(
|
||||
}`
|
||||
: '';
|
||||
|
||||
const vendorsFragment = options.includeVendors
|
||||
? `vendors(first: 100) {
|
||||
const thirdPartiesFragment = options.includeThirdParties
|
||||
? `thirdParties(first: 100) {
|
||||
edges {
|
||||
node {
|
||||
id
|
||||
@@ -133,7 +133,7 @@ export async function execute(
|
||||
name
|
||||
dataClassification
|
||||
${ownerFragment}
|
||||
${vendorsFragment}
|
||||
${thirdPartiesFragment}
|
||||
createdAt
|
||||
updatedAt
|
||||
}
|
||||
|
||||
@@ -88,8 +88,8 @@ export const description: INodeProperties[] = [
|
||||
description: 'The ID of the owner (People)',
|
||||
},
|
||||
{
|
||||
displayName: 'Vendor IDs',
|
||||
name: 'vendorIds',
|
||||
displayName: 'ThirdParty IDs',
|
||||
name: 'thirdPartyIds',
|
||||
type: 'string',
|
||||
displayOptions: {
|
||||
show: {
|
||||
@@ -98,7 +98,7 @@ export const description: INodeProperties[] = [
|
||||
},
|
||||
},
|
||||
default: '',
|
||||
description: 'Comma-separated list of vendor IDs',
|
||||
description: 'Comma-separated list of thirdParty IDs',
|
||||
},
|
||||
{
|
||||
displayName: 'Options',
|
||||
@@ -121,11 +121,11 @@ export const description: INodeProperties[] = [
|
||||
description: 'Whether to include owner details in the response',
|
||||
},
|
||||
{
|
||||
displayName: 'Include Vendors',
|
||||
name: 'includeVendors',
|
||||
displayName: 'Include ThirdParties',
|
||||
name: 'includeThirdParties',
|
||||
type: 'boolean',
|
||||
default: false,
|
||||
description: 'Whether to include vendors in the response',
|
||||
description: 'Whether to include thirdParties in the response',
|
||||
},
|
||||
],
|
||||
},
|
||||
@@ -139,10 +139,10 @@ export async function execute(
|
||||
const name = this.getNodeParameter('name', itemIndex, '') as string;
|
||||
const dataClassification = this.getNodeParameter('dataClassification', itemIndex, '') as string;
|
||||
const ownerId = this.getNodeParameter('ownerId', itemIndex, '') as string;
|
||||
const vendorIdsStr = this.getNodeParameter('vendorIds', itemIndex, '') as string;
|
||||
const thirdPartyIdsStr = this.getNodeParameter('thirdPartyIds', itemIndex, '') as string;
|
||||
const options = this.getNodeParameter('options', itemIndex, {}) as {
|
||||
includeOwner?: boolean;
|
||||
includeVendors?: boolean;
|
||||
includeThirdParties?: boolean;
|
||||
};
|
||||
|
||||
const ownerFragment = options.includeOwner
|
||||
@@ -153,8 +153,8 @@ export async function execute(
|
||||
}`
|
||||
: '';
|
||||
|
||||
const vendorsFragment = options.includeVendors
|
||||
? `vendors(first: 100) {
|
||||
const thirdPartiesFragment = options.includeThirdParties
|
||||
? `thirdParties(first: 100) {
|
||||
edges {
|
||||
node {
|
||||
id
|
||||
@@ -172,7 +172,7 @@ export async function execute(
|
||||
name
|
||||
dataClassification
|
||||
${ownerFragment}
|
||||
${vendorsFragment}
|
||||
${thirdPartiesFragment}
|
||||
createdAt
|
||||
updatedAt
|
||||
}
|
||||
@@ -184,9 +184,9 @@ export async function execute(
|
||||
if (name) input.name = name;
|
||||
if (dataClassification) input.dataClassification = dataClassification;
|
||||
if (ownerId) input.ownerId = ownerId;
|
||||
if (vendorIdsStr) {
|
||||
const vendorIds = vendorIdsStr.split(',').map((vid) => vid.trim()).filter(Boolean);
|
||||
if (vendorIds.length > 0) input.vendorIds = vendorIds;
|
||||
if (thirdPartyIdsStr) {
|
||||
const thirdPartyIds = thirdPartyIdsStr.split(',').map((vid) => vid.trim()).filter(Boolean);
|
||||
if (thirdPartyIds.length > 0) input.thirdPartyIds = thirdPartyIds;
|
||||
}
|
||||
|
||||
const responseData = await proboApiRequest.call(this, query, { input });
|
||||
|
||||
Reference in New Issue
Block a user