syntax = "proto3";

package slash.store;

option go_package = "gen/store";

message IdentityProvider {
  // The unique identifier of the identity provider.
  string id = 1;
  string title = 2;

  enum Type {
    TYPE_UNSPECIFIED = 0;
    OAUTH2 = 1;
  }
  Type type = 3;
  IdentityProviderConfig config = 4;
}

message IdentityProviderConfig {
  oneof config {
    OAuth2Config oauth2 = 1;
  }

  message FieldMapping {
    string identifier = 1;
    string display_name = 2;
  }

  message OAuth2Config {
    string client_id = 1;
    string client_secret = 2;
    string auth_url = 3;
    string token_url = 4;
    string user_info_url = 5;
    repeated string scopes = 6;
    FieldMapping field_mapping = 7;
  }
}
