or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

index.mdpolicy-events.mdpolicy-metadata.mdpolicy-restrictions.mdpolicy-states.mdpolicy-tracked-resources.mdremediations.md

policy-events.mddocs/

0

# Policy Events Operations

1

2

## Overview

3

4

Policy Events operations enable querying policy evaluation events across different Azure scopes. These operations provide detailed information about policy evaluations, including when they occurred and their results.

5

6

## Core Functionality

7

8

### Query Operations

9

10

#### list_query_results_for_management_group

11

12

```python

13

def list_query_results_for_management_group(

14

management_group_name: str,

15

query_options: Optional[QueryOptions] = None,

16

**kwargs

17

) -> ItemPaged[PolicyEvent]

18

```

19

{ .api }

20

21

Query policy events for a management group.

22

23

**Parameters:**

24

- `management_group_name`: Management group name

25

- `query_options`: Optional query parameters (top, filter, orderby, select, from, to, apply)

26

27

**Returns:** Paginated collection of PolicyEvent objects

28

29

#### list_query_results_for_subscription

30

31

```python

32

def list_query_results_for_subscription(

33

subscription_id: str,

34

query_options: Optional[QueryOptions] = None,

35

**kwargs

36

) -> ItemPaged[PolicyEvent]

37

```

38

{ .api }

39

40

Query policy events for a subscription.

41

42

**Parameters:**

43

- `subscription_id`: Azure subscription ID

44

- `query_options`: Optional query parameters

45

46

**Returns:** Paginated collection of PolicyEvent objects

47

48

#### list_query_results_for_resource_group

49

50

```python

51

def list_query_results_for_resource_group(

52

subscription_id: str,

53

resource_group_name: str,

54

query_options: Optional[QueryOptions] = None,

55

**kwargs

56

) -> ItemPaged[PolicyEvent]

57

```

58

{ .api }

59

60

Query policy events for a resource group.

61

62

**Parameters:**

63

- `subscription_id`: Azure subscription ID

64

- `resource_group_name`: Resource group name

65

- `query_options`: Optional query parameters

66

67

**Returns:** Paginated collection of PolicyEvent objects

68

69

#### list_query_results_for_resource

70

71

```python

72

def list_query_results_for_resource(

73

resource_id: str,

74

query_options: Optional[QueryOptions] = None,

75

**kwargs

76

) -> ItemPaged[PolicyEvent]

77

```

78

{ .api }

79

80

Query policy events for a specific resource.

81

82

**Parameters:**

83

- `resource_id`: Full Azure resource ID

84

- `query_options`: Optional query parameters

85

86

**Returns:** Paginated collection of PolicyEvent objects

87

88

#### list_query_results_for_policy_set_definition

89

90

```python

91

def list_query_results_for_policy_set_definition(

92

subscription_id: str,

93

policy_set_definition_name: str,

94

query_options: Optional[QueryOptions] = None,

95

**kwargs

96

) -> ItemPaged[PolicyEvent]

97

```

98

{ .api }

99

100

Query policy events for a policy set definition.

101

102

**Parameters:**

103

- `subscription_id`: Azure subscription ID

104

- `policy_set_definition_name`: Policy set definition name

105

- `query_options`: Optional query parameters

106

107

**Returns:** Paginated collection of PolicyEvent objects

108

109

#### list_query_results_for_policy_definition

110

111

```python

112

def list_query_results_for_policy_definition(

113

subscription_id: str,

114

policy_definition_name: str,

115

query_options: Optional[QueryOptions] = None,

116

**kwargs

117

) -> ItemPaged[PolicyEvent]

118

```

119

{ .api }

120

121

Query policy events for a policy definition.

122

123

**Parameters:**

124

- `subscription_id`: Azure subscription ID

125

- `policy_definition_name`: Policy definition name

126

- `query_options`: Optional query parameters

127

128

**Returns:** Paginated collection of PolicyEvent objects

129

130

#### list_query_results_for_subscription_level_policy_assignment

131

132

```python

133

def list_query_results_for_subscription_level_policy_assignment(

134

subscription_id: str,

135

policy_assignment_name: str,

136

query_options: Optional[QueryOptions] = None,

137

**kwargs

138

) -> ItemPaged[PolicyEvent]

139

```

140

{ .api }

141

142

Query policy events for a subscription-level policy assignment.

143

144

**Parameters:**

145

- `subscription_id`: Azure subscription ID

146

- `policy_assignment_name`: Policy assignment name

147

- `query_options`: Optional query parameters

148

149

**Returns:** Paginated collection of PolicyEvent objects

150

151

#### list_query_results_for_resource_group_level_policy_assignment

152

153

```python

154

def list_query_results_for_resource_group_level_policy_assignment(

155

subscription_id: str,

156

resource_group_name: str,

157

policy_assignment_name: str,

158

query_options: Optional[QueryOptions] = None,

159

**kwargs

160

) -> ItemPaged[PolicyEvent]

161

```

162

{ .api }

163

164

Query policy events for a resource group-level policy assignment.

165

166

**Parameters:**

167

