syntax = "proto3";

package auth;

import "google/protobuf/empty.proto";
import "google/protobuf/any.proto";
import "google/api/annotations.proto";
import "protoc-gen-openapiv2/options/annotations.proto";

option go_package = "pkg/service/auth/;auth";

service AuthService {
    rpc Meta (google.protobuf.Empty) returns (MetaData) {
        option (google.api.http) = {
            get: "/api/v1/auth/meta"
        };
    }

    rpc UpdateMeta (UpdateMetaReq) returns (google.protobuf.Empty) {
        option (google.api.http) = {
            put: "/api/v1/auth/meta"
            body: "*"
        };
        option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {
            operation_id: "UpdateMeta"
        };
    }

    rpc Auth (google.protobuf.Any) returns (google.protobuf.Empty) {
        option (google.api.http) = {
            get: "/api/v1/auth/api"
            additional_bindings {
                delete: "/api/v1/auth/api"
            }
            additional_bindings {
                post: "/api/v1/auth/api"
                body: "*"
            }
            additional_bindings {
                put: "/api/v1/auth/api"
                body: "*"
            }
            additional_bindings {
                patch: "/api/v1/auth/api"
                body: "*"
            }
        };
    }
}


message MetaData {
    option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = {
        json_schema: {
            required: ["email", "runtime", "tenantId", "use_mfa"]
        }
    };

    string email = 1;
    string runtime = 2;
    uint64 tenantId = 3;
    bool use_mfa = 4;
}

message UpdateMetaReq {
    option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_schema) = {
        json_schema: {
            required: ["use_mfa"]
        }
    };

    bool use_mfa = 1;
}
