- {__(`Connect to ${organization.name}'s Compliance Page`)}
+ {__(`Connect to ${title}'s Compliance Page`)}
{__(
diff --git a/apps/trust/src/queries/TrustGraph.ts b/apps/trust/src/queries/TrustGraph.ts
index d058782da..3c5670af1 100644
--- a/apps/trust/src/queries/TrustGraph.ts
+++ b/apps/trust/src/queries/TrustGraph.ts
@@ -31,6 +31,7 @@ export const currentTrustGraphQuery = graphql`
currentTrustCenter @required(action: THROW) {
id
slug
+ title
description
websiteUrl
email
@@ -54,9 +55,6 @@ export const currentTrustGraphQuery = graphql`
status
}
}
- organization {
- name
- }
customLinks(first: 20) {
edges {
node {
@@ -96,9 +94,7 @@ export const currentTrustDocumentsQuery = graphql`
query TrustGraphCurrentDocumentsQuery {
currentTrustCenter {
id
- organization {
- name
- }
+ title
documents(first: 50) {
edges {
node {
@@ -125,9 +121,7 @@ export const currentTrustSubprocessorsQuery = graphql`
query TrustGraphCurrentSubprocessorsQuery {
currentTrustCenter {
id
- organization {
- name
- }
+ title
subprocessors(first: 50) {
edges {
node {
diff --git a/e2e/console/trust_center_profile_test.go b/e2e/console/trust_center_profile_test.go
index d3879029d..9fa88ef21 100644
--- a/e2e/console/trust_center_profile_test.go
+++ b/e2e/console/trust_center_profile_test.go
@@ -61,6 +61,7 @@ func TestTrustCenter_UpdateProfile(t *testing.T) {
updateTrustCenter(input: $input) {
trustCenter {
id
+ title
description
websiteUrl
email
@@ -74,6 +75,7 @@ func TestTrustCenter_UpdateProfile(t *testing.T) {
UpdateTrustCenter struct {
TrustCenter struct {
ID string `json:"id"`
+ Title string `json:"title"`
Description *string `json:"description"`
WebsiteURL *string `json:"websiteUrl"`
Email *string `json:"email"`
@@ -85,6 +87,7 @@ func TestTrustCenter_UpdateProfile(t *testing.T) {
err = owner.Execute(updateMutation, map[string]any{
"input": map[string]any{
"trustCenterId": trustCenterID,
+ "title": "Acme Security",
"description": "We keep your data safe.",
"websiteUrl": "https://example.com",
"email": "security@example.com",
@@ -95,6 +98,7 @@ func TestTrustCenter_UpdateProfile(t *testing.T) {
tc := result.UpdateTrustCenter.TrustCenter
assert.Equal(t, trustCenterID, tc.ID)
+ assert.Equal(t, "Acme Security", tc.Title)
require.NotNil(t, tc.Description)
assert.Equal(t, "We keep your data safe.", *tc.Description)
require.NotNil(t, tc.WebsiteURL)
diff --git a/e2e/mcp/trust_center_test.go b/e2e/mcp/trust_center_test.go
index f5f79c9ba..7108cc850 100644
--- a/e2e/mcp/trust_center_test.go
+++ b/e2e/mcp/trust_center_test.go
@@ -36,8 +36,7 @@ type mcpFile struct {
type trustCenter struct {
ID string `json:"id"`
- CompanyName string `json:"companyName"`
- PageTitle string `json:"pageTitle"`
+ Title string `json:"title"`
TrustCenterVisible bool `json:"trustCenterVisible"`
Logo *mcpFile `json:"logo,omitempty"`
}
@@ -176,6 +175,7 @@ func TestMCP_UpdateTrustCenter(t *testing.T) {
var updateResult struct {
TrustCenter struct {
ID string `json:"id"`
+ Title string `json:"title"`
Description *string `json:"description"`
WebsiteURL *string `json:"website_url"`
Email *string `json:"email"`
@@ -184,6 +184,7 @@ func TestMCP_UpdateTrustCenter(t *testing.T) {
}
mc.CallToolInto("updateTrustCenter", map[string]any{
"trust_center_id": getResult.TrustCenter.ID,
+ "title": "Acme Security",
"description": "We keep your data safe.",
"website_url": "https://example.com",
"email": "security@example.com",
@@ -191,6 +192,7 @@ func TestMCP_UpdateTrustCenter(t *testing.T) {
}, &updateResult)
assert.Equal(t, getResult.TrustCenter.ID, updateResult.TrustCenter.ID)
+ assert.Equal(t, "Acme Security", updateResult.TrustCenter.Title)
require.NotNil(t, updateResult.TrustCenter.Description)
assert.Equal(t, "We keep your data safe.", *updateResult.TrustCenter.Description)
require.NotNil(t, updateResult.TrustCenter.WebsiteURL)
diff --git a/packages/n8n-node/nodes/Probo/actions/trustCenter/update.operation.ts b/packages/n8n-node/nodes/Probo/actions/trustCenter/update.operation.ts
index 3d07ad54d..a26262f5c 100644
--- a/packages/n8n-node/nodes/Probo/actions/trustCenter/update.operation.ts
+++ b/packages/n8n-node/nodes/Probo/actions/trustCenter/update.operation.ts
@@ -76,6 +76,19 @@ export const description: INodeProperties[] = [
default: '',
description: 'Whether search engines should index the trust center',
},
+ {
+ displayName: 'Title',
+ name: 'title',
+ type: 'string',
+ displayOptions: {
+ show: {
+ resource: ['trustCenter'],
+ operation: ['update'],
+ },
+ },
+ default: '',
+ description: 'The title shown on the public compliance page',
+ },
{
displayName: 'Description',
name: 'description',
@@ -142,6 +155,7 @@ export async function execute(
const websiteUrl = this.getNodeParameter('websiteUrl', itemIndex, '') as string;
const email = this.getNodeParameter('email', itemIndex, '') as string;
const headquarterAddress = this.getNodeParameter('headquarterAddress', itemIndex, '') as string;
+ const title = this.getNodeParameter('title', itemIndex, '') as string;
const query = `
mutation UpdateTrustCenter($input: UpdateTrustCenterInput!) {
@@ -150,6 +164,7 @@ export async function execute(
id
active
searchEngineIndexing
+ title
description
websiteUrl
email
@@ -168,6 +183,7 @@ export async function execute(
if (websiteUrl) input.websiteUrl = websiteUrl;
if (email) input.email = email;
if (headquarterAddress) input.headquarterAddress = headquarterAddress;
+ if (title) input.title = title;
const responseData = await proboApiRequest.call(this, query, { input });
diff --git a/pkg/cmd/trust-center/update/update.go b/pkg/cmd/trust-center/update/update.go
index 117e4be48..8d88d18cb 100644
--- a/pkg/cmd/trust-center/update/update.go
+++ b/pkg/cmd/trust-center/update/update.go
@@ -49,6 +49,7 @@ mutation($input: UpdateTrustCenterInput!) {
id
active
searchEngineIndexing
+ title
description
websiteUrl
email
@@ -73,6 +74,7 @@ type updateResponse struct {
ID string `json:"id"`
Active bool `json:"active"`
SearchEngineIndexing string `json:"searchEngineIndexing"`
+ Title string `json:"title"`
Description *string `json:"description"`
WebsiteURL *string `json:"websiteUrl"`
Email *string `json:"email"`
@@ -90,6 +92,7 @@ func NewCmdUpdate(f *cmdutil.Factory) *cobra.Command {
flagWebsiteURL string
flagEmail string
flagHeadquarterAddress string
+ flagTitle string
)
cmd := &cobra.Command{
@@ -186,6 +189,10 @@ func NewCmdUpdate(f *cmdutil.Factory) *cobra.Command {
input["headquarterAddress"] = flagHeadquarterAddress
}
+ if cmd.Flags().Changed("title") {
+ input["title"] = flagTitle
+ }
+
if len(input) == 1 {
return fmt.Errorf("at least one field must be specified for update")
}
@@ -221,6 +228,7 @@ func NewCmdUpdate(f *cmdutil.Factory) *cobra.Command {
cmd.Flags().StringVar(&flagWebsiteURL, "website-url", "", "Compliance page website URL")
cmd.Flags().StringVar(&flagEmail, "email", "", "Compliance page contact email")
cmd.Flags().StringVar(&flagHeadquarterAddress, "headquarter-address", "", "Compliance page headquarter address")
+ cmd.Flags().StringVar(&flagTitle, "title", "", "Public compliance page title")
return cmd
}
diff --git a/pkg/complianceportal/management/portal_service.go b/pkg/complianceportal/management/portal_service.go
index 2534075df..ae0b24751 100644
--- a/pkg/complianceportal/management/portal_service.go
+++ b/pkg/complianceportal/management/portal_service.go
@@ -47,6 +47,7 @@ type (
Slug *string
SearchEngineIndexing *coredata.SearchEngineIndexing
NonDisclosureAgreementFileID *gid.GID
+ Title *string
Description **string
WebsiteURL **string
Email **string
@@ -75,6 +76,10 @@ func (utcr *UpdateRequest) Validate() error {
v.Check(utcr.Slug, "slug", validator.SafeText(NameMaxLength))
v.Check(utcr.NonDisclosureAgreementFileID, "non_disclosure_agreement_file_id", validator.GID(coredata.FileEntityType))
+ if utcr.Title != nil {
+ v.Check(*utcr.Title, "title", validator.Required(), validator.SafeTextNoNewLine(NameMaxLength))
+ }
+
if utcr.Description != nil {
v.Check(*utcr.Description, "description", validator.SafeText(ContentMaxLength))
}
@@ -210,6 +215,10 @@ func (s *Service) Update(
trustCenter.SearchEngineIndexing = *req.SearchEngineIndexing
}
+ if req.Title != nil {
+ trustCenter.Title = *req.Title
+ }
+
if req.Description != nil {
trustCenter.Description = *req.Description
}
diff --git a/pkg/coredata/compliance_framework.go b/pkg/coredata/compliance_framework.go
index 9b10cca16..122a6eb8d 100644
--- a/pkg/coredata/compliance_framework.go
+++ b/pkg/coredata/compliance_framework.go
@@ -389,10 +389,7 @@ WITH combined AS (
COALESCE(cf.organization_id, tc.organization_id) AS organization_id,
COALESCE(cf.trust_center_id, tc.id) AS trust_center_id,
f.id AS framework_id,
- CASE
- WHEN cf.id IS NOT NULL THEN cf.rank
- ELSE COALESCE(MAX(cf.rank) OVER (), 0) + ROW_NUMBER() OVER (PARTITION BY (cf.id IS NULL) ORDER BY f.created_at)
- END AS rank,
+ ROW_NUMBER() OVER (ORDER BY f.created_at, f.id) AS rank,
CASE WHEN cf.id IS NULL THEN 'NONE' ELSE 'PUBLIC' END AS visibility,
COALESCE(cf.created_at, f.created_at) AS created_at,
COALESCE(cf.updated_at, f.updated_at) AS updated_at
diff --git a/pkg/coredata/migrations/20260710T144904Z.sql b/pkg/coredata/migrations/20260710T144904Z.sql
new file mode 100644
index 000000000..65bf87b3b
--- /dev/null
+++ b/pkg/coredata/migrations/20260710T144904Z.sql
@@ -0,0 +1,24 @@
+-- Copyright (c) 2026 Probo Inc .
+--
+-- 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.
+
+ALTER TABLE trust_centers
+ ADD COLUMN page_title TEXT;
+
+UPDATE trust_centers tc
+SET page_title = o.name
+FROM organizations o
+WHERE tc.organization_id = o.id;
+
+ALTER TABLE trust_centers
+ ALTER COLUMN page_title SET NOT NULL;
diff --git a/pkg/coredata/migrations/20260710T152544Z.sql b/pkg/coredata/migrations/20260710T152544Z.sql
new file mode 100644
index 000000000..b90e225fe
--- /dev/null
+++ b/pkg/coredata/migrations/20260710T152544Z.sql
@@ -0,0 +1,16 @@
+-- Copyright (c) 2026 Probo Inc .
+--
+-- 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.
+
+ALTER TABLE trust_centers
+ RENAME COLUMN page_title TO title;
diff --git a/pkg/coredata/trust_center.go b/pkg/coredata/trust_center.go
index 861137bb2..4ceb5739d 100644
--- a/pkg/coredata/trust_center.go
+++ b/pkg/coredata/trust_center.go
@@ -49,6 +49,7 @@ type (
NonDisclosureAgreementFileID *gid.GID `db:"non_disclosure_agreement_file_id"`
DefaultDomainID *gid.GID `db:"default_domain_id"`
CustomDomainID *gid.GID `db:"custom_domain_id"`
+ Title string `db:"title"`
Description *string `db:"description"`
WebsiteURL *string `db:"website_url"`
Email *string `db:"email"`
@@ -128,6 +129,7 @@ SELECT
non_disclosure_agreement_file_id,
default_domain_id,
custom_domain_id,
+ title,
description,
website_url,
email,
@@ -186,6 +188,7 @@ SELECT
non_disclosure_agreement_file_id,
default_domain_id,
custom_domain_id,
+ title,
description,
website_url,
email,
@@ -244,6 +247,7 @@ SELECT
non_disclosure_agreement_file_id,
default_domain_id,
custom_domain_id,
+ title,
description,
website_url,
email,
@@ -302,6 +306,7 @@ SELECT
non_disclosure_agreement_file_id,
default_domain_id,
custom_domain_id,
+ title,
description,
website_url,
email,
@@ -360,6 +365,7 @@ SELECT
non_disclosure_agreement_file_id,
default_domain_id,
custom_domain_id,
+ title,
description,
website_url,
email,
@@ -414,6 +420,7 @@ INSERT INTO trust_centers (
non_disclosure_agreement_file_id,
default_domain_id,
custom_domain_id,
+ title,
description,
website_url,
email,
@@ -433,6 +440,7 @@ INSERT INTO trust_centers (
@non_disclosure_agreement_file_id,
@default_domain_id,
@custom_domain_id,
+ @title,
@description,
@website_url,
@email,
@@ -455,6 +463,7 @@ INSERT INTO trust_centers (
"non_disclosure_agreement_file_id": tc.NonDisclosureAgreementFileID,
"default_domain_id": tc.DefaultDomainID,
"custom_domain_id": tc.CustomDomainID,
+ "title": tc.Title,
"description": tc.Description,
"website_url": tc.WebsiteURL,
"email": tc.Email,
@@ -493,6 +502,7 @@ SET
non_disclosure_agreement_file_id = @non_disclosure_agreement_file_id,
default_domain_id = @default_domain_id,
custom_domain_id = @custom_domain_id,
+ title = @title,
description = @description,
website_url = @website_url,
email = @email,
@@ -515,6 +525,7 @@ WHERE
"non_disclosure_agreement_file_id": tc.NonDisclosureAgreementFileID,
"default_domain_id": tc.DefaultDomainID,
"custom_domain_id": tc.CustomDomainID,
+ "title": tc.Title,
"description": tc.Description,
"website_url": tc.WebsiteURL,
"email": tc.Email,
diff --git a/pkg/iam/organization_service.go b/pkg/iam/organization_service.go
index 55e71435e..e1ea3ebca 100644
--- a/pkg/iam/organization_service.go
+++ b/pkg/iam/organization_service.go
@@ -614,6 +614,7 @@ func (s *OrganizationService) CreateOrganization(
TenantID: organization.TenantID,
Active: false,
Slug: slug.Make(organization.Name),
+ Title: organization.Name,
SearchEngineIndexing: coredata.SearchEngineIndexingNotIndexable,
MailingListID: &mailingList.ID,
CreatedAt: now,
diff --git a/pkg/server/api/console/v1/graphql/trust_center.graphql b/pkg/server/api/console/v1/graphql/trust_center.graphql
index 2307d88e5..e1635c39f 100644
--- a/pkg/server/api/console/v1/graphql/trust_center.graphql
+++ b/pkg/server/api/console/v1/graphql/trust_center.graphql
@@ -256,6 +256,7 @@ type TrustCenter implements Node
websiteUrl: String
email: String
headquarterAddress: String
+ title: String!
createdAt: Datetime!
updatedAt: Datetime!
organization: Organization! @goField(forceResolver: true)
@@ -567,6 +568,7 @@ input UpdateTrustCenterInput {
trustCenterId: ID!
active: Boolean
searchEngineIndexing: SearchEngineIndexing
+ title: String
description: String @goField(omittable: true)
websiteUrl: String @goField(omittable: true)
email: String @goField(omittable: true)
diff --git a/pkg/server/api/console/v1/trust_center_resolvers.go b/pkg/server/api/console/v1/trust_center_resolvers.go
index ada61465f..9b702511b 100644
--- a/pkg/server/api/console/v1/trust_center_resolvers.go
+++ b/pkg/server/api/console/v1/trust_center_resolvers.go
@@ -75,6 +75,7 @@ func (r *mutationResolver) UpdateTrustCenter(ctx context.Context, input types.Up
WebsiteURL: gqlutils.UnwrapOmittable(input.WebsiteURL),
Email: gqlutils.UnwrapOmittable(input.Email),
HeadquarterAddress: gqlutils.UnwrapOmittable(input.HeadquarterAddress),
+ Title: input.Title,
},
)
if err != nil {
diff --git a/pkg/server/api/console/v1/types/trust_center.go b/pkg/server/api/console/v1/types/trust_center.go
index 348d788fd..2953aaf16 100644
--- a/pkg/server/api/console/v1/types/trust_center.go
+++ b/pkg/server/api/console/v1/types/trust_center.go
@@ -38,6 +38,7 @@ type TrustCenter struct {
WebsiteURL *string `json:"websiteUrl,omitempty"`
Email *string `json:"email,omitempty"`
HeadquarterAddress *string `json:"headquarterAddress,omitempty"`
+ Title string `json:"title"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
Organization *Organization `json:"organization"`
@@ -64,6 +65,7 @@ func NewTrustCenter(tc *coredata.TrustCenter) *TrustCenter {
WebsiteURL: tc.WebsiteURL,
Email: tc.Email,
HeadquarterAddress: tc.HeadquarterAddress,
+ Title: tc.Title,
CreatedAt: tc.CreatedAt,
UpdatedAt: tc.UpdatedAt,
}
diff --git a/pkg/server/api/mcp/v1/schema.resolvers.go b/pkg/server/api/mcp/v1/schema.resolvers.go
index 7a0c83ac4..b6b6617d4 100644
--- a/pkg/server/api/mcp/v1/schema.resolvers.go
+++ b/pkg/server/api/mcp/v1/schema.resolvers.go
@@ -4954,6 +4954,9 @@ func (r *Resolver) UpdateTrustCenterTool(ctx context.Context, req *mcp.CallToolR
updateReq.WebsiteURL = UnwrapOmittable(input.WebsiteURL)
updateReq.Email = UnwrapOmittable(input.Email)
updateReq.HeadquarterAddress = UnwrapOmittable(input.HeadquarterAddress)
+ if title := UnwrapOmittable(input.Title); title != nil {
+ updateReq.Title = *title
+ }
trustCenter, _, err := prb.Update(ctx, scope, updateReq)
if err != nil {
diff --git a/pkg/server/api/mcp/v1/specification.yaml b/pkg/server/api/mcp/v1/specification.yaml
index e91332536..e9e514a3c 100644
--- a/pkg/server/api/mcp/v1/specification.yaml
+++ b/pkg/server/api/mcp/v1/specification.yaml
@@ -8832,6 +8832,7 @@ components:
- organization_id
- active
- search_engine_indexing
+ - title
- created_at
- updated_at
properties:
@@ -8869,6 +8870,9 @@ components:
- string
- "null"
description: Compliance page headquarter address
+ title:
+ type: string
+ description: Public compliance page title
created_at:
type: string
format: date-time
@@ -9059,6 +9063,12 @@ components:
- "null"
description: Compliance page headquarter address
go.probo.inc/mcpgen/omittable: true
+ title:
+ type:
+ - string
+ - "null"
+ description: Public compliance page title
+ go.probo.inc/mcpgen/omittable: true
UpdateTrustCenterOutput:
type: object
diff --git a/pkg/server/api/mcp/v1/types/trust_center.go b/pkg/server/api/mcp/v1/types/trust_center.go
index e080ab591..ca42610cc 100644
--- a/pkg/server/api/mcp/v1/types/trust_center.go
+++ b/pkg/server/api/mcp/v1/types/trust_center.go
@@ -31,6 +31,7 @@ func NewTrustCenter(tc *coredata.TrustCenter) *TrustCenter {
OrganizationID: tc.OrganizationID,
Active: tc.Active,
SearchEngineIndexing: tc.SearchEngineIndexing,
+ Title: tc.Title,
Description: tc.Description,
WebsiteURL: tc.WebsiteURL,
Email: tc.Email,
diff --git a/pkg/server/api/trust/v1/base_resolvers.go b/pkg/server/api/trust/v1/base_resolvers.go
index e5f08a16e..59e1fa08d 100644
--- a/pkg/server/api/trust/v1/base_resolvers.go
+++ b/pkg/server/api/trust/v1/base_resolvers.go
@@ -46,15 +46,6 @@ func (r *queryResolver) Node(ctx context.Context, id gid.GID) (types.Node, error
trustService := r.trust
switch id.EntityType() {
- case coredata.OrganizationEntityType:
- organization, err := trustService.GetOrganization(ctx, scope, id)
- if err != nil {
- r.logger.ErrorCtx(ctx, "cannot get organization", log.Error(err))
- return nil, gqlutils.Internal(ctx)
- }
-
- return types.NewOrganization(organization), nil
-
case coredata.DocumentEntityType:
trustCenter := complianceportal.CompliancePageFromContext(ctx)
@@ -190,11 +181,7 @@ func (r *queryResolver) CurrentTrustCenter(ctx context.Context) (*types.TrustCen
scope := coredata.NewScopeFromObjectID(trustCenter.ID)
trustService := r.trust
- org, err := trustService.GetOrganization(ctx, scope, trustCenter.OrganizationID)
- if err != nil {
- r.logger.ErrorCtx(ctx, "cannot get organization", log.Error(err))
- return nil, gqlutils.Internal(ctx)
- }
+ var err error
trustCenter, err = trustService.GetPortal(ctx, scope, trustCenter.ID)
if err != nil {
@@ -202,10 +189,7 @@ func (r *queryResolver) CurrentTrustCenter(ctx context.Context) (*types.TrustCen
return nil, gqlutils.Internal(ctx)
}
- response := types.NewTrustCenter(trustCenter)
- response.Organization = types.NewOrganization(org)
-
- return response, nil
+ return types.NewTrustCenter(trustCenter), nil
}
// OidcProviders is the resolver for the oidcProviders field.
diff --git a/pkg/server/api/trust/v1/graphql/organization.graphql b/pkg/server/api/trust/v1/graphql/organization.graphql
deleted file mode 100644
index 38ce26139..000000000
--- a/pkg/server/api/trust/v1/graphql/organization.graphql
+++ /dev/null
@@ -1,5 +0,0 @@
-type Organization implements Node {
- id: ID!
- name: String!
- logo: File @goField(forceResolver: true)
-}
diff --git a/pkg/server/api/trust/v1/graphql/trust_center.graphql b/pkg/server/api/trust/v1/graphql/trust_center.graphql
index d1366a4d4..018d52c9f 100644
--- a/pkg/server/api/trust/v1/graphql/trust_center.graphql
+++ b/pkg/server/api/trust/v1/graphql/trust_center.graphql
@@ -9,13 +9,12 @@ type TrustCenter implements Node {
websiteUrl: String
email: String
headquarterAddress: String
+ title: String!
nonDisclosureAgreement: NonDisclosureAgreement @goField(forceResolver: true)
viewerSubscription: MailingListSubscriber @goField(forceResolver: true)
- organization: Organization! @goField(forceResolver: true)
-
documents(
first: Int
after: CursorKey
diff --git a/pkg/server/api/trust/v1/organization_resolvers.go b/pkg/server/api/trust/v1/organization_resolvers.go
deleted file mode 100644
index 7b6c40087..000000000
--- a/pkg/server/api/trust/v1/organization_resolvers.go
+++ /dev/null
@@ -1,38 +0,0 @@
-package trust_v1
-
-// This file will be automatically regenerated based on the schema, any resolver
-// implementations
-// will be copied through when generating and any unknown code will be moved to the end.
-// Code generated by github.com/99designs/gqlgen version v0.17.93
-
-import (
- "context"
-
- "go.probo.inc/probo/pkg/coredata"
- "go.probo.inc/probo/pkg/server/api/compliancepage"
- "go.probo.inc/probo/pkg/server/api/trust/v1/schema"
- "go.probo.inc/probo/pkg/server/api/trust/v1/types"
- "go.probo.inc/probo/pkg/server/gqlutils"
-)
-
-// Logo is the resolver for the logo field.
-func (r *organizationResolver) Logo(ctx context.Context, obj *types.Organization) (*types.File, error) {
- compliancePage := compliancepage.CompliancePageFromContext(ctx)
- scope := coredata.NewScopeFromObjectID(compliancePage.OrganizationID)
-
- organization, err := r.trust.GetOrganization(ctx, scope, obj.ID)
- if err != nil {
- return nil, gqlutils.NotFoundf(ctx, "organization %q not found", obj.ID)
- }
-
- if organization.LogoFileID == nil {
- return nil, nil
- }
-
- return r.loadPublicFile(ctx, *organization.LogoFileID)
-}
-
-// Organization returns schema.OrganizationResolver implementation.
-func (r *Resolver) Organization() schema.OrganizationResolver { return &organizationResolver{r} }
-
-type organizationResolver struct{ *Resolver }
diff --git a/pkg/server/api/trust/v1/types/organization.go b/pkg/server/api/trust/v1/types/organization.go
deleted file mode 100644
index d846dceb9..000000000
--- a/pkg/server/api/trust/v1/types/organization.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (c) 2025-2026 Probo Inc .
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-// SOFTWARE.
-
-package types
-
-import (
- "go.probo.inc/probo/pkg/coredata"
-)
-
-func NewOrganization(o *coredata.Organization) *Organization {
- return &Organization{
- ID: o.ID,
- Name: o.Name,
- }
-}
diff --git a/pkg/server/api/trust/v1/types/trust_center.go b/pkg/server/api/trust/v1/types/trust_center.go
index d1224fd72..a2e09cabe 100644
--- a/pkg/server/api/trust/v1/types/trust_center.go
+++ b/pkg/server/api/trust/v1/types/trust_center.go
@@ -29,6 +29,7 @@ func NewTrustCenter(tc *coredata.TrustCenter) *TrustCenter {
ID: tc.ID,
Active: tc.Active,
Slug: tc.Slug,
+ Title: tc.Title,
Description: tc.Description,
WebsiteURL: tc.WebsiteURL,
Email: tc.Email,
diff --git a/pkg/server/server.go b/pkg/server/server.go
index 5306dc1dd..9333543ea 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -137,7 +137,7 @@ func NewServer(cfg Config) (*Server, error) {
return nil, err
}
- trustWebServer, err := trust_web.NewServer(compliancePageHeadData(cfg.BaseURL, cfg.Trust))
+ trustWebServer, err := trust_web.NewServer(compliancePageHeadData(cfg.BaseURL))
if err != nil {
return nil, err
}
@@ -252,27 +252,22 @@ func (s *Server) TrustCenterHandler() http.Handler {
return r
}
-func compliancePageHeadData(baseURL *baseurl.BaseURL, trustService *trust.Service) trust_web.HeadDataFunc {
+func compliancePageHeadData(baseURL *baseurl.BaseURL) trust_web.HeadDataFunc {
return func(r *http.Request) trust_web.HeadData {
tc := complianceportal.CompliancePageFromContext(r.Context())
if tc == nil {
return trust_web.HeadData{Title: "Compliance Page"}
}
- org, err := trustService.GetPortalOrganization(r.Context(), tc.ID)
- if err != nil || org == nil {
- return trust_web.HeadData{Title: "Compliance Page"}
- }
-
compliancePageBaseURL := complianceportal.CompliancePageBaseURLFromContext(r.Context())
- description := org.Name + " Compliance Page"
+ description := tc.Title + " Compliance Page"
if tc.Description != nil && *tc.Description != "" {
description = *tc.Description
}
headData := trust_web.HeadData{
- Title: org.Name + " — Compliance",
+ Title: tc.Title,
Description: description,
OGURL: ref.UnrefOrZero(compliancePageBaseURL),
}