Advanced Server-Side Filtering

The 7G Registry Platform implements sophisticated server-side filtering using typed filter parameters with dot operators, enabling precise queries across investor entities, transactions, and compliance data without complex client-side processing.

🎯

Type-Safe Filtering

Strongly typed filter parameters ensure query validity and optimal performance.

Server Optimization

Database-level filtering reduces bandwidth and processing overhead.

🔍

Complex Queries

Combine multiple typed filters for comprehensive data retrieval.

The 7G Filter Type System

🔧

Three Core Filter Types

Every filterable parameter in the 7G API uses one of three strongly typed filter classes that determine available operators and validation rules.

📋

Complete Filter Type Reference

The definitive guide to all filter types and their operators

FilterOfInt32 / FilterOfInt64

NUMERIC

Supported Operators

.Equal Exact match (default, can be omitted)
.NotEqual Exclude specific value
.In Match any value in comma-separated list
.NotIn Exclude any value in comma-separated list
.GreaterThan Values greater than specified
.LessThan Values less than specified
.GreaterThanOrEqual Values greater than or equal to
.LessThanOrEqual Values less than or equal to

Common Parameters

  • BizEntityID - Entity identifiers (FilterOfInt32)
  • BizEntityTypeID - Entity type classification (FilterOfInt32)
  • AccountID - Account identifiers (FilterOfInt32)
  • PersonID - Person identifiers (FilterOfInt32)
  • BizTransactionID - Transaction identifiers (FilterOfInt64)
  • BizEventID - Event identifiers (FilterOfInt64)

Examples

BizEntityTypeID=4 # SMSF entities (default .Equal) BizEntityTypeID.In=1,2,4 # Individual, Company, SMSF BizEntityTypeID.NotIn=3,5 # Exclude Trust and Partnership AccountID.GreaterThan=1000 # Accounts after ID 1000 BizTransactionID.NotEqual=0 # Exclude cancelled transactions

StringFilter

TEXT

Supported Operators

Includes ALL FilterOfInt32 operators PLUS:

.Contains Case-insensitive substring match
.BeginsWith Case-insensitive prefix match (optimized)
.EndsWith Case-insensitive suffix match
.Equal, .NotEqual, .In, .NotIn Exact string matching
.GreaterThan, .LessThan Alphabetical comparison

Common Parameters

  • AccountNumber - Account number patterns
  • ExternalBizEntityId - External entity references
  • ExternalAccountId - External account references
  • ExternalPersonId - External person references
  • Name - Entity names (where supported)

Examples

AccountNumber.Contains=SMSF # Accounts with SMSF in number ExternalBizEntityId.BeginsWith=EXT- # External IDs with prefix ExternalAccountId.EndsWith=-2024 # External IDs ending with year AccountNumber.In=ACC-001,ACC-002 # Specific account numbers ExternalBizEntityId.NotIn=OLD-001,OLD-002 # Exclude legacy IDs

FilterOfDateTime / FilterOfDateOnly

DATE/TIME

Supported Operators

.Equal Exact date/time match
.NotEqual Exclude specific date/time
.In Match any date in list
.NotIn Exclude any date in list
.GreaterThan After specified date/time
.LessThan Before specified date/time
.GreaterThanOrEqual On or after date/time
.LessThanOrEqual On or before date/time

Common Parameters

  • CreatedDate - Entity creation timestamp (FilterOfDateTime)
  • UpdatedDate - Last entity update (FilterOfDateTime)
  • UpdatedDateFull - Includes related entity changes (FilterOfDateTime)
  • TransactionDate - Transaction date only (FilterOfDateOnly)

Format Requirements

FilterOfDateTime: ISO 8601 format YYYY-MM-DDTHH:MM:SSZ
FilterOfDateOnly: Date only format YYYY-MM-DD

Examples

CreatedDate.GreaterThan=2024-01-01T00:00:00Z # After Jan 1, 2024 UpdatedDateFull.GreaterThan=2024-12-01T00:00:00Z # Recent changes TransactionDate.LessThanOrEqual=2024-12-31 # Year-end cutoff CreatedDate.In=2024-01-01T00:00:00Z,2024-02-01T00:00:00Z TransactionDate.NotIn=2024-01-01,2024-12-25 # Exclude holidays
💡

Pro Tip: UpdatedDateFull for Comprehensive Change Tracking

UpdatedDateFull is a special FilterOfDateTime parameter that tracks changes not just to the primary entity, but also to all related entities (addresses, communications, payment details). Use this for complete change detection in compliance reporting and data synchronization scenarios.

🔗

Endpoints with Filter Support

Complete list of GET endpoints and their filterable parameters

