2024-09-26 18:01:49 -04:00
syntax = "proto3" ;
2024-11-26 22:05:50 -05:00
package svc.v1 ;
2024-09-26 18:01:49 -04:00
import "google/api/annotations.proto" ;
2024-11-26 22:05:50 -05:00
import "svc/v1/genesis.proto" ;
2025-10-03 14:45:52 -04:00
import "svc/v1/state.proto" ;
2024-09-26 18:01:49 -04:00
2025-10-03 14:45:52 -04:00
option go_package = "github.com/sonr-io/sonr/x/svc/types" ;
2024-09-26 18:01:49 -04:00
// Query provides defines the gRPC querier service.
service Query {
// Params queries all parameters of the module.
rpc Params ( QueryParamsRequest ) returns ( QueryParamsResponse ) {
2024-11-26 22:05:50 -05:00
option ( google.api.http ) . get = "/svc/v1/params" ;
2024-09-26 18:01:49 -04:00
}
2024-12-24 10:38:17 -05:00
2025-10-03 14:45:52 -04:00
// DomainVerification queries domain verification status by domain name.
//
// {{.MethodDescriptorProto.Name}} is a call with the method(s) {{$first := true}}{{range .Bindings}}{{if $first}}{{$first = false}}{{else}}, {{end}}{{.HTTPMethod}}{{end}} within the "{{.Service.Name}}" service.
// It takes in "{{.RequestType.Name}}" and returns a "{{.ResponseType.Name}}".
//
// {{import "svc_docs.md"}}
rpc DomainVerification ( QueryDomainVerificationRequest ) returns ( QueryDomainVerificationResponse ) {
option ( google.api.http ) . get = "/svc/v1/domain/{domain}" ;
2024-12-24 10:38:17 -05:00
}
2025-10-03 14:45:52 -04:00
// Service queries service information by service ID.
rpc Service ( QueryServiceRequest ) returns ( QueryServiceResponse ) {
option ( google.api.http ) . get = "/svc/v1/service/{service_id}" ;
}
// ServicesByOwner queries all services owned by a specific address.
rpc ServicesByOwner ( QueryServicesByOwnerRequest ) returns ( QueryServicesByOwnerResponse ) {
option ( google.api.http ) . get = "/svc/v1/services/owner/{owner}" ;
}
// ServicesByDomain queries services bound to a specific domain.
rpc ServicesByDomain ( QueryServicesByDomainRequest ) returns ( QueryServicesByDomainResponse ) {
option ( google.api.http ) . get = "/svc/v1/services/domain/{domain}" ;
}
// ServiceOIDCDiscovery queries OIDC discovery configuration for a service
rpc ServiceOIDCDiscovery ( QueryServiceOIDCDiscoveryRequest ) returns ( QueryServiceOIDCDiscoveryResponse ) {
option ( google.api.http ) . get = "/svc/v1/service/{service_id}/oidc/discovery" ;
}
// ServiceOIDCJWKS queries OIDC JWKS for a service
rpc ServiceOIDCJWKS ( QueryServiceOIDCJWKSRequest ) returns ( QueryServiceOIDCJWKSResponse ) {
option ( google.api.http ) . get = "/svc/v1/service/{service_id}/oidc/jwks" ;
}
// ServiceOIDCMetadata queries OIDC metadata for a service
rpc ServiceOIDCMetadata ( QueryServiceOIDCMetadataRequest ) returns ( QueryServiceOIDCMetadataResponse ) {
option ( google.api.http ) . get = "/svc/v1/service/{service_id}/oidc/metadata" ;
2024-12-24 10:38:17 -05:00
}
2024-09-26 18:01:49 -04:00
}
// QueryParamsRequest is the request type for the Query/Params RPC method.
message QueryParamsRequest {}
// QueryParamsResponse is the response type for the Query/Params RPC method.
message QueryParamsResponse {
// params defines the parameters of the module.
Params params = 1 ;
}
2024-12-24 10:38:17 -05:00
2025-10-03 14:45:52 -04:00
// QueryDomainVerificationRequest is the request type for the
// Query/DomainVerification RPC method.
message QueryDomainVerificationRequest {
string domain = 1 ;
}
// QueryDomainVerificationResponse is the response type for the
// Query/DomainVerification RPC method.
message QueryDomainVerificationResponse {
DomainVerification domain_verification = 1 ;
}
// QueryServiceRequest is the request type for the Query/Service RPC method.
message QueryServiceRequest {
string service_id = 1 ;
}
// QueryServiceResponse is the response type for the Query/Service RPC method.
message QueryServiceResponse {
Service service = 1 ;
}
// QueryServicesByOwnerRequest is the request type for the Query/ServicesByOwner
// RPC method.
message QueryServicesByOwnerRequest {
string owner = 1 ;
}
// QueryServicesByOwnerResponse is the response type for the
// Query/ServicesByOwner RPC method.
message QueryServicesByOwnerResponse {
repeated Service services = 1 ;
}
// QueryServicesByDomainRequest is the request type for the
// Query/ServicesByDomain RPC method.
message QueryServicesByDomainRequest {
string domain = 1 ;
}
// QueryServicesByDomainResponse is the response type for the
// Query/ServicesByDomain RPC method.
message QueryServicesByDomainResponse {
repeated Service services = 1 ;
}
// QueryServiceOIDCDiscoveryRequest is the request type for the
// Query/ServiceOIDCDiscovery RPC method.
message QueryServiceOIDCDiscoveryRequest {
string service_id = 1 ;
}
// QueryServiceOIDCDiscoveryResponse is the response type for the
// Query/ServiceOIDCDiscovery RPC method.
// This response follows the OpenID Connect Discovery 1.0 specification
message QueryServiceOIDCDiscoveryResponse {
// The issuer identifier
string issuer = 1 ;
// URL of the authorization endpoint
string authorization_endpoint = 2 ;
// URL of the token endpoint
string token_endpoint = 3 ;
// URL of the JSON Web Key Set
string jwks_uri = 4 ;
// URL of the UserInfo endpoint
string userinfo_endpoint = 5 ;
// URL for the registration endpoint
string registration_endpoint = 6 ;
// JSON array containing a list of the OAuth 2.0 scope values
repeated string scopes_supported = 7 ;
// JSON array containing a list of the OAuth 2.0 response_type values
repeated string response_types_supported = 8 ;
// JSON array containing a list of the OAuth 2.0 grant_type values
repeated string grant_types_supported = 9 ;
// JSON array containing a list of the JWS signing algorithms
repeated string id_token_signing_alg_values_supported = 10 ;
// JSON array containing a list of the Subject Identifier types
repeated string subject_types_supported = 11 ;
// JSON array containing a list of client authentication methods
repeated string token_endpoint_auth_methods_supported = 12 ;
// JSON array containing a list of the Claim Names
repeated string claims_supported = 13 ;
// JSON array containing a list of the OAuth 2.0 response_mode values
repeated string response_modes_supported = 14 ;
// Service URL for documentation
string service_documentation = 15 ;
// Languages supported for the UI
repeated string ui_locales_supported = 16 ;
// Languages supported for claims
repeated string claims_locales_supported = 17 ;
// Boolean value specifying whether the OP supports use of the request parameter
bool request_parameter_supported = 18 ;
// Boolean value specifying whether the OP supports use of the request_uri parameter
bool request_uri_parameter_supported = 19 ;
// Boolean value specifying whether the OP requires any request_uri values
bool require_request_uri_registration = 20 ;
// URL that the OP provides to the person registering the Client
string op_policy_uri = 21 ;
// URL that the OP provides to the person registering the Client
string op_tos_uri = 22 ;
}
// QueryServiceOIDCJWKSRequest is the request type for the
// Query/ServiceOIDCJWKS RPC method.
message QueryServiceOIDCJWKSRequest {
string service_id = 1 ;
2024-12-24 10:38:17 -05:00
}
2025-10-03 14:45:52 -04:00
// QueryServiceOIDCJWKSResponse is the response type for the
// Query/ServiceOIDCJWKS RPC method.
// This response follows the JSON Web Key Set specification
message QueryServiceOIDCJWKSResponse {
// Array of JWK values
repeated JWK keys = 1 ;
2024-12-24 10:38:17 -05:00
}
2025-10-03 14:45:52 -04:00
// QueryServiceOIDCMetadataRequest is the request type for the
// Query/ServiceOIDCMetadata RPC method.
message QueryServiceOIDCMetadataRequest {
string service_id = 1 ;
2024-12-24 10:38:17 -05:00
}
2025-10-03 14:45:52 -04:00
// QueryServiceOIDCMetadataResponse is the response type for the
// Query/ServiceOIDCMetadata RPC method.
message QueryServiceOIDCMetadataResponse {
// Service-specific OIDC metadata
ServiceOIDCConfig config = 1 ;
// The verified domain of the service
string verified_domain = 2 ;
// Service status
ServiceStatus service_status = 3 ;
// Additional metadata as key-value pairs
map < string , string > metadata = 4 ;
2024-12-24 10:38:17 -05:00
}