syntax = "proto3"; package did.v1; import "cosmos/msg/v1/msg.proto"; import "did/v1/enums.proto"; import "did/v1/genesis.proto"; import "gogoproto/gogo.proto"; import "cosmos_proto/cosmos.proto"; import "did/v1/genesis.proto"; import "did/v1/models.proto"; import "gogoproto/gogo.proto"; option go_package = "github.com/onsonr/sonr/x/did/types"; // Msg defines the Msg service. service Msg { option (cosmos.msg.v1.service) = true; // UpdateParams defines a governance operation for updating the parameters. // // Since: cosmos-sdk 0.47 rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); // AuthorizeService asserts the given controller is the owner of the given address. rpc AuthorizeService(MsgAuthorizeService) returns (MsgAuthorizeServiceResponse); // AllocateVault assembles a sqlite3 database in a local directory and returns the CID of the database. // this operation is called by services initiating a controller registration. rpc AllocateVault(MsgAllocateVault) returns (MsgAllocateVaultResponse); // SyncController synchronizes the controller with the Vault Motr DWN WASM Wallet. rpc SyncController(MsgSyncController) returns (MsgSyncControllerResponse); // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. rpc RegisterController(MsgRegisterController) returns (MsgRegisterControllerResponse); // RegisterService initializes a Service with a given permission scope and URI. The domain must have a valid TXT record containing the public key. rpc RegisterService(MsgRegisterService) returns (MsgRegisterServiceResponse); // Authenticate asserts the given controller is the owner of the given address. rpc Authenticate(MsgAuthenticate) returns (MsgAuthenticateResponse); // ProveWitness is an operation to prove the controller has a valid property using ZK Accumulators. rpc ProveWitness(MsgProveWitness) returns (MsgProveWitnessResponse); // SyncVault synchronizes the controller with the Vault Motr DWN WASM Wallet. rpc SyncVault(MsgSyncVault) returns (MsgSyncVaultResponse); // RegisterController initializes a controller with the given authentication set, address, cid, publicKey, and user-defined alias. rpc RegisterController(MsgRegisterController) returns (MsgRegisterControllerResponse); // RegisterService initializes a Service with a given permission scope and URI. The domain must have a valid TXT record containing the public key. rpc RegisterService(MsgRegisterService) returns (MsgRegisterServiceResponse); } // MsgUpdateParams is the Msg/UpdateParams request type. // // Since: cosmos-sdk 0.47 message MsgUpdateParams { option (cosmos.msg.v1.signer) = "authority"; // authority is the address of the governance account. string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // params defines the parameters to update. Params params = 2 [(gogoproto.nullable) = false]; // token is the macron token to authenticate the operation. string token = 3; } // MsgUpdateParamsResponse defines the response structure for executing a // MsgUpdateParams message. // // Since: cosmos-sdk 0.47 message MsgUpdateParamsResponse {} // MsgAllocateVault is the message type for the AllocateVault RPC. message MsgAllocateVault { option (cosmos.msg.v1.signer) = "authority"; // authority is the address of the service account. string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // subject is a unique human-defined identifier to associate with the vault. string subject = 2; // origin is the origin of the request in wildcard form. string origin = 3; } // MsgAllocateVaultResponse is the response type for the AllocateVault RPC. message MsgAllocateVaultResponse { // CID is the content identifier of the vault. string cid = 1; // ExpiryBlock is the block number at which the vault will expire. int64 expiry_block = 2; // RegistrationOptions is a json string of the PublicKeyCredentialCreationOptions for WebAuthn string registration_options = 3; // IsLocalhost is a flag to indicate if the vault is localhost bool localhost = 4; } // MsgProveWitness is the message type for the ProveWitness RPC. message MsgProveWitness { option (cosmos.msg.v1.signer) = "authority"; // MsgAuthenticate is the message type for the Authenticate RPC. message MsgAuthenticate { option (cosmos.msg.v1.signer) = "authority"; // authority is the address of the governance account. string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // property is key to prove. string property = 2; // Witness Value is the bytes of the witness. bytes witness = 3; // token is the macron token to authenticate the operation. string token = 4; } // MsgProveWitnessResponse is the response type for the ProveWitness RPC. message MsgProveWitnessResponse { bool success = 1; string property = 2; } // MsgSyncController is the message type for the SyncController RPC. message MsgSyncController { option (cosmos.msg.v1.signer) = "controller"; // controller is the address of the controller to sync. string controller = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // Token is the public token to authenticate the operation. string token = 3; } // MsgSyncControllerResponse is the response type for the SyncController RPC. message MsgSyncControllerResponse { bool success = 1; } // MsgRegisterController is the message type for the InitializeController RPC. message MsgRegisterController { // MsgAuthenticateResponse is the response type for the Authenticate RPC. message MsgAuthenticateResponse {} // MsgProveWitness is the message type for the ProveWitness RPC. message MsgProveWitness { option (cosmos.msg.v1.signer) = "authority"; // authority is the address of the governance account. string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // Assertions is the list of assertions to initialize the controller with. string cid = 2; // Origin is the origin of the request in wildcard form. string origin = 3; // Credential is the list of keyshares to initialize the controller with. string credential_creation_response = 4; // property is key to prove. string property = 2; // Witness Value is the bytes of the witness. bytes witness = 3; } // MsgProveWitnessResponse is the response type for the ProveWitness RPC. message MsgProveWitnessResponse { bool success = 1; string property = 2; } // MsgSyncVault is the message type for the SyncVault RPC. message MsgSyncVault { option (cosmos.msg.v1.signer) = "controller"; // controller is the address of the controller to sync. string controller = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // cid is the IPFS content identifier. string cid = 2; // Macroon is the public token to authenticate the operation. bytes macron = 3; } // MsgSyncVaultResponse is the response type for the SyncVault RPC. message MsgSyncVaultResponse { bool success = 1; } // MsgRegisterController is the message type for the InitializeController RPC. message MsgRegisterController { option (cosmos.msg.v1.signer) = "authority"; // authority is the address of the governance account. string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // Assertions is the list of assertions to initialize the controller with. repeated bytes assertions = 2; // Keyshares is the list of keyshares to initialize the controller with. repeated bytes keyshares = 3; // Verifications is the list of verifications to initialize the controller with. repeated bytes verifications = 4; } // MsgRegisterControllerResponse is the response type for the InitializeController RPC. message MsgRegisterControllerResponse { // Success returns true if the specified cid is valid and not already encrypted. bool success = 1; // Controller is the address of the initialized controller. string controller = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // Accounts are a Address Map and Supported coin Denoms for the controller map accounts = 3; } // MsgAuthorizeService is the message type for the AuthorizeService RPC. message MsgAuthorizeService { option (cosmos.msg.v1.signer) = "controller"; // Controller is the address of the controller to authenticate. string controller = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // Origin is the origin of the request in wildcard form. string origin = 2; // Permissions is the scope of the service. Permissions scopes = 3; // token is the macron token to authenticate the operation. string token = 4; } // MsgAuthorizeServiceResponse is the response type for the AuthorizeService RPC. message MsgAuthorizeServiceResponse { bool success = 1; string token = 2; // Controller is the address of the initialized controller. string controller = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // Accounts are a Address Map and Supported coin Denoms for the controller map accounts = 2; } // MsgRegisterService is the message type for the RegisterService RPC. message MsgRegisterService { option (cosmos.msg.v1.signer) = "controller"; // authority is the address of the governance account. string controller = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // origin is the origin of the request in wildcard form. Requires valid TXT record in DNS. Service service = 2; // token is the macron token to authenticate the operation. string token = 3; option (cosmos.msg.v1.signer) = "authority"; // authority is the address of the governance account. string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; // origin is the origin of the request in wildcard form. string origin_uri = 2; // PermissionScope is the scope of the service. repeated PermissionScope scopes = 3; } // MsgRegisterServiceResponse is the response type for the RegisterService RPC. message MsgRegisterServiceResponse { bool success = 1; string did = 2; }