Skip to content

Conversation

@martindejonge1981-collab
Copy link

@martindejonge1981-collab martindejonge1981-collab commented Jan 26, 2026

Summary

This PR extends TAIP-15 (Agent Connection Protocol) with explicit connectionTypes field for all connections and adds support for trust connections (DDQ exchange, mutual trust, whitelisting).

Breaking Changes

Added REQUIRED connectionTypes field

All Connect messages now REQUIRE a connectionTypes array specifying connection purpose:

  • ["transaction"] - For transactional connections (existing use case)
  • ["ddq-access"] - For DDQ document exchange
  • ["mutual-trust"] - For bilateral trust relationships
  • ["whitelist"] - For straight-through processing

Why This Breaking Change?

  1. Explicit is better than implicit - Type should be declared, not inferred
  2. Better validation - Clear error messages and schema support
  3. Standards alignment - Follows JSON-LD, OpenAPI, GraphQL patterns
  4. Easier to extend - New types can be added without field detection logic
  5. Self-documenting - Single field declares connection purpose

Migration

Old (TAIP-15 before this update):

{
  "requester": {...},
  "principal": {...},
  "agents": [...],
  "constraints": {...}
}

New (add one field):

{
  "connectionTypes": ["transaction"],  // Add this line
  "requester": {...},
  "principal": {...},
  "agents": [...],
  "constraints": {...}
}

New Features: Trust Connections

VASPs can now establish institutional trust relationships:

Connection Types

  1. transaction - Transactional connections (existing, now explicit)

    • Requires: requester, principal, agents, constraints
    • Use: B2B integrations, recurring billing, AI agents
  2. ddq-access - DDQ document exchange

    • No requester/principal/agents/constraints needed
    • Use: Compliance verification, initial due diligence
  3. mutual-trust - Bilateral trust relationships

    • Reduces verification requirements
    • Use: Established business relationships
  4. whitelist - Straight-through processing

    • Pre-approved automatic transaction processing
    • Use: High-volume trusted counterparties

Typical Trust Progression

ddq-access → mutual-trust → whitelist

TAIP-4 Extensions (Non-Breaking)

Added optional fields to Authorize message for trust connection approval:

  • approvedTypes: Array of approved connection types
  • ddqDocument: DDQ document reference object
  • trustLevel: Trust status indicator

These fields are only used when responding to trust-based Connect messages.

Files Modified

  • TAIPs/taip-15.md - Major update with breaking changes
  • TAIPs/taip-4.md - Added connection-specific fields
  • messages.md - Updated Connect and Authorize tables
  • CHANGELOG.md - Documented breaking changes
  • TAIPs/taip-20.md - Deleted this draft (merged into TAIP-15)

Validation Rules

// connectionTypes is REQUIRED
if (!connectionTypes || connectionTypes.length === 0) {
  throw new Error("connectionTypes is required");
}

// Transactional connections need full structure
if (connectionTypes.includes("transaction")) {
  if (!requester || !principal || !agents || !constraints) {
    throw new Error("Transactional connections require requester, principal, agents, and constraints");
  }
}

// Trust connections should be agent to agent
if (connectionTypes.some(t => ["ddq-access", "mutual-trust", "whitelist"].includes(t))) {
  if (requester || principal || agents || constraints) {
    console.warn("Trust connections should not include transactional fields");
  }
}

Discussion Points

  • Use explicit connectionTypes for all connections (decided: YES)
  • Should DDQ documents support DIDComm attachments?

Implementation Impact

Existing TAIP-15 implementations must:

  1. Add connectionTypes: ["transaction"] to all Connect messages
  2. Update validation to check connectionTypes field
  3. No other changes needed

New trust connection implementations:

  1. Use appropriate connectionTypes values
  2. Omit requester/principal/agents/constraints
  3. Handle new Authorize response fields

Timeline

TAIP-15 is currently in "Review" status, making this the appropriate time for breaking changes before reaching "Final" status.

Checklist

  • TAIP-15 updated with explicit connectionTypes
  • TAIP-4 extensions documented
  • messages.md updated
  • CHANGELOG updated with breaking changes
  • TAIP-20 draft removed (merged into TAIP-15)
  • Test vectors updated (will add based on feedback)

This TAIP introduces a Connect message type for establishing trusted connections between Entities.
Key features:
   - New Connect message with establish/update actions
   - Reuses Authorize (approve), Reject (decline), Cancel (terminate)
   - Supports DDQ exchange, mutual trust, and whitelisting
   - Fully backward compatible with existing TAP implementations
Add three optional fields to Authorize message for connection approval:
   - approvedTypes: Array of approved connection types
   - ddqDocument: DDQ document reference object
   - trustLevel: Trust status indicator
   
These fields are only used when responding to Connect messages (TAIP-20).
Add test vector: valid Authorize connection approval
Remove TAIP-20 (merged into TAIP-15 with explicit connectionTypes)
BREAKING CHANGES:
   - Added REQUIRED connectionTypes field for all connections
   - Transactional connections now explicitly declare ["transaction"]
   - Added trust connection types: ddq-access, mutual-trust, whitelist
   - Extended Authorize with trust-specific response fields
   
   Design rationale:
   - Explicit type declaration follows industry standards
   - Better validation and error messages
   - Self-documenting and easier to extend
   - Aligns with JSON-LD, OpenAPI, GraphQL patterns
   
   Migration: Add connectionTypes: ["transaction"] to existing Connect messages
   - Added connectionTypes as REQUIRED field for all connections
   - Clarified field requirements based on connection type
   - Added connection types table for reference
   - Updated documentation to reflect explicit type discrimination
updated examples
@martindejonge1981-collab martindejonge1981-collab changed the title Taip 20 trusted connections TAIP-15: Add explicit connectionTypes and trust connection support Jan 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant