Story 6.3: Partner Settings Screen - Wireframe
Story: Epic 6, Story 6.3 - Partner Coordination
Visual Wireframe
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β Back to Dashboard Partner Settings [Save] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββ SETTINGS NAVIGATION βββββββ ββββ COMPANY SETTINGS βββββββββββββββββββββ β
β β β β β β
β β β Company Settings β β Partner Information β β
β β β Notification Preferences β β β β
β β β Integration Settings β β Company Name β β
β β β Billing & Subscription β β ββββββββββββββββββββββββββββββββββββββββ β
β β β Team & Access β β β TechCorp AG ββ β
β β β Privacy & Data β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β (Contact support to change company name)β β
β β β β β β
β β β β Partnership Tier β β
β β β β π₯ Gold Partner β β
β β β β [View Tier Benefits] [Upgrade Tier] β β
β β β β β β
β β β β Industry β β
β β β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β β Software & IT Services ββ β
β β β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β β β
β β β β Company Website β β
β β β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β β https://www.techcorp.ch ββ β
β β β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β β β
β β β β Company Logo β β
β β β β βββββββββββββββββββββββ β β
β β β β β [π’ Logo] β β β
β β β β β 400Γ200px β β β
β β β β βββββββββββββββββββββββ β β
β β β β [Upload New Logo] [Remove] β β
β β β β (PNG/SVG, max 5MB, transparent bg) β β
β β β β β β
β β β β Primary Contact β β
β β β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β β Maria Schmidt ββ β
β β β β β m.schmidt@techcorp.ch ββ β
β β β β β +41 44 123 45 67 ββ β
β β β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β [Change Primary Contact] β β
β β β β β β
β β β β Partnership Start Date β β
β β β β January 15, 2020 β β
β β β β β β
β βββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββ β
β β
β [Cancel] [Save Changes] β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[NOTIFICATION PREFERENCES TAB]
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββ SETTINGS NAVIGATION βββββββ ββββ NOTIFICATION PREFERENCES βββββββββββββ β
β β β β β β
β β β Company Settings β β Email Notifications β β
β β β Notification Preferences β β β β
β β β Integration Settings β β Topic Voting & Strategy β β
β β β Billing & Subscription β β β New voting cycle opened β β
β β β Team & Access β β β Voting deadline approaching (3 days) β β
β β β Privacy & Data β β β Topic adopted from your suggestion β β
β β β β β Voting results published β β
β β β β β β
β β β β Partner Meetings β β
β β β β β Meeting scheduled β β
β β β β β Meeting agenda published β β
β β β β β Meeting materials available β β
β β β β β Meeting reminder (1 day before) β β
β β β β β Meeting notes published β β
β β β β β β
β β β β Event Updates β β
β β β β β Upcoming events announcement β β
β β β β β Event registration opens β β
β β β β β Final agenda published β β
β β β β β Employee registration summary β β
β β β β β β
β β β β Reports & Analytics β β
β β β β β Monthly engagement report β β
β β β β β Quarterly partnership review β β
β β β β β Real-time ROI updates β β
β β β β β β
β β β β Communication Channels β β
β β β β β Email (primary contact) β β
β β β β β Email (all team members) β β
β β β β β In-app notifications β β
β β β β β β
β β β β Quiet Hours β β
β β β β β Enable quiet hours β β
β β β β From: [18:00 β·] To: [08:00 β·] β β
β β β β Timezone: Europe/Zurich β β
β β β β β β
β β β β [Test Notifications] [Reset to Defaults]β β
β β β β β β
β βββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[INTEGRATION SETTINGS TAB]
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββ SETTINGS NAVIGATION βββββββ ββββ INTEGRATION SETTINGS βββββββββββββββββ β
β β β β β β
β β β Company Settings β β Calendar Integration β β
β β β Notification Preferences β β β β
β β β Integration Settings β β β Microsoft Outlook β β
β β β Billing & Subscription β β β Google Calendar β β
β β β Team & Access β β β Apple Calendar β β
β β β Privacy & Data β β β β
β β β β Status: β
Connected (expires Mar 2026)β β
β β β β [Reconnect] [Disconnect] β β
β β β β β β
β β β β Sync Settings: β β
β β β β β Auto-add events to calendar β β
β β β β β Auto-add partner meetings β β
β β β β β Sync RSVP status β β
β β β β β β
β β β β βββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β β Single Sign-On (SSO) β β
β β β β β β
β β β β β Enable SSO for team members β β
β β β β Provider: Azure AD / Okta / Generic SAMLβ β
β β β β β β
β β β β Status: β
Active β β
β β β β Entity ID: techcorp.batbern.ch β β
β β β β [Configure SSO] [Test Connection] β β
β β β β β β
β β β β βββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β β Webhooks (Advanced) β β
β β β β β β
β β β β Receive real-time notifications for: β β
β β β β β Topic voting opens β β
β β β β β Meeting scheduled β β
β β β β β Employee registered for event β β
β β β β β β
β β β β Webhook URL: β β
β β β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β β https://api.techcorp.ch/webhooks ββ β
β β β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β β β
β β β β Secret Key: β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’ β β
β β β β [Regenerate Secret] [Test Webhook] β β
β β β β β β
β β β β βββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β β API Access β β
β β β β β β
β β β β API Key: pk_live_β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’β’ β β
β β β β [View API Key] [Regenerate] [Revoke] β β
β β β β β β
β β β β [View API Documentation β] β β
β β β β β β
β βββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[BILLING & SUBSCRIPTION TAB]
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββ SETTINGS NAVIGATION βββββββ ββββ BILLING & SUBSCRIPTION βββββββββββββββ β
β β β β β β
β β β Company Settings β β Current Plan β β
β β β Notification Preferences β β β β
β β β Integration Settings β β π₯ Gold Partner Tier β β
β β β Billing & Subscription β β Annual Partnership Agreement β β
β β β Team & Access β β β β
β β β Privacy & Data β β Benefits: β β
β β β β β Weighted voting (3x votes) β β
β β β β β Quarterly partnership meetings β β
β β β β β Logo on event materials β β
β β β β β Priority speaker slots β β
β β β β β Monthly analytics reports β β
β β β β β Up to 50 employee registrations/event β β
β β β β β β
β β β β Renewal Date: January 15, 2026 β β
β β β β Auto-Renewal: β Enabled β β
β β β β β β
β β β β [View All Tier Benefits β] β β
β β β β [Upgrade to Premium β] [Manage Plan] β β
β β β β β β
β β β β βββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β β Billing Information β β
β β β β β β
β β β β Annual Fee: CHF 25,000 β β
β β β β Payment Method: Invoice (Net 30) β β
β β β β β β
β β β β Billing Contact β β
β β β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β β Finance Department ββ β
β β β β β finance@techcorp.ch ββ β
β β β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β β β
β β β β Billing Address β β
β β β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β β TechCorp AG ββ β
β β β β β Bahnhofstrasse 45 ββ β
β β β β β 8001 ZΓΌrich, Switzerland ββ β
β β β β ββββββββββββββββββββββββββββββββββββββββ β
β β β β [Update Billing Info] β β
β β β β β β
β β β β βββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β β Payment History β β
β β β β β β
β β β β Jan 15, 2025 CHF 25,000 [Invoice] β β
β β β β Jan 15, 2024 CHF 20,000 [Invoice] β β
β β β β Jan 15, 2023 CHF 20,000 [Invoice] β β
β β β β β β
β β β β [View All Invoices β] β β
β β β β β β
β βββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[TEAM & ACCESS TAB]
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββ SETTINGS NAVIGATION βββββββ ββββ TEAM & ACCESS MANAGEMENT βββββββββββββ β
β β β β β β
β β β Company Settings β β Team Members β β
β β β Notification Preferences β β β β
β β β Integration Settings β β Total Members: 5 (3 active, 2 pending) β β
β β β Billing & Subscription β β β β
β β β Team & Access β β [+ Invite Team Member] β β
β β β Privacy & Data β β β β
β β β β ββββββββββββββββββββββββββββββββββββββ β β
β β β β β π€ Maria Schmidt β β β
β β β β β m.schmidt@techcorp.ch β β β
β β β β β Role: Administrator β β β
β β β β β Status: Active β’ Primary Contactβ β β
β β β β β Last Active: 2 hours ago β β β
β β β β β [Edit] [Remove] β β β
β β β β ββββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β β ββββββββββββββββββββββββββββββββββββββ β β
β β β β β π€ Peter Weber β β β
β β β β β p.weber@techcorp.ch β β β
β β β β β Role: Manager β β β
β β β β β Status: Active β β β
β β β β β Last Active: 1 day ago β β β
β β β β β [Edit] [Remove] β β β
β β β β ββββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β β ββββββββββββββββββββββββββββββββββββββ β β
β β β β β π€ Thomas Klein β β β
β β β β β t.klein@techcorp.ch β β β
β β β β β Role: Member β β β
β β β β β Status: β³ Invitation Pending β β β
β β β β β Invited: 3 days ago β β β
β β β β β [Resend Invite] [Revoke] β β β
β β β β ββββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β β βββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β β Roles & Permissions β β
β β β β β β
β β β β Administrator: β β
β β β β β’ Full access to all partner features β β
β β β β β’ Manage team members and roles β β
β β β β β’ Access billing and subscription β β
β β β β β’ Configure integrations β β
β β β β β β
β β β β Manager: β β
β β β β β’ Cast votes on topics β β
β β β β β’ Attend partner meetings β β
β β β β β’ View analytics and reports β β
β β β β β’ Manage employee registrations β β
β β β β β β
β β β β Member: β β
β β β β β’ View voting results β β
β β β β β’ View event information β β
β β β β β’ Access content library β β
β β β β β β
β β β β [View Full Permission Matrix β] β β
β β β β β β
β βββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[PRIVACY & DATA TAB]
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ββββ SETTINGS NAVIGATION βββββββ ββββ PRIVACY & DATA MANAGEMENT ββββββββββββ β
β β β β β β
β β β Company Settings β β Data Sharing & Analytics β β
β β β Notification Preferences β β β β
β β β Integration Settings β β β Share employee attendance with BATbernβ β
β β β Billing & Subscription β β (Required for partnership analytics) β β
β β β Team & Access β β β β
β β β Privacy & Data β β β Receive aggregated analytics reports β β
β β β β β Include company in partner directory β β
β β β β β Share voting patterns (anonymized) β β
β β β β β β
β β β β Employee Data Privacy β β
β β β β β Notify employees of company tracking β β
β β β β β Allow employees to opt-out β β
β β β β β Share individual employee activity β β
β β β β β β
β β β β Logo & Branding Usage β β
β β β β β Allow logo on event materials β β
β β β β β Allow logo on website β β
β β β β β Allow logo in newsletters β β
β β β β β Allow logo in press releases β β
β β β β β β
β β β β βββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β β Data Retention & Export β β
β β β β β β
β β β β Your Data: β β
β β β β β’ 145 topic votes β β
β β β β β’ 24 meeting attendances β β
β β β β β’ 1,247 employee event registrations β β
β β β β β’ 89 engagement reports β β
β β β β β β
β β β β [Export All Data (JSON)] [Export PDF] β β
β β β β β β
β β β β Data Retention: 7 years (compliance) β β
β β β β β β
β β β β βββββββββββββββββββββββββββββββββββββ β β
β β β β β β
β β β β Account Management β β
β β β β β β
β β β β β οΈ Danger Zone β β
β β β β β β
β β β β [Request Data Deletion] β β
β β β β [Downgrade Partnership] β β
β β β β [Terminate Partnership] β β
β β β β β β
β β β β [View Privacy Policy] [View Terms] β β
β β β β β β
β βββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Key Interactive Elements
- [β Back to Dashboard] button: Return to Partner Dashboard (if exists) or Topic Voting screen
- [Save] button: Save all changes across tabs (global save)
- Tab navigation: Switch between settings sections (Company, Notifications, Integration, Billing, Team, Privacy)
- [Upload New Logo] button: Opens file picker for company logo upload (PNG/SVG, max 5MB)
- [View Tier Benefits] button: Opens modal showing full tier benefits comparison
- [Upgrade Tier] button: Navigate to tier upgrade workflow
- [Change Primary Contact] button: Opens contact change workflow (requires verification)
- [Test Notifications] button: Send test notification to verify settings
- [Reset to Defaults] button: Reset notification preferences to default settings
- [Reconnect] button: Re-authenticate calendar integration
- [Configure SSO] button: Opens SSO configuration wizard
- [Test Webhook] button: Send test webhook event to verify integration
- [View API Key] button: Reveal full API key (requires password confirmation)
- [Regenerate Secret] button: Generate new webhook secret key
- [View API Documentation] link: Opens API documentation in new tab
- [View All Tier Benefits] link: Navigate to tier comparison page
- [Manage Plan] button: Navigate to subscription management
- [Update Billing Info] button: Edit billing contact and address
- [View All Invoices] link: Navigate to invoice history page
- [+ Invite Team Member] button: Opens team member invitation modal
- [Edit] button: Edit team member role and permissions
- [Resend Invite] button: Resend invitation email to pending member
- [View Full Permission Matrix] link: Opens detailed permissions documentation
- [Export All Data] buttons: Download partner data in JSON or PDF format
- [Request Data Deletion] button: Initiate GDPR data deletion request (requires confirmation)
- [Terminate Partnership] button: End partnership agreement (requires confirmation and reason)
Functional Requirements Met
- FR8: Partner strategic input through notification preferences for voting and meetings
- FR19: Multi-organizer coordination through team access management
- Company Management: Centralized company settings and branding
- Integration: Calendar, SSO, webhooks, API access for external systems
- Billing: Subscription and payment management
- Privacy: GDPR-compliant data management and export
Technical Notes
- Auto-Save: Auto-save changes every 30 seconds when editing (with visual indicator)
- Logo Upload: Direct to S3 with presigned URLs, automatic optimization and resizing
- SSO Integration: Support for SAML 2.0 and OAuth 2.0 providers
- Webhook Security: HMAC-SHA256 signature verification for webhook payloads
- API Rate Limiting: Display API usage and rate limit information
- Calendar Sync: OAuth 2.0 flow for calendar integration with token refresh
- Team Invitations: Unique invitation links with 7-day expiration
- Audit Logging: All settings changes logged with timestamp and user
- Permission Matrix: Role-based access control (RBAC) with granular permissions
API Requirements
Initial Page Load APIs
Note: This wireframe has been updated to use the consolidated Partners API from Story 1.18 (109 β 20 endpoints, 82% reduction).
- GET /api/v1/partners/{partnerId}?include=settings,integrations,subscription,team,privacy
- Consolidates: Former separate calls for company, integrations, subscription, team, and privacy settings
- Query params: include (comma-separated list of setting categories)
- Returns: Complete partner entity with embedded settings objects:
- Company: name, tier, website, industry, logo, primaryContact, partnershipStartDate
- Settings: notification preferences, portal configuration
- Integrations: calendar, SSO, webhooks, API key status
- Subscription: tier, benefits, renewalDate, billing info
- Team: team members with roles and status
- Privacy: data sharing, employee privacy, logo usage settings
- Used for: Populate all settings tabs with single request
- Consolidation Benefit: Include parameter replaces 6 separate API calls with single request, significantly reducing initial page load time
User Action APIs
-
PATCH /api/v1/partners/{partnerId}
- Consolidates: Company information updates via PATCH (partial update)
- Triggered by: User clicks [Save Changes] on Company Settings tab
- Payload:
{ website: "string", industry: "string", primaryContactId: "uuid" } - Returns: Updated partner entity with changed fields
- Used for: Update company information
- Consolidation Benefit: Standard PATCH pattern on main partner resource
-
POST /api/v1/partners/{partnerId}/logo
- Consolidates: Logo upload as sub-resource action
- Triggered by: User clicks [Upload New Logo]
- Payload: Multipart form upload or
{ presignedUrl: true }for presigned URL - Returns: Upload URL (if presigned) OR uploaded logo metadata
- Used for: Upload company logo
- Consolidation Benefit: Logo management nested under partner resource
-
PATCH /api/v1/partners/{partnerId}
- Consolidates: Notification preferences via PATCH on settings section
- Triggered by: User clicks [Save Changes] on Notifications tab
- Payload:
{ settings: { notifications: { channels: {...}, quietHours: {...}, types: {...} } } } - Returns: Updated partner with new notification preferences
- Used for: Update notification preferences
- Consolidation Benefit: Settings updates use same PATCH endpoint as other partner updates
-
POST /api/v1/partners/{partnerId}/notifications/test
- Consolidates: Test notifications as partner sub-resource action
- Triggered by: User clicks [Test Notifications]
- Payload:
{ email: "string", channels: ["email", "inApp"] } - Returns: Test send confirmation
- Used for: Send test notification to verify settings
- Consolidation Benefit: Partner-specific action endpoint
-
PATCH /api/v1/partners/{partnerId}
- Consolidates: Integration updates via PATCH on integrations section
- Triggered by: User connects calendar integration
- Payload:
{ integrations: { calendar: { provider: "outlook", authCode: "string", syncSettings: {...} } } } - Returns: Updated partner with calendar integration status
- Used for: Connect/update calendar integration
- Consolidation Benefit: Integrations managed via partner PATCH endpoint
-
PATCH /api/v1/partners/{partnerId}
- Consolidates: SSO configuration via PATCH
- Triggered by: User configures SSO
- Payload:
{ integrations: { sso: { enabled: true, provider: "azure", metadataUrl: "string", entityId: "string" } } } - Returns: Updated partner with SSO configuration
- Used for: Configure SSO for team members
- Consolidation Benefit: SSO settings use same PATCH pattern
-
PATCH /api/v1/partners/{partnerId}
- Consolidates: Webhook configuration via PATCH
- Triggered by: User updates webhook settings
- Payload:
{ integrations: { webhooks: { url: "https://...", events: [], active: true } } } - Returns: Updated webhook configuration with secret key
- Used for: Configure webhook integration
- Consolidation Benefit: Webhooks managed via PATCH like other integrations
-
POST /api/v1/partners/{partnerId}/integrations/webhooks/regenerate
- Consolidates: Webhook secret regeneration as action endpoint
- Triggered by: User clicks [Regenerate Secret]
- Returns: New secret key
- Used for: Generate new webhook secret for security
- Consolidation Benefit: Action endpoint nested under partner resource
-
POST /api/v1/partners/{partnerId}/integrations/webhooks/test
- Consolidates: Webhook testing as action endpoint
- Triggered by: User clicks [Test Webhook]
- Payload:
{ eventType: "test" } - Returns: Test webhook delivery status
- Used for: Verify webhook integration
- Consolidation Benefit: Test action nested under partner integrations
-
PATCH /api/v1/partners/{partnerId}
- Consolidates: Billing and subscription updates via PATCH
- Triggered by: User updates billing information
- Payload:
{ subscription: { billingContact: {...}, billingAddress: {...}, autoRenewal: boolean } } - Returns: Updated partner with new billing details
- Used for: Update billing settings
- Consolidation Benefit: Subscription managed via partner PATCH endpoint
-
GET /api/v1/partners/{partnerId}/reports?type=invoice
- Consolidates: Invoices available via reports endpoint with type filter
- Triggered by: User clicks [View All Invoices]
- Query params: type=invoice, limit=50, page=1
- Returns: Array of invoice reports (id, date, amount, status, downloadUrl)
- Used for: Display invoice history
- Consolidation Benefit: Invoices accessible via unified reports endpoint
-
POST /api/v1/partners/{partnerId}/team
- Consolidates: Team invitations using standard POST on team sub-resource
- Triggered by: User clicks [+ Invite Team Member]
- Payload:
{ email: "string", role: "administrator|manager|member", message?: "string" } - Returns: Created invitation with unique link
- Used for: Invite new team member
- Consolidation Benefit: Standard RESTful POST pattern for team creation
-
PATCH /api/v1/partners/{partnerId}/team/{userId}
- Consolidates: Role updates via PATCH (partial update)
- Triggered by: User edits team member role
- Payload:
{ role: "administrator|manager|member" } - Returns: Updated team member
- Used for: Change team member role/permissions
- Consolidation Benefit: Standard PATCH for team member updates
-
DELETE /api/v1/partners/{partnerId}/team/{userId}
- Maintains: Standard DELETE pattern
- Triggered by: User removes team member
- Payload:
{ reason?: "string" } - Returns: Removal confirmation
- Used for: Remove team member access
-
PATCH /api/v1/partners/{partnerId}
- Consolidates: Privacy settings via PATCH
- Triggered by: User updates privacy settings
- Payload:
{ privacy: { dataSharing: {...}, employeePrivacy: {...}, logoUsage: {...} } } - Returns: Updated partner with new privacy preferences
- Used for: Update privacy and data sharing preferences
- Consolidation Benefit: Privacy settings use same PATCH pattern as other settings
-
POST /api/v1/partners/{partnerId}/export
- Consolidates: Data export using unified export endpoint
- Triggered by: User clicks [Export All Data]
- Payload:
{ exportType: "all", format: "json|pdf", includeTeam: true, includeActivity: true } - Returns: Export task ID, download URL when ready
- Used for: GDPR data export
- Consolidation Benefit: Same export endpoint used for all partner data exports
-
POST /api/v1/partners/{partnerId}/data-deletion
- Consolidates: Data deletion request as action endpoint
- Triggered by: User clicks [Request Data Deletion]
- Payload:
{ reason: "string", confirmPassword: "string", scope: "partial|complete" } - Returns: Deletion request ID, review status
- Used for: GDPR right to erasure
- Consolidation Benefit: Action endpoint nested under partner resource
-
DELETE /api/v1/partners/{partnerId}
- Consolidates: Partnership termination using standard DELETE
- Triggered by: User clicks [Terminate Partnership]
- Payload (in request body):
{ reason: "string", effectiveDate: "2025-12-31", confirmPassword: "string" } - Returns: Termination confirmation, data retention policy
- Used for: End partnership agreement
- Consolidation Benefit: Standard RESTful DELETE for resource removal
Navigation Map
Primary Navigation Actions
-
β Back button β Navigate to
Topic Voting ScreenorPartner Dashboard(if exists)- Target: Main partner interface
- Context: Return with updated settings
-
Tab navigation β Switch between settings sections
- Target: Same page, different tab content
- Context: Tab state persisted in URL (e.g., #notifications)
-
[View Tier Benefits] link β Opens
Tier Comparison Modal- Target: Modal overlay with tier comparison table
- Context: Current tier highlighted
-
[Upgrade Tier] button β Navigate to
Tier Upgrade Workflow- Target: Subscription upgrade page
- Context: Current tier, available upgrades
-
[View API Documentation] link β Opens external documentation
- Target: New tab with API docs (https://api.batbern.ch/docs)
- Context: API key and authentication info
-
[View All Invoices] link β Navigate to
Invoice History Page- Target: Billing portal with invoice list
- Context: companyId, date range filter
-
[View Full Permission Matrix] link β Opens
Permissions Documentation- Target: Modal or new page with detailed RBAC matrix
- Context: Current userβs role highlighted
Event-Driven Navigation
-
[Save Changes] button β Saves and shows confirmation
- Action: Save settings via API
- Effect: Show success toast, update UI
- Navigation: Stay on page
-
[Invite Team Member] button β Opens
Invite Modal- Target: Modal with invitation form
- Context: Available roles, company info
-
[Configure SSO] button β Opens
SSO Configuration Wizard- Target: Multi-step modal or dedicated page
- Context: Company domain, provider selection
Error States & Redirects
-
Insufficient permissions β Show error modal
- Condition: User not admin trying to access certain tabs
- Action: Display βAdministrator access requiredβ message
- Options: [Contact Administrator] or [Return to Dashboard]
-
Logo upload failure β Show error notification
- Condition: File too large, wrong format, or upload failed
- Action: Display specific error message
- Options: [Try Again] or [Cancel]
-
SSO configuration error β Show validation errors
- Condition: Invalid metadata URL or configuration
- Action: Highlight errors in form, show troubleshooting tips
- Options: [Fix Errors] or [Contact Support]
-
Webhook test failure β Show failure details
- Condition: Webhook endpoint unreachable or returns error
- Action: Display error details (status code, response)
- Options: [View Debug Info] or [Update Webhook URL]
-
Team invitation limit reached β Show upgrade prompt
- Condition: Maximum team members for tier reached
- Action: Display βTeam member limit reachedβ with current usage
- Options: [Upgrade Tier] or [Remove Inactive Members]
-
Data deletion request β Show confirmation modal
- Condition: User initiates data deletion
- Action: Display GDPR warning, require password confirmation
- Effect: Creates request for organizer approval
- Navigation: Email confirmation sent, request tracked
Responsive Design Considerations
Mobile Layout Changes
Stacked Layout (320px - 768px):
- Settings navigation: Horizontal scrollable tabs (not sidebar)
- Forms: Full-width inputs, stacked labels above fields
- Logo preview: Centered with upload button below
- Team member cards: Full-width stacked
- Integration status: Compact cards with icons
- Billing history: Simplified list view (date, amount, download)
- Action buttons: Full-width CTAs
- Tab content: Single column, progressive disclosure
Tablet Layout (768px - 1024px):
- Settings navigation: Collapsible sidebar
- Forms: Two-column layout where appropriate
- Integration cards: 2-column grid
- Team members: 2-column grid
Mobile-Specific Interactions
- Bottom sheet modals: Settings confirmations, team invitations
- Pull-to-refresh: Refresh settings data
- Touch-optimized: 44px minimum touch targets
- Sticky save button: [Save] button sticky at bottom on mobile
- Collapsible sections: Tap to expand/collapse detailed settings
- Swipe navigation: Swipe between settings tabs
- Mobile file picker: Native file picker for logo upload
- Responsive tables: Horizontal scroll for invoice history on mobile
Accessibility Notes
- Keyboard Navigation: Full tab navigation through all form fields and buttons
- ARIA Labels:
aria-label="Partner settings navigation"on tab sidebararia-label="Upload company logo"on upload buttonrole="tabpanel"on settings content areasaria-labelledbypointing to tab headers
- Screen Reader Announcements:
- Live region (
aria-live="polite") for save confirmations - Status updates announced: βSettings saved successfullyβ
- Error messages associated with form fields
- Live region (
- Color Contrast: WCAG 2.1 AA compliance
- Tier badges: Sufficient contrast with background
- Status indicators: Color + icon + text
- Focus Indicators: 2px solid outline on focused elements
- Form Labels: All inputs properly labeled with
<label>elements - Error Messaging: Errors associated with fields using
aria-describedby - Semantic HTML: Proper heading hierarchy, form structure
State Management
Local Component State
activeTab: Current settings tab (βcompanyβ, βnotificationsβ, βintegrationβ, βbillingβ, βteamβ, βprivacyβ)isDirty: Whether form has unsaved changesformData: Current form values for each tabvalidationErrors: Field-level validation errorsuploadProgress: Logo upload progress percentage
Global State (Zustand Store)
partnerSettings: Complete settings object from APIcompanyInfo: Company details and partnership statusteamMembers: Array of team member objectsintegrationStatus: Status of all integrations (calendar, SSO, webhooks)
Server State (React Query)
useCompanySettings(companyId): Company settings with 5-minute cacheuseNotificationPreferences(): Notification preferences with 10-minute cacheuseIntegrations(companyId): Integration status with 2-minute cacheuseSubscription(companyId): Billing and subscription with 15-minute cacheuseTeamMembers(companyId): Team members with 1-minute refetch
Auto-Save Behavior
- Auto-Save Trigger: Debounced auto-save after 30 seconds of inactivity
- Visual Indicator: βSavingβ¦β spinner, then βAll changes savedβ checkmark
- Conflict Resolution: Alert if settings changed by another admin
- Draft State: Unsaved changes survive browser refresh (localStorage)
Form Validation Rules
Company Settings Tab
- Company Name: Display only (cannot edit, contact support)
- Industry: Required, dropdown selection
- Website: Optional, must be valid URL format
- Logo: Max 5MB, PNG/SVG only, transparent background recommended
- Primary Contact: Required, must be existing team member
Notification Preferences Tab
- Quiet Hours:
startTime<endTime, valid 24-hour format - Timezone: Required if quiet hours enabled
- Email Digest: At least one notification type must be enabled
Integration Settings Tab
- Webhook URL: Required if webhooks enabled, must be valid HTTPS URL
- SSO Provider: Required metadata URL for SAML configuration
- API Key: Cannot be empty if regenerating
Billing & Subscription Tab
- Billing Contact: Valid email required
- Billing Address: Complete address required for invoicing
Team & Access Tab
- Invite Email: Must be valid email, cannot be duplicate
- Role: Required selection from available roles
- At least one Administrator: Cannot remove last admin
Privacy & Data Tab
- Data Deletion Request: Password confirmation required
- Termination Request: Reason required (min 50 characters)
Edge Cases & Error Handling
-
Empty State (First-time Setup):
- Show setup wizard for first-time partners
- Guide through essential settings (logo, primary contact, notifications)
-
Loading State:
- Skeleton screens for each tab content
- Loading spinner for save operations
- Disable form while loading
-
Error State (API Failure):
- Show error banner: βUnable to save settings. Please try again.β
- Preserve form data, provide [Retry] button
- Auto-retry with exponential backoff
-
Concurrent Edit Conflict:
- Detect if another admin changed settings
- Show warning: βSettings were updated by [Admin Name]. Reload to see latest?β
- Options: [Reload] (discard changes) or [Overwrite] (keep local changes)
-
Logo Upload Failure:
- Show specific error: File too large, invalid format, upload timeout
- Provide [Try Again] or [Choose Different File]
- Fall back to existing logo on failure
-
SSO Configuration Error:
- Validate metadata URL before saving
- Show specific SAML errors (invalid XML, missing endpoints)
- Provide [Test SSO] button to verify before enabling
-
Webhook Delivery Failure:
- Log failed webhook attempts with retry count
- Show warning after 3 consecutive failures
- Suggest: βCheck endpoint availability or update webhook URLβ
-
Team Invitation Already Sent:
- Detect duplicate email invitation
- Show: βInvitation already sent to this email addressβ
- Options: [Resend Invitation] or [Cancel]
-
Role Change Validation:
- Prevent removing last administrator
- Show: βCannot remove last administrator. Assign another admin first.β
- Suggest promoting another member to admin
-
Subscription Tier Limitation:
- Show tier limits when reached (e.g., max team members for tier)
- Suggest: [Upgrade to Next Tier] with benefits comparison
- Display current usage vs. tier limits
-
Data Export Large Size:
- Show warning if export >100MB
- Offer: βLarge export detected. Generate in background and email download link?β
- Progress indicator for long-running exports
-
Partnership Termination Request:
- Require detailed reason and password confirmation
- Show impact: βThis will disable access for all team membersβ
- Cooling-off period: 30 days before final termination
- Provide cancellation option during cooling-off
Change Log
| Date | Version | Description | Author |
|---|---|---|---|
| 2025-10-04 | 1.0 | Initial wireframe creation for Partner Settings Screen | ux-expert |
Review Notes
Stakeholder Feedback
To be added during review
Design Iterations
To be documented as design evolves
Open Questions
-
SSO Multi-Provider Support: Should we support multiple SSO providers simultaneously?
- Current design: Single provider per partner
- Alternative: Multiple providers with priority/fallback
- Decision needed from security team
-
API Rate Limiting: What rate limits should apply to partner API access?
- Consideration: Tier-based rate limits (Bronze: 1000/hour, Gold: 5000/hour, Premium: unlimited)
- Technical feasibility assessment needed
-
Team Member Limits: Should there be hard limits on team size per tier?
- Current design: Soft limits with upgrade prompts
- Alternative: Hard blocks preventing addition
- Business rule clarification required
-
Webhook Retry Policy: How many times should failed webhooks retry?
- Recommendation: 3 retries with exponential backoff (30s, 5min, 1hour)
- After 3 failures, disable webhook and notify admin
- Engineering team confirmation needed
-
Data Deletion Timeline: How long should data deletion requests take?
- GDPR requirement: 30 days maximum
- Current design: 7-day review period + 23-day processing
- Legal team review required
-
Billing Currency: Support multiple currencies beyond CHF?
- Current design: CHF only
- Alternative: EUR, USD support with currency conversion
- Finance team decision needed