syntax = "proto3";

package com.wixpress.laboratory.service;

import "wix/api/annotations.proto";
import "wix/api/validations.proto";
import "google/protobuf/wrappers.proto";
import "google/api/annotations.proto";
import "com/wixpress/laboratory/service/laboratoryServiceModel.proto";

//flynt-disable missing-service-entity
service PlatformLaboratoryService {
    rpc conductExperiment (ConductExperimentRequest) returns (ConductExperimentResponse) {
        option (google.api.http).get = "/api/v1/laboratory/platform/conductExperiment";

        option (wix.api.required) = "ConductExperimentRequest.fallbackValue";
        option (wix.api.required) = "ConductExperimentRequest.key";
        option (wix.api.maturity) = ALPHA;
    }

    rpc conductAllInScope (ConductAllInScopeRequest) returns (ConductAllInScopeResponse) {
        option (google.api.http).get = "/api/v1/laboratory/platform/conductAllInScope";

        option (wix.api.required) = "ConductAllInScopeRequest.scope";
        option (wix.api.maturity) = ALPHA;
    }

    rpc conductAllInScopes (ConductAllInScopesRequest) returns (ConductAllInScopesResponse) {
        option (google.api.http).get = "/api/v1/laboratory/platform/conductAllInScopes";

        option (wix.api.required) = "ConductAllInScopesRequest.scopes";
        option (wix.api.maturity) = ALPHA;
    }

    rpc conductAllInScopesGrouped (ConductAllInScopesGroupedRequest) returns (ConductAllInScopesGroupedResponse) {
        option (google.api.http).get = "/api/v1/laboratory/platform/conductAllInScopesGrouped";

        option (wix.api.required) = "ConductAllInScopesGroupedRequest.scopes";
        option (wix.api.maturity) = ALPHA;
    }

    rpc conductAllInScopesGroupedNew (ConductAllInScopesGroupedRequest) returns (ConductAllInScopesGroupedResponse) {
        option (wix.api.required) = "ConductAllInScopesGroupedRequest.scopes";
        option (wix.api.maturity) = ALPHA;
        option (wix.api.exposure) = INTERNAL;
        option (wix.api.deprecated) = {replaced_by: "conductAllInScopesGroupedAsync" , target_removal_date: "2023-04-01"};
    }

    rpc conductAllInScopesGroupedAsync (ConductAllInScopesGroupedRequest) returns (ConductAllInScopesGroupedResponse) {
        option (wix.api.required) = "ConductAllInScopesGroupedRequest.scopes";
        option (wix.api.maturity) = ALPHA;
        option (wix.api.exposure) = INTERNAL;
    }
}
