// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.6
// 	protoc        v3.19.0
// source: external/iam/v2/policy.proto

package v2

import (
	context "context"
	_ "github.com/chef/automate/api/external/annotations/iam"
	request "github.com/chef/automate/api/external/iam/v2/request"
	response "github.com/chef/automate/api/external/iam/v2/response"
	_ "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options"
	_ "google.golang.org/genproto/googleapis/api/annotations"
	grpc "google.golang.org/grpc"
	codes "google.golang.org/grpc/codes"
	status "google.golang.org/grpc/status"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

var File_external_iam_v2_policy_proto protoreflect.FileDescriptor

const file_external_iam_v2_policy_proto_rawDesc = "" +
	"\n" +
	"\x1cexternal/iam/v2/policy.proto\x12\x18chef.automate.api.iam.v2\x1a\x1cgoogle/api/annotations.proto\x1a,protoc-gen-swagger/options/annotations.proto\x1a$external/iam/v2/request/policy.proto\x1a%external/iam/v2/response/policy.proto\x1a*external/annotations/iam/annotations.proto2\xea,\n" +
	"\bPolicies\x12\x80\x04\n" +
	"\fCreatePolicy\x12).chef.automate.api.iam.v2.CreatePolicyReq\x1a*.chef.automate.api.iam.v2.CreatePolicyResp\"\x98\x03\x92A\xcd\x02\n" +
	"\bpoliciesj\xc0\x02\n" +
	"\x0ex-code-samples\x12\xad\x022\xaa\x02\n" +
	"\xa7\x02*\xa4\x02\n" +
	"\x0e\n" +
	"\x04lang\x12\x06\x1a\x04JSON\n" +
	"\x91\x02\n" +
	"\x06source\x12\x86\x02\x1a\x83\x02{\"name\": \"My Viewer Policy\",\"id\": \"custom-viewer-policy\",\"members\": [\"team:ldap:*\"], \"statements\": [{\"role\": \"viewer\",\"projects\": [\"project1\", \"project2\"], \"effect\": \"ALLOW\"},{\"role\": \"qa\",\"projects\": [\"acceptanceProject\"], \"effect\": \"ALLOW\"}],\"projects\": []}\x8a\xb5\x18#\n" +
	"\fiam:policies\x12\x13iam:policies:create\x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/apis/iam/v2/policies\x12\xb6\x01\n" +
	"\tGetPolicy\x12&.chef.automate.api.iam.v2.GetPolicyReq\x1a'.chef.automate.api.iam.v2.GetPolicyResp\"X\x92A\n" +
	"\n" +
	"\bpolicies\x8a\xb5\x18%\n" +
	"\x11iam:policies:{id}\x12\x10iam:policies:get\x82\xd3\xe4\x93\x02\x1c\x12\x1a/apis/iam/v2/policies/{id}\x12\xb6\x01\n" +
	"\fListPolicies\x12).chef.automate.api.iam.v2.ListPoliciesReq\x1a*.chef.automate.api.iam.v2.ListPoliciesResp\"O\x92A\n" +
	"\n" +
	"\bpolicies\x8a\xb5\x18!\n" +
	"\fiam:policies\x12\x11iam:policies:list\x82\xd3\xe4\x93\x02\x17\x12\x15/apis/iam/v2/policies\x12\xc2\x01\n" +
	"\fDeletePolicy\x12).chef.automate.api.iam.v2.DeletePolicyReq\x1a*.chef.automate.api.iam.v2.DeletePolicyResp\"[\x92A\n" +
	"\n" +
	"\bpolicies\x8a\xb5\x18(\n" +
	"\x11iam:policies:{id}\x12\x13iam:policies:delete\x82\xd3\xe4\x93\x02\x1c*\x1a/apis/iam/v2/policies/{id}\x12\x90\x04\n" +
	"\fUpdatePolicy\x12).chef.automate.api.iam.v2.UpdatePolicyReq\x1a*.chef.automate.api.iam.v2.UpdatePolicyResp\"\xa8\x03\x92A\xd3\x02\n" +
	"\bpoliciesj\xc6\x02\n" +
	"\x0ex-code-samples\x12\xb3\x022\xb0\x02\n" +
	"\xad\x02*\xaa\x02\n" +
	"\x0e\n" +
	"\x04lang\x12\x06\x1a\x04JSON\n" +
	"\x97\x02\n" +
	"\x06source\x12\x8c\x02\x1a\x89\x02{\"name\": \"My Updated Viewer Policy\", \"members\": [\"user:ldap:newuser\", \"team:ldap:newteam\"], \"statements\": [{\"role\": \"viewer\",\"projects\":[\"project1\", \"project2\"], \"effect\": \"ALLOW\"},{\"role\": \"qa\",\"projects\": [\"acceptanceProject\"], \"effect\": \"ALLOW\"}],\"projects\": []}\x8a\xb5\x18(\n" +
	"\x11iam:policies:{id}\x12\x13iam:policies:update\x82\xd3\xe4\x93\x02\x1f:\x01*\x1a\x1a/apis/iam/v2/policies/{id}\x12\xcc\x01\n" +
	"\x10GetPolicyVersion\x12-.chef.automate.api.iam.v2.GetPolicyVersionReq\x1a..chef.automate.api.iam.v2.GetPolicyVersionResp\"Y\x92A\n" +
	"\n" +
	"\bpolicies\x8a\xb5\x18%\n" +
	"\x11iam:policyVersion\x12\x10iam:policies:get\x82\xd3\xe4\x93\x02\x1d\x12\x1b/apis/iam/v2/policy_version\x12\xe3\x01\n" +
	"\x11ListPolicyMembers\x12..chef.automate.api.iam.v2.ListPolicyMembersReq\x1a/.chef.automate.api.iam.v2.ListPolicyMembersResp\"m\x92A\n" +
	"\n" +
	"\bpolicies\x8a\xb5\x182\n" +
	"\x19iam:policies:{id}:members\x12\x15iam:policyMembers:get\x82\xd3\xe4\x93\x02$\x12\"/apis/iam/v2/policies/{id}/members\x12\xe1\x02\n" +
	"\x14ReplacePolicyMembers\x121.chef.automate.api.iam.v2.ReplacePolicyMembersReq\x1a2.chef.automate.api.iam.v2.ReplacePolicyMembersResp\"\xe1\x01\x92Ax\n" +
	"\bpoliciesjl\n" +
	"\x0ex-code-samples\x12Z2X\n" +
	"V*T\n" +
	"\x0e\n" +
	"\x04lang\x12\x06\x1a\x04JSON\n" +
	"B\n" +
	"\x06source\x128\x1a6{\"members\": [\"team:local:viewers\", \"user:local:test\"]}\x8a\xb5\x185\n" +
	"\x19iam:policies:{id}:members\x12\x18iam:policyMembers:update\x82\xd3\xe4\x93\x02':\x01*\x1a\"/apis/iam/v2/policies/{id}/members\x12\xe5\x02\n" +
	"\x13RemovePolicyMembers\x120.chef.automate.api.iam.v2.RemovePolicyMembersReq\x1a1.chef.automate.api.iam.v2.RemovePolicyMembersResp\"\xe8\x01\x92Ax\n" +
	"\bpoliciesjl\n" +
	"\x0ex-code-samples\x12Z2X\n" +
	"V*T\n" +
	"\x0e\n" +
	"\x04lang\x12\x06\x1a\x04JSON\n" +
	"B\n" +
	"\x06source\x128\x1a6{\"members\": [\"team:local:viewers\", \"user:local:test\"]}\x8a\xb5\x185\n" +
	"\x19iam:policies:{id}:members\x12\x18iam:policyMembers:delete\x82\xd3\xe4\x93\x02.:\x01*\")/apis/iam/v2/policies/{id}/members:remove\x12\xd9\x02\n" +
	"\x10AddPolicyMembers\x12-.chef.automate.api.iam.v2.AddPolicyMembersReq\x1a..chef.automate.api.iam.v2.AddPolicyMembersResp\"\xe5\x01\x92Ax\n" +
	"\bpoliciesjl\n" +
	"\x0ex-code-samples\x12Z2X\n" +
	"V*T\n" +
	"\x0e\n" +
	"\x04lang\x12\x06\x1a\x04JSON\n" +
	"B\n" +
	"\x06source\x128\x1a6{\"members\": [\"team:local:viewers\", \"user:local:test\"]}\x8a\xb5\x185\n" +
	"\x19iam:policies:{id}:members\x12\x18iam:policyMembers:create\x82\xd3\xe4\x93\x02+:\x01*\"&/apis/iam/v2/policies/{id}/members:add\x12\xd5\x02\n" +
	"\n" +
	"CreateRole\x12'.chef.automate.api.iam.v2.CreateRoleReq\x1a(.chef.automate.api.iam.v2.CreateRoleResp\"\xf3\x01\x92A\xb1\x01\n" +
	"\x05rolesj\xa7\x01\n" +
	"\x0ex-code-samples\x12\x94\x012\x91\x01\n" +
	"\x8e\x01*\x8b\x01\n" +
	"\x0e\n" +
	"\x04lang\x12\x06\x1a\x04JSON\n" +
	"y\n" +
	"\x06source\x12o\x1am{\"id\": \"custom-role\", \"name\": \"My Custom Secret Manager Role\", \"actions\": [\"secrets:*\", \"iam:projects:list\"]}\x8a\xb5\x18\x1d\n" +
	"\tiam:roles\x12\x10iam:roles:create\x82\xd3\xe4\x93\x02\x17:\x01*\"\x12/apis/iam/v2/roles\x12\xa1\x01\n" +
	"\tListRoles\x12&.chef.automate.api.iam.v2.ListRolesReq\x1a'.chef.automate.api.iam.v2.ListRolesResp\"C\x92A\a\n" +
	"\x05roles\x8a\xb5\x18\x1b\n" +
	"\tiam:roles\x12\x0eiam:roles:list\x82\xd3\xe4\x93\x02\x14\x12\x12/apis/iam/v2/roles\x12\xa4\x01\n" +
	"\aGetRole\x12$.chef.automate.api.iam.v2.GetRoleReq\x1a%.chef.automate.api.iam.v2.GetRoleResp\"L\x92A\a\n" +
	"\x05roles\x8a\xb5\x18\x1f\n" +
	"\x0eiam:roles:{id}\x12\riam:roles:get\x82\xd3\xe4\x93\x02\x19\x12\x17/apis/iam/v2/roles/{id}\x12\xb0\x01\n" +
	"\n" +
	"DeleteRole\x12'.chef.automate.api.iam.v2.DeleteRoleReq\x1a(.chef.automate.api.iam.v2.DeleteRoleResp\"O\x92A\a\n" +
	"\x05roles\x8a\xb5\x18\"\n" +
	"\x0eiam:roles:{id}\x12\x10iam:roles:delete\x82\xd3\xe4\x93\x02\x19*\x17/apis/iam/v2/roles/{id}\x12\xd1\x02\n" +
	"\n" +
	"UpdateRole\x12'.chef.automate.api.iam.v2.UpdateRoleReq\x1a(.chef.automate.api.iam.v2.UpdateRoleResp\"\xef\x01\x92A\xa3\x01\n" +
	"\x05rolesj\x99\x01\n" +
	"\x0ex-code-samples\x12\x86\x012\x83\x01\n" +
	"\x80\x01*~\n" +
	"\x0e\n" +
	"\x04lang\x12\x06\x1a\x04JSON\n" +
	"l\n" +
	"\x06source\x12b\x1a`{\"name\": \"My Updated Custom Secret Manager Role\", \"actions\": [\"secrets:*\", \"iam:projects:list\"]}\x8a\xb5\x18\"\n" +
	"\x0eiam:roles:{id}\x12\x10iam:roles:update\x82\xd3\xe4\x93\x02\x1c:\x01*\x1a\x17/apis/iam/v2/roles/{id}\x12\xc5\x02\n" +
	"\rCreateProject\x12*.chef.automate.api.iam.v2.CreateProjectReq\x1a+.chef.automate.api.iam.v2.CreateProjectResp\"\xda\x01\x92A\x8f\x01\n" +
	"\bprojectsj\x82\x01\n" +
	"\x0ex-code-samples\x12p2n\n" +
	"l*j\n" +
	"\x0e\n" +
	"\x04lang\x12\x06\x1a\x04JSON\n" +
	"X\n" +
	"\x06source\x12N\x1aL{\"name\": \"My Custom Project\", \"id\": \"custom-project\", \"skip_policies\": true}\x8a\xb5\x18#\n" +
	"\fiam:projects\x12\x13iam:projects:create\x82\xd3\xe4\x93\x02\x1a:\x01*\"\x15/apis/iam/v2/projects\x12\xab\x02\n" +
	"\rUpdateProject\x12*.chef.automate.api.iam.v2.UpdateProjectReq\x1a+.chef.automate.api.iam.v2.UpdateProjectResp\"\xc0\x01\x92Al\n" +
	"\bprojectsj`\n" +
	"\x0ex-code-samples\x12N2L\n" +
	"J*H\n" +
	"\x0e\n" +
	"\x04lang\x12\x06\x1a\x04JSON\n" +
	"6\n" +
	"\x06source\x12,\x1a*{\"name\": \"My Custom Updated Project Name\"}\x8a\xb5\x18(\n" +
	"\x11iam:projects:{id}\x12\x13iam:projects:update\x82\xd3\xe4\x93\x02\x1f:\x01*\x1a\x1a/apis/iam/v2/projects/{id}\x12\xb9\x01\n" +
	"\n" +
	"GetProject\x12'.chef.automate.api.iam.v2.GetProjectReq\x1a(.chef.automate.api.iam.v2.GetProjectResp\"X\x92A\n" +
	"\n" +
	"\bprojects\x8a\xb5\x18%\n" +
	"\x11iam:projects:{id}\x12\x10iam:projects:get\x82\xd3\xe4\x93\x02\x1c\x12\x1a/apis/iam/v2/projects/{id}\x12\xb6\x01\n" +
	"\fListProjects\x12).chef.automate.api.iam.v2.ListProjectsReq\x1a*.chef.automate.api.iam.v2.ListProjectsResp\"O\x92A\n" +
	"\n" +
	"\bprojects\x8a\xb5\x18!\n" +
	"\fiam:projects\x12\x11iam:projects:list\x82\xd3\xe4\x93\x02\x17\x12\x15/apis/iam/v2/projects\x12\xc5\x01\n" +
	"\rDeleteProject\x12*.chef.automate.api.iam.v2.DeleteProjectReq\x1a+.chef.automate.api.iam.v2.DeleteProjectResp\"[\x92A\n" +
	"\n" +
	"\bprojects\x8a\xb5\x18(\n" +
	"\x11iam:projects:{id}\x12\x13iam:projects:delete\x82\xd3\xe4\x93\x02\x1c*\x1a/apis/iam/v2/projects/{id}\x12\xd6\x01\n" +
	"\x15IntrospectAllProjects\x12).chef.automate.api.iam.v2.ListProjectsReq\x1a*.chef.automate.api.iam.v2.ListProjectsResp\"f\x92A\b\n" +
	"\x06hidden\x8a\xb5\x18/\n" +
	"\x0eiam:introspect\x12\x1diam:introspect:getAllProjects\x82\xd3\xe4\x93\x02\"\x12 /apis/iam/v2/introspect_projectsB.Z,github.com/chef/automate/api/external/iam/v2b\x06proto3"

var file_external_iam_v2_policy_proto_goTypes = []any{
	(*request.CreatePolicyReq)(nil),           // 0: chef.automate.api.iam.v2.CreatePolicyReq
	(*request.GetPolicyReq)(nil),              // 1: chef.automate.api.iam.v2.GetPolicyReq
	(*request.ListPoliciesReq)(nil),           // 2: chef.automate.api.iam.v2.ListPoliciesReq
	(*request.DeletePolicyReq)(nil),           // 3: chef.automate.api.iam.v2.DeletePolicyReq
	(*request.UpdatePolicyReq)(nil),           // 4: chef.automate.api.iam.v2.UpdatePolicyReq
	(*request.GetPolicyVersionReq)(nil),       // 5: chef.automate.api.iam.v2.GetPolicyVersionReq
	(*request.ListPolicyMembersReq)(nil),      // 6: chef.automate.api.iam.v2.ListPolicyMembersReq
	(*request.ReplacePolicyMembersReq)(nil),   // 7: chef.automate.api.iam.v2.ReplacePolicyMembersReq
	(*request.RemovePolicyMembersReq)(nil),    // 8: chef.automate.api.iam.v2.RemovePolicyMembersReq
	(*request.AddPolicyMembersReq)(nil),       // 9: chef.automate.api.iam.v2.AddPolicyMembersReq
	(*request.CreateRoleReq)(nil),             // 10: chef.automate.api.iam.v2.CreateRoleReq
	(*request.ListRolesReq)(nil),              // 11: chef.automate.api.iam.v2.ListRolesReq
	(*request.GetRoleReq)(nil),                // 12: chef.automate.api.iam.v2.GetRoleReq
	(*request.DeleteRoleReq)(nil),             // 13: chef.automate.api.iam.v2.DeleteRoleReq
	(*request.UpdateRoleReq)(nil),             // 14: chef.automate.api.iam.v2.UpdateRoleReq
	(*request.CreateProjectReq)(nil),          // 15: chef.automate.api.iam.v2.CreateProjectReq
	(*request.UpdateProjectReq)(nil),          // 16: chef.automate.api.iam.v2.UpdateProjectReq
	(*request.GetProjectReq)(nil),             // 17: chef.automate.api.iam.v2.GetProjectReq
	(*request.ListProjectsReq)(nil),           // 18: chef.automate.api.iam.v2.ListProjectsReq
	(*request.DeleteProjectReq)(nil),          // 19: chef.automate.api.iam.v2.DeleteProjectReq
	(*response.CreatePolicyResp)(nil),         // 20: chef.automate.api.iam.v2.CreatePolicyResp
	(*response.GetPolicyResp)(nil),            // 21: chef.automate.api.iam.v2.GetPolicyResp
	(*response.ListPoliciesResp)(nil),         // 22: chef.automate.api.iam.v2.ListPoliciesResp
	(*response.DeletePolicyResp)(nil),         // 23: chef.automate.api.iam.v2.DeletePolicyResp
	(*response.UpdatePolicyResp)(nil),         // 24: chef.automate.api.iam.v2.UpdatePolicyResp
	(*response.GetPolicyVersionResp)(nil),     // 25: chef.automate.api.iam.v2.GetPolicyVersionResp
	(*response.ListPolicyMembersResp)(nil),    // 26: chef.automate.api.iam.v2.ListPolicyMembersResp
	(*response.ReplacePolicyMembersResp)(nil), // 27: chef.automate.api.iam.v2.ReplacePolicyMembersResp
	(*response.RemovePolicyMembersResp)(nil),  // 28: chef.automate.api.iam.v2.RemovePolicyMembersResp
	(*response.AddPolicyMembersResp)(nil),     // 29: chef.automate.api.iam.v2.AddPolicyMembersResp
	(*response.CreateRoleResp)(nil),           // 30: chef.automate.api.iam.v2.CreateRoleResp
	(*response.ListRolesResp)(nil),            // 31: chef.automate.api.iam.v2.ListRolesResp
	(*response.GetRoleResp)(nil),              // 32: chef.automate.api.iam.v2.GetRoleResp
	(*response.DeleteRoleResp)(nil),           // 33: chef.automate.api.iam.v2.DeleteRoleResp
	(*response.UpdateRoleResp)(nil),           // 34: chef.automate.api.iam.v2.UpdateRoleResp
	(*response.CreateProjectResp)(nil),        // 35: chef.automate.api.iam.v2.CreateProjectResp
	(*response.UpdateProjectResp)(nil),        // 36: chef.automate.api.iam.v2.UpdateProjectResp
	(*response.GetProjectResp)(nil),           // 37: chef.automate.api.iam.v2.GetProjectResp
	(*response.ListProjectsResp)(nil),         // 38: chef.automate.api.iam.v2.ListProjectsResp
	(*response.DeleteProjectResp)(nil),        // 39: chef.automate.api.iam.v2.DeleteProjectResp
}
var file_external_iam_v2_policy_proto_depIdxs = []int32{
	0,  // 0: chef.automate.api.iam.v2.Policies.CreatePolicy:input_type -> chef.automate.api.iam.v2.CreatePolicyReq
	1,  // 1: chef.automate.api.iam.v2.Policies.GetPolicy:input_type -> chef.automate.api.iam.v2.GetPolicyReq
	2,  // 2: chef.automate.api.iam.v2.Policies.ListPolicies:input_type -> chef.automate.api.iam.v2.ListPoliciesReq
	3,  // 3: chef.automate.api.iam.v2.Policies.DeletePolicy:input_type -> chef.automate.api.iam.v2.DeletePolicyReq
	4,  // 4: chef.automate.api.iam.v2.Policies.UpdatePolicy:input_type -> chef.automate.api.iam.v2.UpdatePolicyReq
	5,  // 5: chef.automate.api.iam.v2.Policies.GetPolicyVersion:input_type -> chef.automate.api.iam.v2.GetPolicyVersionReq
	6,  // 6: chef.automate.api.iam.v2.Policies.ListPolicyMembers:input_type -> chef.automate.api.iam.v2.ListPolicyMembersReq
	7,  // 7: chef.automate.api.iam.v2.Policies.ReplacePolicyMembers:input_type -> chef.automate.api.iam.v2.ReplacePolicyMembersReq
	8,  // 8: chef.automate.api.iam.v2.Policies.RemovePolicyMembers:input_type -> chef.automate.api.iam.v2.RemovePolicyMembersReq
	9,  // 9: chef.automate.api.iam.v2.Policies.AddPolicyMembers:input_type -> chef.automate.api.iam.v2.AddPolicyMembersReq
	10, // 10: chef.automate.api.iam.v2.Policies.CreateRole:input_type -> chef.automate.api.iam.v2.CreateRoleReq
	11, // 11: chef.automate.api.iam.v2.Policies.ListRoles:input_type -> chef.automate.api.iam.v2.ListRolesReq
	12, // 12: chef.automate.api.iam.v2.Policies.GetRole:input_type -> chef.automate.api.iam.v2.GetRoleReq
	13, // 13: chef.automate.api.iam.v2.Policies.DeleteRole:input_type -> chef.automate.api.iam.v2.DeleteRoleReq
	14, // 14: chef.automate.api.iam.v2.Policies.UpdateRole:input_type -> chef.automate.api.iam.v2.UpdateRoleReq
	15, // 15: chef.automate.api.iam.v2.Policies.CreateProject:input_type -> chef.automate.api.iam.v2.CreateProjectReq
	16, // 16: chef.automate.api.iam.v2.Policies.UpdateProject:input_type -> chef.automate.api.iam.v2.UpdateProjectReq
	17, // 17: chef.automate.api.iam.v2.Policies.GetProject:input_type -> chef.automate.api.iam.v2.GetProjectReq
	18, // 18: chef.automate.api.iam.v2.Policies.ListProjects:input_type -> chef.automate.api.iam.v2.ListProjectsReq
	19, // 19: chef.automate.api.iam.v2.Policies.DeleteProject:input_type -> chef.automate.api.iam.v2.DeleteProjectReq
	18, // 20: chef.automate.api.iam.v2.Policies.IntrospectAllProjects:input_type -> chef.automate.api.iam.v2.ListProjectsReq
	20, // 21: chef.automate.api.iam.v2.Policies.CreatePolicy:output_type -> chef.automate.api.iam.v2.CreatePolicyResp
	21, // 22: chef.automate.api.iam.v2.Policies.GetPolicy:output_type -> chef.automate.api.iam.v2.GetPolicyResp
	22, // 23: chef.automate.api.iam.v2.Policies.ListPolicies:output_type -> chef.automate.api.iam.v2.ListPoliciesResp
	23, // 24: chef.automate.api.iam.v2.Policies.DeletePolicy:output_type -> chef.automate.api.iam.v2.DeletePolicyResp
	24, // 25: chef.automate.api.iam.v2.Policies.UpdatePolicy:output_type -> chef.automate.api.iam.v2.UpdatePolicyResp
	25, // 26: chef.automate.api.iam.v2.Policies.GetPolicyVersion:output_type -> chef.automate.api.iam.v2.GetPolicyVersionResp
	26, // 27: chef.automate.api.iam.v2.Policies.ListPolicyMembers:output_type -> chef.automate.api.iam.v2.ListPolicyMembersResp
	27, // 28: chef.automate.api.iam.v2.Policies.ReplacePolicyMembers:output_type -> chef.automate.api.iam.v2.ReplacePolicyMembersResp
	28, // 29: chef.automate.api.iam.v2.Policies.RemovePolicyMembers:output_type -> chef.automate.api.iam.v2.RemovePolicyMembersResp
	29, // 30: chef.automate.api.iam.v2.Policies.AddPolicyMembers:output_type -> chef.automate.api.iam.v2.AddPolicyMembersResp
	30, // 31: chef.automate.api.iam.v2.Policies.CreateRole:output_type -> chef.automate.api.iam.v2.CreateRoleResp
	31, // 32: chef.automate.api.iam.v2.Policies.ListRoles:output_type -> chef.automate.api.iam.v2.ListRolesResp
	32, // 33: chef.automate.api.iam.v2.Policies.GetRole:output_type -> chef.automate.api.iam.v2.GetRoleResp
	33, // 34: chef.automate.api.iam.v2.Policies.DeleteRole:output_type -> chef.automate.api.iam.v2.DeleteRoleResp
	34, // 35: chef.automate.api.iam.v2.Policies.UpdateRole:output_type -> chef.automate.api.iam.v2.UpdateRoleResp
	35, // 36: chef.automate.api.iam.v2.Policies.CreateProject:output_type -> chef.automate.api.iam.v2.CreateProjectResp
	36, // 37: chef.automate.api.iam.v2.Policies.UpdateProject:output_type -> chef.automate.api.iam.v2.UpdateProjectResp
	37, // 38: chef.automate.api.iam.v2.Policies.GetProject:output_type -> chef.automate.api.iam.v2.GetProjectResp
	38, // 39: chef.automate.api.iam.v2.Policies.ListProjects:output_type -> chef.automate.api.iam.v2.ListProjectsResp
	39, // 40: chef.automate.api.iam.v2.Policies.DeleteProject:output_type -> chef.automate.api.iam.v2.DeleteProjectResp
	38, // 41: chef.automate.api.iam.v2.Policies.IntrospectAllProjects:output_type -> chef.automate.api.iam.v2.ListProjectsResp
	21, // [21:42] is the sub-list for method output_type
	0,  // [0:21] is the sub-list for method input_type
	0,  // [0:0] is the sub-list for extension type_name
	0,  // [0:0] is the sub-list for extension extendee
	0,  // [0:0] is the sub-list for field type_name
}

func init() { file_external_iam_v2_policy_proto_init() }
func file_external_iam_v2_policy_proto_init() {
	if File_external_iam_v2_policy_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_external_iam_v2_policy_proto_rawDesc), len(file_external_iam_v2_policy_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   0,
			NumExtensions: 0,
			NumServices:   1,
		},
		GoTypes:           file_external_iam_v2_policy_proto_goTypes,
		DependencyIndexes: file_external_iam_v2_policy_proto_depIdxs,
	}.Build()
	File_external_iam_v2_policy_proto = out.File
	file_external_iam_v2_policy_proto_goTypes = nil
	file_external_iam_v2_policy_proto_depIdxs = nil
}

// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConnInterface

// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion6

// PoliciesClient is the client API for Policies service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type PoliciesClient interface {
	// Creates a custom policy
	//
	// Creates a custom IAM policy used to control permissions in Automate.
	// A policy is composed of one or more statements that grant permissions to a set of members.
	// Each statement contains a role as well as a list of projects.
	//
	// The role defines a set of actions that the statement is scoped to.
	// The project list defines the set of resources that the statement is scoped to.
	// Pass `"projects": ["*"]` to scope a statement to every project.
	//
	// A policy's *top-level* projects list defines which projects the policy belongs to (for filtering policies by their projects),
	// whereas the *statement-level* projects list defines which projects the statement applies to.
	//
	// The example creates a new policy not associated with any project (because the top-level `projects` property is empty) that grants the `viewer` role
	// on a few projects for all LDAP teams and a custom role `qa` on a specific project.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policies:create
	CreatePolicy(ctx context.Context, in *request.CreatePolicyReq, opts ...grpc.CallOption) (*response.CreatePolicyResp, error)
	// Gets a policy
	//
	// Returns the details for a policy.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policies:get
	GetPolicy(ctx context.Context, in *request.GetPolicyReq, opts ...grpc.CallOption) (*response.GetPolicyResp, error)
	// Lists all policies
	//
	// Lists all policies.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policies:list
	ListPolicies(ctx context.Context, in *request.ListPoliciesReq, opts ...grpc.CallOption) (*response.ListPoliciesResp, error)
	// Deletes a custom policy
	//
	// Deletes a specified custom policy. You cannot delete Chef-managed policies.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policies:delete
	DeletePolicy(ctx context.Context, in *request.DeletePolicyReq, opts ...grpc.CallOption) (*response.DeletePolicyResp, error)
	// Updates a custom policy
	//
	// This operation overwrites all fields excepting ID,
	// including those omitted from the request, so be sure to specify all properties.
	// Properties that you do not include are reset to empty values.
	// The only exception is the policy ID, which is immutable; it can only be set at creation time.
	//
	// While you can use this endpoint to update members on a policy, if that is the only
	// property you wish to modify you might find it more convenient to use one of these endpoints instead:
	// Add policy members, Remove policy members, or Replace policy members.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policies:update
	UpdatePolicy(ctx context.Context, in *request.UpdatePolicyReq, opts ...grpc.CallOption) (*response.UpdatePolicyResp, error)
	// Gets IAM version
	//
	// Returns the major and minor version of IAM that your automate installation is running.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policies:get
	GetPolicyVersion(ctx context.Context, in *request.GetPolicyVersionReq, opts ...grpc.CallOption) (*response.GetPolicyVersionResp, error)
	// Lists policy members
	//
	// Lists all members of a specific policy.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policyMembers:get
	ListPolicyMembers(ctx context.Context, in *request.ListPolicyMembersReq, opts ...grpc.CallOption) (*response.ListPolicyMembersResp, error)
	// Replaces policy members
	//
	// Replaces the entire member list of a specific policy with a new list.
	// You may use this endpoint to update members of either Custom or Chef-managed policies.
	//
	// Ensure each element of the members array is in the correct
	// [Member Expression](https://automate.chef.io/docs/iam-v2-guide/#member-expressions) format.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policyMembers:update
	ReplacePolicyMembers(ctx context.Context, in *request.ReplacePolicyMembersReq, opts ...grpc.CallOption) (*response.ReplacePolicyMembersResp, error)
	// Removes policy members
	//
	// Removes members from the member list of a specific policy. Silently ignores
	// members that are not already part of the member list.
	// You may use this endpoint to update members of either Custom or Chef-managed policies.
	//
	// Ensure each element of the members array is in the correct
	// [Member Expression](https://automate.chef.io/docs/iam-v2-guide/#member-expressions) format.
	//
	// The removed members will still exist within Chef Automate, but are no longer associated with this policy.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policyMembers:delete
	RemovePolicyMembers(ctx context.Context, in *request.RemovePolicyMembersReq, opts ...grpc.CallOption) (*response.RemovePolicyMembersResp, error)
	// Adds policy members
	//
	// Adds members to the member list of a specific policy.
	// You may use this endpoint to update members of either Custom or Chef-managed policies.
	//
	// Ensure each element of the members array is in the correct
	// [Member Expression](https://automate.chef.io/docs/iam-v2-guide/#member-expressions) format.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policyMembers:create
	AddPolicyMembers(ctx context.Context, in *request.AddPolicyMembersReq, opts ...grpc.CallOption) (*response.AddPolicyMembersResp, error)
	// Creates a custom role
	//
	// Creates a new role to be used in the policies that control permissions in Automate.
	//
	// A role defines the scope of actions in a policy statement.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:roles:create
	CreateRole(ctx context.Context, in *request.CreateRoleReq, opts ...grpc.CallOption) (*response.CreateRoleResp, error)
	// Lists all roles
	//
	// Lists all *Chef-managed* and *Custom* roles.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:roles:list
	ListRoles(ctx context.Context, in *request.ListRolesReq, opts ...grpc.CallOption) (*response.ListRolesResp, error)
	// Gets a role
	//
	// Returns the details for a role.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:roles:get
	GetRole(ctx context.Context, in *request.GetRoleReq, opts ...grpc.CallOption) (*response.GetRoleResp, error)
	// Deletes a custom role
	//
	// Deletes a specified custom role (you cannot delete Chef-managed roles) and remove it from any statements that may have been using it.
	// If such a statement has no other associated actions, the statement is deleted as well.
	// Similarly, if that statement removal results in a policy with no other statements,
	// that policy is removed as well.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:roles:delete
	DeleteRole(ctx context.Context, in *request.DeleteRoleReq, opts ...grpc.CallOption) (*response.DeleteRoleResp, error)
	// Updates a custom role
	//
	// This operation overwrites all fields excepting ID,
	// including those omitted from the request, so be sure to specify all properties.
	// Properties that you do not include are reset to empty values.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:roles:update
	UpdateRole(ctx context.Context, in *request.UpdateRoleReq, opts ...grpc.CallOption) (*response.UpdateRoleResp, error)
	// Creates a project
	//
	// Creates a new project to be used in the policies that control permissions in Automate.
	//
	// A project defines the scope of resources in a policy statement. Resources can be in more than one project.
	//
	// When a project is created, the system also creates three policies associated with the new project,
	// one for each of the following roles: editor, viewer, and project owner.
	// You can optionally pass the `skip_policies` flag set to `true` to skip the creation of these policies.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:projects:create
	CreateProject(ctx context.Context, in *request.CreateProjectReq, opts ...grpc.CallOption) (*response.CreateProjectResp, error)
	// Updates a project
	//
	// Updates the name of an existing project.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:projects:update
	UpdateProject(ctx context.Context, in *request.UpdateProjectReq, opts ...grpc.CallOption) (*response.UpdateProjectResp, error)
	// Gets a project
	//
	// Returns the details for a project.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:projects:get
	GetProject(ctx context.Context, in *request.GetProjectReq, opts ...grpc.CallOption) (*response.GetProjectResp, error)
	// Lists all projects
	//
	// Lists all projects.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:projects:list
	ListProjects(ctx context.Context, in *request.ListProjectsReq, opts ...grpc.CallOption) (*response.ListProjectsResp, error)
	// Deletes a project
	//
	// Deletes a project from any resources tagged with it.
	//
	// Also deletes this project from any project list in any policy statements.
	// If the resulting project list for a given statement is empty, it is deleted.
	// If the resulting policy has no statements, it is also deleted.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:projects:delete
	DeleteProject(ctx context.Context, in *request.DeleteProjectReq, opts ...grpc.CallOption) (*response.DeleteProjectResp, error)
	IntrospectAllProjects(ctx context.Context, in *request.ListProjectsReq, opts ...grpc.CallOption) (*response.ListProjectsResp, error)
}

