--- openapi: get /svc/v1/services/domain/{domain} title: Query Services by Domain description: Discover all services registered under a specific domain og:title: Domain Service Discovery --- Domain-based discovery helps users find and trust services through verified domain ownership. ## Discovery Patterns ### Find Services by Domain ```bash # Query services for a domain snrd query svc services-by-domain example.com # Parse service IDs snrd query svc services-by-domain example.com -o json | jq -r '.services[].id' ``` ### Trust Verification Domain binding provides trust through: - **DNS Ownership**: Proven control of domain - **Brand Association**: Services linked to known domains - **Discovery Path**: Find services via familiar domains ## Integration Scenarios ### Service Discovery Flow ```javascript async function discoverServices(domain) { // 1. Query services by domain const services = await queryServicesByDomain(domain); // 2. Filter active services const active = services.filter(s => s.status === 'ACTIVE' ); // 3. Categorize by permissions return { dataServices: active.filter(s => s.permissions.includes('dwn:read') ), vaultServices: active.filter(s => s.permissions.includes('vault:access') ), identityServices: active.filter(s => s.permissions.includes('identity:read') ) }; } ``` ### Multi-Service Domains ```json { "services": [ { "id": "chat", "domain": "example.com", "permissions": ["dwn:read", "dwn:write"] }, { "id": "storage", "domain": "example.com", "permissions": ["dwn:write", "vault:access"] }, { "id": "auth", "domain": "example.com", "permissions": ["identity:read", "credentials:verify"] } ] } ``` ## Domain Organization ### Service Naming Conventions #### By Function - `auth@example.com` - Authentication service - `storage@example.com` - Storage service - `api@example.com` - API gateway #### By Product - `chat@social.example.com` - Chat application - `vault@secure.example.com` - Vault manager - `wallet@finance.example.com` - Wallet service Use subdomains to organize services by category or security level. ## Trust Establishment ### Verify Domain Services ```bash # Check domain ownership DOMAIN_STATUS=$(snrd query svc domain example.com -o json) # If verified, query services if [ $(echo $DOMAIN_STATUS | jq -r '.status') = "VERIFIED" ]; then snrd query svc services-by-domain example.com fi ``` ### Service Validation ```javascript // Validate service belongs to expected domain function validateService(service, expectedDomain) { return service.domain === expectedDomain && service.status === 'ACTIVE'; } // Check all services for domain async function auditDomain(domain) { const services = await queryServicesByDomain(domain); return services.map(s => ({ id: s.id, valid: validateService(s, domain), permissions: s.permissions })); } ``` ## Common Patterns ### Enterprise Domains Multiple services under corporate domain: - `api@company.com` - Public API - `admin@company.com` - Admin panel - `user@company.com` - User portal ### Development Domains Test services on subdomains: - `test@dev.example.com` - Test service - `staging@dev.example.com` - Staging service - `prod@example.com` - Production service Always verify domain ownership status before trusting services bound to that domain. ## Usage Analytics ### Service Count by Domain ```bash # Count services per domain snrd query svc services-by-domain example.com -o json | jq '.services | length' ``` ### Permission Summary ```bash # Aggregate permissions across domain services snrd query svc services-by-domain example.com -o json | jq '[.services[].permissions] | flatten | unique' ``` Domains can host multiple services, each with unique IDs and permission sets. Plan your service architecture accordingly.