--- openapi: post /svc.v1.Msg/RegisterService title: Register Decentralized Service description: Create a new service with domain binding and UCAN permissions og:title: Service Registration --- Services are the foundation of decentralized applications in Sonr, providing trusted interaction points through verified domains. ## Prerequisites Before registering a service: 1. **Domain Verified**: Complete domain verification process 2. **Service ID Ready**: Choose unique identifier (lowercase, alphanumeric, hyphens) 3. **Permissions Defined**: Plan required UCAN capabilities 4. **Registration Fee**: Have sufficient funds for fee ## Service Architecture ### Service Identity ``` Service ID: my-app Domain: example.com Full Identity: my-app@example.com ``` ### Permission Model Services request permissions users must grant: - **dwn:read**: Read user's DWN data - **dwn:write**: Write to user's DWN - **identity:read**: Access identity information - **vault:access**: Interact with user's vault - **credentials:verify**: Verify user credentials ## Common Permission Patterns ### Social Application ```json { "requestedPermissions": [ "dwn:read", "dwn:write", "identity:read" ] } ``` ### Financial Service ```json { "requestedPermissions": [ "vault:access", "credentials:verify", "identity:read" ] } ``` ### Data Analytics ```json { "requestedPermissions": [ "dwn:read", "identity:read" ] } ``` Request only necessary permissions. Users are more likely to grant minimal permission sets. ## UCAN Integration ### Root Capability Upon registration, service receives: - **Root Capability CID**: IPFS identifier for UCAN root - **Authorization Chain**: Build delegations from root - **Permission Scope**: Act within granted permissions ### Optional Pre-authorization ```json { "ucanDelegationChain": "eyJhbGciOiJFZERTQSI..." } ``` Provide existing UCAN chain for pre-authorized capabilities. ## Service Lifecycle ### Registration 1. Submit registration with domain and permissions 2. System validates domain ownership 3. Service ID uniqueness checked 4. Root capability generated 5. Service activated and discoverable ### User Interaction Flow 1. User discovers service by domain/ID 2. Service requests permissions 3. User reviews and grants via wallet 4. Service receives UCAN capability 5. Service acts on user's behalf ## Best Practices ### Service ID Selection - **Descriptive**: `chat-app`, `vault-manager` - **Consistent**: Match your brand/product - **Permanent**: Cannot be changed after registration ### Permission Planning - **Minimal Scope**: Only what's needed - **Clear Purpose**: Document why each permission - **Future Growth**: Design for expansion Service registration is permanent. Choose your service ID carefully as it cannot be changed. ## Post-Registration After successful registration: ```bash # Query your service snrd query svc service my-app # View services by domain snrd query svc services-by-domain example.com # Check root capability ipfs cat ``` Services become immediately discoverable after registration. Ensure your application is ready to handle user interactions.