syntax = "proto3";

package hashicorp.consul.mesh.v2beta1;

import "pbresource/annotations.proto";
import "pbresource/resource.proto";

// ImplicitDestinations tracks destination services for a given workload identity.
message ComputedImplicitDestinations {
  option (hashicorp.consul.resource.spec) = {scope: SCOPE_NAMESPACE};
  // destinations is the list of destinations.
  repeated ImplicitDestination destinations = 1;

  // BoundReferences is a slice of mixed type references of resources that were
  // involved in the formulation of this resource.
  repeated hashicorp.consul.resource.Reference bound_references = 2;
}

// ImplicitDestination contains a reference to a catalog service and a list of
// port names that are allowed by TrafficPermissions.
message ImplicitDestination {
  hashicorp.consul.resource.Reference destination_ref = 1;
  repeated string destination_ports = 2;
}