GET /BizEntity

6 filters

FilterOfInt32 Parameters

  • BizEntityTypeID
  • AccountID

StringFilter Parameters

  • AccountNumber
  • ExternalAccountId

FilterOfDateTime Parameters

  • CreatedDate
  • UpdatedDate

GET /BizEntity/Account/Holdings

5 filters

FilterOfInt32 Parameters

  • AccountID
  • InvestmentID

StringFilter Parameters

  • ExternalAccountId
  • AccountNumber
  • ExternalInvestmentId

GET /BizTransaction

9 filters

FilterOfInt64 Parameters

  • BizTransactionID

FilterOfInt32 Parameters

  • InvestmentID
  • BizTransactionTypeID
  • AccountID

StringFilter Parameters

  • AccountNumber
  • ExternalInvestmentId
  • ExternalBizTransactionId
  • ExternalAccountId

FilterOfDateOnly Parameters

  • TransactionDate

GET /BizEvent

5 filters

FilterOfInt64 Parameters

  • BizEventID

FilterOfInt32 Parameters

  • BizEventTypeID
  • AccountID

StringFilter Parameters

  • AccountNumber
  • ExternalAccountId

Other Endpoints

Pagination

Many endpoints support pagination parameters (PageNumber, PageSize). Read Pagination & Limits to learn more.

🎓

Advanced Query Patterns

Real-world examples for Australian financial services

json
# Comprehensive SMSF Entity Analysis
# All SMSF entities updated in the last quarter with active accounts
GET /BizEntity?BizEntityTypeID=4&UpdatedDateFull.GreaterThan=2024-10-01T00:00:00Z&BizEntityStatusID=1&PageSize=500&PageNumber=1

# SMSF entities with specific account number patterns
GET /BizEntity?BizEntityTypeID=4&AccountNumber.BeginsWith=7G-SMSF-&PageSize=100&PageNumber=1

# Recently created SMSFs with external references
GET /BizEntity?BizEntityTypeID=4&CreatedDate.GreaterThan=2024-01-01T00:00:00Z&ExternalBizEntityId.BeginsWith=SMSF-&PageSize=250&PageNumber=1
🚀

Performance & Best Practices

Optimize queries for production workloads

Performance Guidelines

💡

Critical Performance Note

.Contains performs full text scans without index support. For prefix matching, use .BeginsWith for 10-100x faster query performance with full index optimization.

  • Use Native IDs: Prefer BizEntityID over ExternalBizEntityId for fastest queries
  • Filter Early: Apply most restrictive filters first to reduce dataset size
  • BeginsWith > Contains: Prefix matching is more efficient than substring search
  • Combine with Pagination: Always use PageSize (max 1,000) to limit results
  • Date Boundaries: Use bounded date ranges instead of open-ended queries
  • Index-Friendly: Equal, In, and range operators utilize database indexes

Validation Rules

  • Type Matching: Operators must match the parameter's filter type
  • Date Formats: ISO 8601 for FilterOfDateTime, YYYY-MM-DD for FilterOfDateOnly
  • Case Sensitivity: String operators are case-insensitive
  • List Format: .In and .NotIn operators use comma-separated values without spaces
  • Default Operator: .Equal is assumed if no operator is specified
  • Error Handling: Invalid operators return 400 Bad Request with details

Operator Performance Matrix

Operator Performance Index Usage Best For
.Equal Fastest Full index Direct lookups, primary keys
.In Fastest Full index Multiple specific values
.NotIn Good Partial index Exclude multiple specific values
.BeginsWith Fast Prefix index Code/ID prefixes
.GreaterThan, .LessThan Good Range scan Date ranges, numeric ranges
.NotEqual Moderate Partial Exclusions with other filters
.Contains Slower Limited Text search with other filters
.EndsWith Slower None Suffix matching (use sparingly)

Quick Reference

Filter Type Summary

Filter Type Data Types Unique Operators
FilterOfInt32 integer (32-bit) 8 comparison operators
FilterOfInt64 integer (64-bit) 8 comparison operators
StringFilter string (max 50) 8 + 3 text operators
FilterOfDateTime ISO 8601 datetime 8 temporal operators
FilterOfDateOnly YYYY-MM-DD date 8 temporal operators

Critical Implementation Notes

🔑 Parameter Case:
Query parameters use PascalCase (BizEntityID), JSON uses camelCase (bizEntityID)
📊 Pagination:
Always include PageSize for large datasets (default: 25, max: 1000)
🔄 AND Logic:
Multiple filters are combined with AND logic, not OR
⚠️ Validation:
Invalid filter types or operators return 400 Bad Request