syntax = "proto3";

package api;

// Client represents an OAuth2 client.
message Client {
  string id = 1;
  string secret = 2;
  repeated string redirect_uris = 3;
  repeated string trusted_peers = 4;
  bool public = 5;
  string name = 6;
  string logo_url = 7;
}

// CreateClientReq is a request to make a client.
message CreateClientReq {
  Client client = 1;
}

// CreateClientResp returns the response from creating a client.
message CreateClientResp {
  bool already_exists = 1;
  Client client = 2; 
}

// DeleteClientReq is a request to delete a client.
message DeleteClientReq {
  // The ID of the client.
  string id = 1;
}

// DeleteClientResp determines if the. 
message DeleteClientResp {
  bool not_found = 1;
}

// TODO(ericchiang): expand this.

// Dex represents the dex gRPC service.
service Dex {
  // CreateClient attempts to create the client.
  rpc CreateClient(CreateClientReq) returns (CreateClientResp) {};
  // DeleteClient attempts to delete the provided client.
  rpc DeleteClient(DeleteClientReq) returns (DeleteClientResp) {};
}