/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License. You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 */

syntax = "proto3";

option java_multiple_files = true;
package org.apache.custos.core.federated.authentication.api;


enum InstitutionCacheType {
  ALLOWLIST = 0;
  BLOCKLIST = 1;
}


message ClientMetadata {
  int64 tenant_id = 1;
  string tenant_name = 2;
  repeated string scope = 3;
  string tenant_uRI = 4;
  repeated string contacts = 5;
  string comment = 6;
  repeated string redirect_uRIs = 7;
  string client_id = 8;
  string performed_by = 9;
}


message RegisterClientResponse {
  string client_id = 1;
  string client_secret = 2;
  int64 client_id_issued_at = 3;
  int64 client_secret_expires_at = 4;
  string client_registration_uri = 5;
}


message GetClientRequest {
  int64 tenant_id = 1;
  string client_id = 2;
}

message GetClientResponse {
  string client_id = 1;
  string client_name = 2;
  repeated string redirect_uRIs = 3;
  repeated string grant_types = 4;
  repeated string scope = 5;
  int64 client_id_issued_at = 6;
  string comment = 7;
  string client_secret = 8;
  int64 client_secret_expires_at = 9;
  string client_registration_uri = 10;
}

message DeleteClientRequest {
  int64 tenant_id = 1;
  string client_id = 2;
  string performed_by = 3;
}

message Empty {

}

message GetOperationsMetadataRequest {
  int64 trace_id = 1;
}

message OperationMetadata {
  string event = 1;
  string status = 2;
  string time_stamp = 3;
  string performed_by = 4;
}
message GetOperationsMetadataResponse {
  repeated OperationMetadata metadata = 1;
}


message CacheManipulationRequest {
  int64 tenant_id = 1;
  repeated string institution_ids = 2;
  InstitutionCacheType type = 3;
  string performedBy = 4;
}

message Status {
  bool status = 1;
}

message InstitutionOperationResponse {

}

message Institution {
  string entity_id = 1;
  string organization_name = 2;
  string display_name = 3;
  bool rand_s = 4;
}

message GetInstitutionsIdsAsResponse {
  repeated string entity_ids = 1;
}


message GetInstitutionsResponse {
  repeated Institution institutions = 2;
}
