syntax = "proto3";


package io.ultimatebackend.srv.access;
// import "google/protobuf/timestamp.proto";

service AccessService {
    rpc CreateAccess(CreateAccessRequest) returns (CreateAccessResponse) {}
    rpc DeleteAccess(DeleteAccessRequest) returns (DeleteAccessResponse) {}
    rpc ReadAccess(ReadAccessRequest) returns (ReadAccessResponse) {}
    rpc FindAccess(FindAccessRequest) returns (FindAccessResponse) {}

    rpc HasRights(HasRightsRequest) returns (HasRightsResponse) {}
}

message Access {
    string id = 1;
    string token = 2;
    string tenantId = 3;
    repeated string scopes = 4;
    string name = 5;
    string createdAt = 8;
    string updatedAt = 9;
    bool active = 10;
    string createdBy = 11;
}

message CreateAccessRequest {
    string tenantId = 1;
    repeated string scopes = 2;
    string name = 3;
    string expireAt = 4;
}

message CreateAccessResponse {
    Access accessToken = 1;
}

message DeleteAccessRequest {
    string id = 1;
    string tenantId = 2;
}

message DeleteAccessResponse {
    Access accessToken = 1;
}

message ReadAccessRequest {
    string id = 1;
    string tenantId = 2;
}

message ReadAccessResponse {
    Access accessToken = 1;
}

message FindAccessRequest {
    string filter = 1;
    string tenantId = 2;
}

message FindAccessResponse {
    repeated Access accessToken = 1;
}

message HasRightsRequest {
    string token = 1;
    string scope = 2;
    string tenantId = 3;
}

message HasRightsResponse {
    bool access = 1;
}
