//
//  Copyright 2020 Docker Compose CLI authors

//  Licensed 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";

package com.docker.api.protos.compose.v1;

option go_package = "github.com/docker/compose-cli/cli/server/protos/compose/v1;v1";

service Compose {
  rpc Up(ComposeUpRequest) returns (ComposeUpResponse);
  rpc Down(ComposeDownRequest) returns (ComposeDownResponse);
  rpc Stacks(ComposeStacksRequest)returns (ComposeStacksResponse);
  rpc Services(ComposeServicesRequest)returns (ComposeServicesResponse);
}

message ComposeUpRequest {
  string projectName = 1;
  string workDir = 2;
  repeated string files = 3;
}

message ComposeUpResponse {
  string projectName = 1;
}

message ComposeDownRequest {
  string projectName = 1;
  string workDir = 2;
  repeated string files = 3;
}

message ComposeDownResponse {
  string projectName = 1;
}

message ComposeStacksRequest {
  string projectName = 1;
  bool all = 2;
}

message ComposeStacksResponse {
  repeated Stack stacks = 1;
}

message Stack {
  string id = 1;
  string name = 2;
  string status = 3;
  string reason = 4;
}

message ComposeServicesRequest {
  string projectName = 1;
  string workDir = 2;
  repeated string files = 3;
}

message ComposeServicesResponse {
  repeated Service services = 1;
}

message Service {
  string id = 1;
  string name = 2;
  uint32 replicas = 3;
  uint32 desired = 4;
  repeated string Ports = 5;
}