- `subscription_id`: Azure subscription ID

168

- `resource_group_name`: Resource group name

169

- `policy_assignment_name`: Policy assignment name

170

- `query_options`: Optional query parameters

171

172

**Returns:** Paginated collection of PolicyEvent objects

173

174

## Related Types

175

176

### PolicyEvent

177

178

```python

179

class PolicyEvent:

180

additional_properties: Optional[Dict[str, Any]]

181

odata_id: Optional[str]

182

odata_context: Optional[str]

183

timestamp: Optional[datetime.datetime]

184

resource_id: Optional[str]

185

policy_assignment_id: Optional[str]

186

policy_definition_id: Optional[str]

187

effective_parameters: Optional[str]

188

is_compliant: Optional[bool]

189

subscription_id: Optional[str]

190

resource_type: Optional[str]

191

resource_location: Optional[str]

192

resource_group: Optional[str]

193

resource_tags: Optional[str]

194

policy_assignment_name: Optional[str]

195

policy_assignment_owner: Optional[str]

196

policy_assignment_parameters: Optional[str]

197

policy_assignment_scope: Optional[str]

198

policy_definition_name: Optional[str]

199

policy_definition_action: Optional[str]

200

policy_definition_category: Optional[str]

201

policy_set_definition_id: Optional[str]

202

policy_set_definition_name: Optional[str]

203

policy_set_definition_owner: Optional[str]

204

policy_set_definition_category: Optional[str]

205

policy_set_definition_parameters: Optional[str]

206

management_group_ids: Optional[str]

207

policy_definition_reference_id: Optional[str]

208

tenant_id: Optional[str]

209

principal_oid: Optional[str]

210

components: Optional[List[ComponentEventDetails]]

211

```

212

{ .api }

213

214

### ComponentEventDetails

215

216

```python

217

class ComponentEventDetails:

218

id: Optional[str]

219

type: Optional[str]

220

name: Optional[str]

221

timestamp: Optional[datetime.datetime]

222

tenant_id: Optional[str]

223

principal_oid: Optional[str]

224

policy_definition_action: Optional[str]

225

additional_properties: Optional[Dict[str, Any]]

226

```

227

{ .api }

228

229

### PolicyEventsQueryResults

230

231

```python

232

class PolicyEventsQueryResults:

233

odata_context: Optional[str]

234

odata_count: Optional[int]

235

odata_next_link: Optional[str]

236

value: Optional[List[PolicyEvent]]

237

```

238

{ .api }

239

240

## Usage Examples

241

242

### Query Recent Policy Events

243

244

```python

245

from datetime import datetime, timedelta

246

247

# Query policy events from the last 24 hours

248

yesterday = datetime.utcnow() - timedelta(days=1)

249

query_options = QueryOptions(

250

filter=f"timestamp ge {yesterday.isoformat()}Z",

251

top=50,

252

orderby="timestamp desc"

253

)

254

255

events = client.policy_events.list_query_results_for_subscription(

256

subscription_id=subscription_id,

257

query_options=query_options

258

)

259

260

for event in events:

261

print(f"Event: {event.timestamp} - {event.resource_id} - Compliant: {event.is_compliant}")

262

```

263

264

### Query Events for Specific Policy

265

266

```python

267

# Query events for a specific policy definition

268

policy_events = client.policy_events.list_query_results_for_policy_definition(

269

subscription_id=subscription_id,

270

policy_definition_name="my-policy-definition",

271

query_options=QueryOptions(top=100)

272

)

273

274

for event in policy_events:

275

print(f"Resource: {event.resource_id}")

276

print(f"Action: {event.policy_definition_action}")

277

print(f"Compliant: {event.is_compliant}")

278

print(f"Timestamp: {event.timestamp}")

279

print("---")

280

```

281

282

### Monitor Non-Compliant Events

283

284

```python

285

# Query only non-compliant events

286

query_options = QueryOptions(

287

filter="isCompliant eq false",

288

orderby="timestamp desc",

289

select="timestamp,resourceId,policyDefinitionName,policyDefinitionAction"

290

)

291

292

non_compliant_events = client.policy_events.list_query_results_for_resource_group(

293

subscription_id=subscription_id,

294

resource_group_name="production-rg",

295

query_options=query_options

296

)

297

298

print("Non-compliant policy events:")

299

for event in non_compliant_events:

300

print(f"- {event.timestamp}: {event.resource_id} failed {event.policy_definition_name}")

301

```

302

303

### Paginate Through Events

304

305

```python

306

# Handle pagination manually

307

events_iterator = client.policy_events.list_query_results_for_subscription(

308

subscription_id=subscription_id,

309

query_options=QueryOptions(top=10) # Small page size for demonstration

310

)

311

312

page_count = 0

313

event_count = 0

314

315

for event in events_iterator:

316

event_count += 1

317

if event_count % 10 == 1: # New page

318

page_count += 1

319

print(f"Page {page_count}:")

320

321

print(f" Event {event_count}: {event.resource_id}")

322

323

# Break after processing a reasonable number

324

if event_count >= 50:

325

break

326

```