syntax = "proto3";

package frostfs.v2.ape;

option go_package = "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/ape/grpc;ape";

// TargetType is a type target to which a rule chain is defined.
enum TargetType {
  UNDEFINED = 0;

  NAMESPACE = 1;

  CONTAINER = 2;

  USER = 3;

  GROUP = 4;
}

// ChainTarget is an object to which a rule chain is defined.
message ChainTarget {
  TargetType type = 1;

  string name = 2;
}

// Chain is a chain of rules defined for a specific target.
message Chain {
  oneof kind {
    // Raw representation of a serizalized rule chain.
    bytes raw = 1;
  }
}