type policiesClient struct {
	cc grpc.ClientConnInterface
}

func NewPoliciesClient(cc grpc.ClientConnInterface) PoliciesClient {
	return &policiesClient{cc}
}

func (c *policiesClient) CreatePolicy(ctx context.Context, in *request.CreatePolicyReq, opts ...grpc.CallOption) (*response.CreatePolicyResp, error) {
	out := new(response.CreatePolicyResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/CreatePolicy", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) GetPolicy(ctx context.Context, in *request.GetPolicyReq, opts ...grpc.CallOption) (*response.GetPolicyResp, error) {
	out := new(response.GetPolicyResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/GetPolicy", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) ListPolicies(ctx context.Context, in *request.ListPoliciesReq, opts ...grpc.CallOption) (*response.ListPoliciesResp, error) {
	out := new(response.ListPoliciesResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/ListPolicies", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) DeletePolicy(ctx context.Context, in *request.DeletePolicyReq, opts ...grpc.CallOption) (*response.DeletePolicyResp, error) {
	out := new(response.DeletePolicyResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/DeletePolicy", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) UpdatePolicy(ctx context.Context, in *request.UpdatePolicyReq, opts ...grpc.CallOption) (*response.UpdatePolicyResp, error) {
	out := new(response.UpdatePolicyResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/UpdatePolicy", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) GetPolicyVersion(ctx context.Context, in *request.GetPolicyVersionReq, opts ...grpc.CallOption) (*response.GetPolicyVersionResp, error) {
	out := new(response.GetPolicyVersionResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/GetPolicyVersion", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) ListPolicyMembers(ctx context.Context, in *request.ListPolicyMembersReq, opts ...grpc.CallOption) (*response.ListPolicyMembersResp, error) {
	out := new(response.ListPolicyMembersResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/ListPolicyMembers", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) ReplacePolicyMembers(ctx context.Context, in *request.ReplacePolicyMembersReq, opts ...grpc.CallOption) (*response.ReplacePolicyMembersResp, error) {
	out := new(response.ReplacePolicyMembersResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/ReplacePolicyMembers", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) RemovePolicyMembers(ctx context.Context, in *request.RemovePolicyMembersReq, opts ...grpc.CallOption) (*response.RemovePolicyMembersResp, error) {
	out := new(response.RemovePolicyMembersResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/RemovePolicyMembers", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) AddPolicyMembers(ctx context.Context, in *request.AddPolicyMembersReq, opts ...grpc.CallOption) (*response.AddPolicyMembersResp, error) {
	out := new(response.AddPolicyMembersResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/AddPolicyMembers", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) CreateRole(ctx context.Context, in *request.CreateRoleReq, opts ...grpc.CallOption) (*response.CreateRoleResp, error) {
	out := new(response.CreateRoleResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/CreateRole", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) ListRoles(ctx context.Context, in *request.ListRolesReq, opts ...grpc.CallOption) (*response.ListRolesResp, error) {
	out := new(response.ListRolesResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/ListRoles", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) GetRole(ctx context.Context, in *request.GetRoleReq, opts ...grpc.CallOption) (*response.GetRoleResp, error) {
	out := new(response.GetRoleResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/GetRole", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) DeleteRole(ctx context.Context, in *request.DeleteRoleReq, opts ...grpc.CallOption) (*response.DeleteRoleResp, error) {
	out := new(response.DeleteRoleResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/DeleteRole", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) UpdateRole(ctx context.Context, in *request.UpdateRoleReq, opts ...grpc.CallOption) (*response.UpdateRoleResp, error) {
	out := new(response.UpdateRoleResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/UpdateRole", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) CreateProject(ctx context.Context, in *request.CreateProjectReq, opts ...grpc.CallOption) (*response.CreateProjectResp, error) {
	out := new(response.CreateProjectResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/CreateProject", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) UpdateProject(ctx context.Context, in *request.UpdateProjectReq, opts ...grpc.CallOption) (*response.UpdateProjectResp, error) {
	out := new(response.UpdateProjectResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/UpdateProject", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) GetProject(ctx context.Context, in *request.GetProjectReq, opts ...grpc.CallOption) (*response.GetProjectResp, error) {
	out := new(response.GetProjectResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/GetProject", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) ListProjects(ctx context.Context, in *request.ListProjectsReq, opts ...grpc.CallOption) (*response.ListProjectsResp, error) {
	out := new(response.ListProjectsResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/ListProjects", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) DeleteProject(ctx context.Context, in *request.DeleteProjectReq, opts ...grpc.CallOption) (*response.DeleteProjectResp, error) {
	out := new(response.DeleteProjectResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/DeleteProject", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

func (c *policiesClient) IntrospectAllProjects(ctx context.Context, in *request.ListProjectsReq, opts ...grpc.CallOption) (*response.ListProjectsResp, error) {
	out := new(response.ListProjectsResp)
	err := c.cc.Invoke(ctx, "/chef.automate.api.iam.v2.Policies/IntrospectAllProjects", in, out, opts...)
	if err != nil {
		return nil, err
	}
	return out, nil
}

// PoliciesServer is the server API for Policies service.
type PoliciesServer interface {
	// Creates a custom policy
	//
	// Creates a custom IAM policy used to control permissions in Automate.
	// A policy is composed of one or more statements that grant permissions to a set of members.
	// Each statement contains a role as well as a list of projects.
	//
	// The role defines a set of actions that the statement is scoped to.
	// The project list defines the set of resources that the statement is scoped to.
	// Pass `"projects": ["*"]` to scope a statement to every project.
	//
	// A policy's *top-level* projects list defines which projects the policy belongs to (for filtering policies by their projects),
	// whereas the *statement-level* projects list defines which projects the statement applies to.
	//
	// The example creates a new policy not associated with any project (because the top-level `projects` property is empty) that grants the `viewer` role
	// on a few projects for all LDAP teams and a custom role `qa` on a specific project.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policies:create
	CreatePolicy(context.Context, *request.CreatePolicyReq) (*response.CreatePolicyResp, error)
	// Gets a policy
	//
	// Returns the details for a policy.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policies:get
	GetPolicy(context.Context, *request.GetPolicyReq) (*response.GetPolicyResp, error)
	// Lists all policies
	//
	// Lists all policies.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policies:list
	ListPolicies(context.Context, *request.ListPoliciesReq) (*response.ListPoliciesResp, error)
	// Deletes a custom policy
	//
	// Deletes a specified custom policy. You cannot delete Chef-managed policies.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policies:delete
	DeletePolicy(context.Context, *request.DeletePolicyReq) (*response.DeletePolicyResp, error)
	// Updates a custom policy
	//
	// This operation overwrites all fields excepting ID,
	// including those omitted from the request, so be sure to specify all properties.
	// Properties that you do not include are reset to empty values.
	// The only exception is the policy ID, which is immutable; it can only be set at creation time.
	//
	// While you can use this endpoint to update members on a policy, if that is the only
	// property you wish to modify you might find it more convenient to use one of these endpoints instead:
	// Add policy members, Remove policy members, or Replace policy members.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policies:update
	UpdatePolicy(context.Context, *request.UpdatePolicyReq) (*response.UpdatePolicyResp, error)
	// Gets IAM version
	//
	// Returns the major and minor version of IAM that your automate installation is running.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policies:get
	GetPolicyVersion(context.Context, *request.GetPolicyVersionReq) (*response.GetPolicyVersionResp, error)
	// Lists policy members
	//
	// Lists all members of a specific policy.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policyMembers:get
	ListPolicyMembers(context.Context, *request.ListPolicyMembersReq) (*response.ListPolicyMembersResp, error)
	// Replaces policy members
	//
	// Replaces the entire member list of a specific policy with a new list.
	// You may use this endpoint to update members of either Custom or Chef-managed policies.
	//
	// Ensure each element of the members array is in the correct
	// [Member Expression](https://automate.chef.io/docs/iam-v2-guide/#member-expressions) format.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policyMembers:update
	ReplacePolicyMembers(context.Context, *request.ReplacePolicyMembersReq) (*response.ReplacePolicyMembersResp, error)
	// Removes policy members
	//
	// Removes members from the member list of a specific policy. Silently ignores
	// members that are not already part of the member list.
	// You may use this endpoint to update members of either Custom or Chef-managed policies.
	//
	// Ensure each element of the members array is in the correct
	// [Member Expression](https://automate.chef.io/docs/iam-v2-guide/#member-expressions) format.
	//
	// The removed members will still exist within Chef Automate, but are no longer associated with this policy.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policyMembers:delete
	RemovePolicyMembers(context.Context, *request.RemovePolicyMembersReq) (*response.RemovePolicyMembersResp, error)
	// Adds policy members
	//
	// Adds members to the member list of a specific policy.
	// You may use this endpoint to update members of either Custom or Chef-managed policies.
	//
	// Ensure each element of the members array is in the correct
	// [Member Expression](https://automate.chef.io/docs/iam-v2-guide/#member-expressions) format.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:policyMembers:create
	AddPolicyMembers(context.Context, *request.AddPolicyMembersReq) (*response.AddPolicyMembersResp, error)
	// Creates a custom role
	//
	// Creates a new role to be used in the policies that control permissions in Automate.
	//
	// A role defines the scope of actions in a policy statement.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:roles:create
	CreateRole(context.Context, *request.CreateRoleReq) (*response.CreateRoleResp, error)
	// Lists all roles
	//
	// Lists all *Chef-managed* and *Custom* roles.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:roles:list
	ListRoles(context.Context, *request.ListRolesReq) (*response.ListRolesResp, error)
	// Gets a role
	//
	// Returns the details for a role.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:roles:get
	GetRole(context.Context, *request.GetRoleReq) (*response.GetRoleResp, error)
	// Deletes a custom role
	//
	// Deletes a specified custom role (you cannot delete Chef-managed roles) and remove it from any statements that may have been using it.
	// If such a statement has no other associated actions, the statement is deleted as well.
	// Similarly, if that statement removal results in a policy with no other statements,
	// that policy is removed as well.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:roles:delete
	DeleteRole(context.Context, *request.DeleteRoleReq) (*response.DeleteRoleResp, error)
	// Updates a custom role
	//
	// This operation overwrites all fields excepting ID,
	// including those omitted from the request, so be sure to specify all properties.
	// Properties that you do not include are reset to empty values.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:roles:update
	UpdateRole(context.Context, *request.UpdateRoleReq) (*response.UpdateRoleResp, error)
	// Creates a project
	//
	// Creates a new project to be used in the policies that control permissions in Automate.
	//
	// A project defines the scope of resources in a policy statement. Resources can be in more than one project.
	//
	// When a project is created, the system also creates three policies associated with the new project,
	// one for each of the following roles: editor, viewer, and project owner.
	// You can optionally pass the `skip_policies` flag set to `true` to skip the creation of these policies.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:projects:create
	CreateProject(context.Context, *request.CreateProjectReq) (*response.CreateProjectResp, error)
	// Updates a project
	//
	// Updates the name of an existing project.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:projects:update
	UpdateProject(context.Context, *request.UpdateProjectReq) (*response.UpdateProjectResp, error)
	// Gets a project
	//
	// Returns the details for a project.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:projects:get
	GetProject(context.Context, *request.GetProjectReq) (*response.GetProjectResp, error)
	// Lists all projects
	//
	// Lists all projects.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:projects:list
	ListProjects(context.Context, *request.ListProjectsReq) (*response.ListProjectsResp, error)
	// Deletes a project
	//
	// Deletes a project from any resources tagged with it.
	//
	// Also deletes this project from any project list in any policy statements.
	// If the resulting project list for a given statement is empty, it is deleted.
	// If the resulting policy has no statements, it is also deleted.
	//
	// Authorization Action:
	// ```
	// ```
	//
	//iam:projects:delete
	DeleteProject(context.Context, *request.DeleteProjectReq) (*response.DeleteProjectResp, error)
	IntrospectAllProjects(context.Context, *request.ListProjectsReq) (*response.ListProjectsResp, error)
}

// UnimplementedPoliciesServer can be embedded to have forward compatible implementations.
type UnimplementedPoliciesServer struct {
}

func (*UnimplementedPoliciesServer) CreatePolicy(context.Context, *request.CreatePolicyReq) (*response.CreatePolicyResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreatePolicy not implemented")
}
func (*UnimplementedPoliciesServer) GetPolicy(context.Context, *request.GetPolicyReq) (*response.GetPolicyResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetPolicy not implemented")
}
func (*UnimplementedPoliciesServer) ListPolicies(context.Context, *request.ListPoliciesReq) (*response.ListPoliciesResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListPolicies not implemented")
}
func (*UnimplementedPoliciesServer) DeletePolicy(context.Context, *request.DeletePolicyReq) (*response.DeletePolicyResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeletePolicy not implemented")
}
func (*UnimplementedPoliciesServer) UpdatePolicy(context.Context, *request.UpdatePolicyReq) (*response.UpdatePolicyResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UpdatePolicy not implemented")
}
func (*UnimplementedPoliciesServer) GetPolicyVersion(context.Context, *request.GetPolicyVersionReq) (*response.GetPolicyVersionResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetPolicyVersion not implemented")
}
func (*UnimplementedPoliciesServer) ListPolicyMembers(context.Context, *request.ListPolicyMembersReq) (*response.ListPolicyMembersResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListPolicyMembers not implemented")
}
func (*UnimplementedPoliciesServer) ReplacePolicyMembers(context.Context, *request.ReplacePolicyMembersReq) (*response.ReplacePolicyMembersResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ReplacePolicyMembers not implemented")
}
func (*UnimplementedPoliciesServer) RemovePolicyMembers(context.Context, *request.RemovePolicyMembersReq) (*response.RemovePolicyMembersResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method RemovePolicyMembers not implemented")
}
func (*UnimplementedPoliciesServer) AddPolicyMembers(context.Context, *request.AddPolicyMembersReq) (*response.AddPolicyMembersResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method AddPolicyMembers not implemented")
}
func (*UnimplementedPoliciesServer) CreateRole(context.Context, *request.CreateRoleReq) (*response.CreateRoleResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateRole not implemented")
}
func (*UnimplementedPoliciesServer) ListRoles(context.Context, *request.ListRolesReq) (*response.ListRolesResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListRoles not implemented")
}
func (*UnimplementedPoliciesServer) GetRole(context.Context, *request.GetRoleReq) (*response.GetRoleResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetRole not implemented")
}
func (*UnimplementedPoliciesServer) DeleteRole(context.Context, *request.DeleteRoleReq) (*response.DeleteRoleResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteRole not implemented")
}
func (*UnimplementedPoliciesServer) UpdateRole(context.Context, *request.UpdateRoleReq) (*response.UpdateRoleResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UpdateRole not implemented")
}
func (*UnimplementedPoliciesServer) CreateProject(context.Context, *request.CreateProjectReq) (*response.CreateProjectResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method CreateProject not implemented")
}
func (*UnimplementedPoliciesServer) UpdateProject(context.Context, *request.UpdateProjectReq) (*response.UpdateProjectResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method UpdateProject not implemented")
}
func (*UnimplementedPoliciesServer) GetProject(context.Context, *request.GetProjectReq) (*response.GetProjectResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method GetProject not implemented")
}
func (*UnimplementedPoliciesServer) ListProjects(context.Context, *request.ListProjectsReq) (*response.ListProjectsResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method ListProjects not implemented")
}
func (*UnimplementedPoliciesServer) DeleteProject(context.Context, *request.DeleteProjectReq) (*response.DeleteProjectResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method DeleteProject not implemented")
}
func (*UnimplementedPoliciesServer) IntrospectAllProjects(context.Context, *request.ListProjectsReq) (*response.ListProjectsResp, error) {
	return nil, status.Errorf(codes.Unimplemented, "method IntrospectAllProjects not implemented")
}

func RegisterPoliciesServer(s *grpc.Server, srv PoliciesServer) {
	s.RegisterService(&_Policies_serviceDesc, srv)
}

func _Policies_CreatePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.CreatePolicyReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).CreatePolicy(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/CreatePolicy",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).CreatePolicy(ctx, req.(*request.CreatePolicyReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_GetPolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.GetPolicyReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).GetPolicy(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/GetPolicy",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).GetPolicy(ctx, req.(*request.GetPolicyReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_ListPolicies_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.ListPoliciesReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).ListPolicies(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/ListPolicies",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).ListPolicies(ctx, req.(*request.ListPoliciesReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_DeletePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.DeletePolicyReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).DeletePolicy(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/DeletePolicy",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).DeletePolicy(ctx, req.(*request.DeletePolicyReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_UpdatePolicy_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.UpdatePolicyReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).UpdatePolicy(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/UpdatePolicy",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).UpdatePolicy(ctx, req.(*request.UpdatePolicyReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_GetPolicyVersion_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.GetPolicyVersionReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).GetPolicyVersion(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/GetPolicyVersion",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).GetPolicyVersion(ctx, req.(*request.GetPolicyVersionReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_ListPolicyMembers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.ListPolicyMembersReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).ListPolicyMembers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/ListPolicyMembers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).ListPolicyMembers(ctx, req.(*request.ListPolicyMembersReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_ReplacePolicyMembers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.ReplacePolicyMembersReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).ReplacePolicyMembers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/ReplacePolicyMembers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).ReplacePolicyMembers(ctx, req.(*request.ReplacePolicyMembersReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_RemovePolicyMembers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.RemovePolicyMembersReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).RemovePolicyMembers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/RemovePolicyMembers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).RemovePolicyMembers(ctx, req.(*request.RemovePolicyMembersReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_AddPolicyMembers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.AddPolicyMembersReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).AddPolicyMembers(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/AddPolicyMembers",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).AddPolicyMembers(ctx, req.(*request.AddPolicyMembersReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_CreateRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.CreateRoleReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).CreateRole(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/CreateRole",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).CreateRole(ctx, req.(*request.CreateRoleReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_ListRoles_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.ListRolesReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).ListRoles(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/ListRoles",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).ListRoles(ctx, req.(*request.ListRolesReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_GetRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.GetRoleReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).GetRole(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/GetRole",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).GetRole(ctx, req.(*request.GetRoleReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_DeleteRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.DeleteRoleReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).DeleteRole(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/DeleteRole",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).DeleteRole(ctx, req.(*request.DeleteRoleReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_UpdateRole_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.UpdateRoleReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).UpdateRole(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/UpdateRole",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).UpdateRole(ctx, req.(*request.UpdateRoleReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_CreateProject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.CreateProjectReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).CreateProject(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/CreateProject",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).CreateProject(ctx, req.(*request.CreateProjectReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_UpdateProject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.UpdateProjectReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).UpdateProject(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/UpdateProject",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).UpdateProject(ctx, req.(*request.UpdateProjectReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_GetProject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.GetProjectReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).GetProject(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/GetProject",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).GetProject(ctx, req.(*request.GetProjectReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_ListProjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.ListProjectsReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).ListProjects(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/ListProjects",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).ListProjects(ctx, req.(*request.ListProjectsReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_DeleteProject_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.DeleteProjectReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).DeleteProject(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/DeleteProject",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).DeleteProject(ctx, req.(*request.DeleteProjectReq))
	}
	return interceptor(ctx, in, info, handler)
}

func _Policies_IntrospectAllProjects_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
	in := new(request.ListProjectsReq)
	if err := dec(in); err != nil {
		return nil, err
	}
	if interceptor == nil {
		return srv.(PoliciesServer).IntrospectAllProjects(ctx, in)
	}
	info := &grpc.UnaryServerInfo{
		Server:     srv,
		FullMethod: "/chef.automate.api.iam.v2.Policies/IntrospectAllProjects",
	}
	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
		return srv.(PoliciesServer).IntrospectAllProjects(ctx, req.(*request.ListProjectsReq))
	}
	return interceptor(ctx, in, info, handler)
}

var _Policies_serviceDesc = grpc.ServiceDesc{
	ServiceName: "chef.automate.api.iam.v2.Policies",
	HandlerType: (*PoliciesServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "CreatePolicy",
			Handler:    _Policies_CreatePolicy_Handler,
		},
		{
			MethodName: "GetPolicy",
			Handler:    _Policies_GetPolicy_Handler,
		},
		{
			MethodName: "ListPolicies",
			Handler:    _Policies_ListPolicies_Handler,
		},
		{
			MethodName: "DeletePolicy",
			Handler:    _Policies_DeletePolicy_Handler,
		},
		{
			MethodName: "UpdatePolicy",
			Handler:    _Policies_UpdatePolicy_Handler,
		},
		{
			MethodName: "GetPolicyVersion",
			Handler:    _Policies_GetPolicyVersion_Handler,
		},
		{
			MethodName: "ListPolicyMembers",
			Handler:    _Policies_ListPolicyMembers_Handler,
		},
		{
			MethodName: "ReplacePolicyMembers",
			Handler:    _Policies_ReplacePolicyMembers_Handler,
		},
		{
			MethodName: "RemovePolicyMembers",
			Handler:    _Policies_RemovePolicyMembers_Handler,
		},
		{
			MethodName: "AddPolicyMembers",
			Handler:    _Policies_AddPolicyMembers_Handler,
		},
		{
			MethodName: "CreateRole",
			Handler:    _Policies_CreateRole_Handler,
		},
		{
			MethodName: "ListRoles",
			Handler:    _Policies_ListRoles_Handler,
		},
		{
			MethodName: "GetRole",
			Handler:    _Policies_GetRole_Handler,
		},
		{
			MethodName: "DeleteRole",
			Handler:    _Policies_DeleteRole_Handler,
		},
		{
			MethodName: "UpdateRole",
			Handler:    _Policies_UpdateRole_Handler,
		},
		{
			MethodName: "CreateProject",
			Handler:    _Policies_CreateProject_Handler,
		},
		{
			MethodName: "UpdateProject",
			Handler:    _Policies_UpdateProject_Handler,
		},
		{
			MethodName: "GetProject",
			Handler:    _Policies_GetProject_Handler,
		},
		{
			MethodName: "ListProjects",
			Handler:    _Policies_ListProjects_Handler,
		},
		{
			MethodName: "DeleteProject",
			Handler:    _Policies_DeleteProject_Handler,
		},
		{
			MethodName: "IntrospectAllProjects",
			Handler:    _Policies_IntrospectAllProjects_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "external/iam/v2/policy.proto",
}
