or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

api-management.mdindex.mdpolicy-management.mdservice-management.md

api-management.mddocs/

0

# API Management

1

2

Comprehensive API lifecycle management including API creation, versioning, revisions, operations, schemas, policies, and export/import capabilities. Supports REST, SOAP, GraphQL, and WebSocket APIs with full OpenAPI specification support.

3

4

## Capabilities

5

6

### Core API Operations

7

8

Fundamental API management operations for creating, reading, updating, and deleting APIs within API Management services.

9

10

```python { .api }

11

class ApiOperations:

12

def get(self, resource_group_name: str, service_name: str, api_id: str, **kwargs) -> ApiContract: ...

13

def begin_create_or_update(self, resource_group_name: str, service_name: str, api_id: str, parameters: ApiCreateOrUpdateParameter, if_match: Optional[str] = None, **kwargs) -> LROPoller[ApiContract]: ...

14

def begin_update(self, resource_group_name: str, service_name: str, api_id: str, if_match: str, parameters: ApiUpdateContract, **kwargs) -> LROPoller[ApiContract]: ...

15

def delete(self, resource_group_name: str, service_name: str, api_id: str, if_match: str, delete_revisions: Optional[bool] = None, **kwargs) -> None: ...

16

def list_by_service(self, resource_group_name: str, service_name: str, filter: Optional[str] = None, top: Optional[int] = None, skip: Optional[int] = None, tags: Optional[str] = None, expand_api_version_set: Optional[bool] = None, **kwargs) -> ItemPaged[ApiContract]: ...

17

def get_entity_tag(self, resource_group_name: str, service_name: str, api_id: str, **kwargs) -> bool: ...

18

```

19

20

### API Revision Management

21

22

API revision system for managing different versions of APIs during development and deployment cycles.

23

24

```python { .api }

25

class ApiRevisionOperations:

26

def list_by_service(self, resource_group_name: str, service_name: str, api_id: str, filter: Optional[str] = None, top: Optional[int] = None, skip: Optional[int] = None, **kwargs) -> ItemPaged[ApiRevisionContract]: ...

27

```

28

29

### API Release Management

30

31

API release management for promoting API revisions to production and managing release cycles.

32

33

```python { .api }

34

class ApiReleaseOperations:

35

def get(self, resource_group_name: str, service_name: str, api_id: str, release_id: str, **kwargs) -> ApiReleaseContract: ...

36

def begin_create_or_update(self, resource_group_name: str, service_name: str, api_id: str, release_id: str, parameters: ApiReleaseContract, if_match: Optional[str] = None, **kwargs) -> LROPoller[ApiReleaseContract]: ...

37

def begin_update(self, resource_group_name: str, service_name: str, api_id: str, release_id: str, if_match: str, parameters: ApiReleaseContract, **kwargs) -> LROPoller[ApiReleaseContract]: ...

38

def delete(self, resource_group_name: str, service_name: str, api_id: str, release_id: str, if_match: str, **kwargs) -> None: ...

39

def list_by_service(self, resource_group_name: str, service_name: str, api_id: str, filter: Optional[str] = None, top: Optional[int] = None, skip: Optional[int] = None, **kwargs) -> ItemPaged[ApiReleaseContract]: ...

40

def get_entity_tag(self, resource_group_name: str, service_name: str, api_id: str, release_id: str, **kwargs) -> bool: ...

41

```

42

43

### API Operation Management

44

45

Management of individual operations (endpoints) within APIs, including operation-specific policies and configurations.

46

47

```python { .api }

48

class ApiOperationOperations:

49

def get(self, resource_group_name: str, service_name: str, api_id: str, operation_id: str, **kwargs) -> OperationContract: ...

50

def begin_create_or_update(self, resource_group_name: str, service_name: str, api_id: str, operation_id: str, parameters: OperationContract, if_match: Optional[str] = None, **kwargs) -> LROPoller[OperationContract]: ...

51

def begin_update(self, resource_group_name: str, service_name: str, api_id: str, operation_id: str, if_match: str, parameters: OperationUpdateContract, **kwargs) -> LROPoller[OperationContract]: ...

52

def delete(self, resource_group_name: str, service_name: str, api_id: str, operation_id: str, if_match: str, **kwargs) -> None: ...

53

def list_by_api(self, resource_group_name: str, service_name: str, api_id: str, filter: Optional[str] = None, top: Optional[int] = None, skip: Optional[int] = None, tags: Optional[str] = None, **kwargs) -> ItemPaged[OperationContract]: ...

54

def get_entity_tag(self, resource_group_name: str, service_name: str, api_id: str, operation_id: str, **kwargs) -> bool: ...

55

```

56

57

### API Schema Management

58

59

Schema management for API documentation and validation, supporting OpenAPI, JSON Schema, and other schema formats.

60

61

```python { .api }

62

class ApiSchemaOperations:

63

def get(self, resource_group_name: str, service_name: str, api_id: str, schema_id: str, **kwargs) -> SchemaContract: ...

64

def begin_create_or_update(self, resource_group_name: str, service_name: str, api_id: str, schema_id: str, parameters: SchemaContract, if_match: Optional[str] = None, **kwargs) -> LROPoller[SchemaContract]: ...

65

def delete(self, resource_group_name: str, service_name: str, api_id: str, schema_id: str, if_match: str, force: Optional[bool] = None, **kwargs) -> None: ...

66

def list_by_api(self, resource_group_name: str, service_name: str, api_id: str, filter: Optional[str] = None, top: Optional[int] = None, skip: Optional[int] = None, **kwargs) -> ItemPaged[SchemaContract]: ...

67

def get_entity_tag(self, resource_group_name: str, service_name: str, api_id: str, schema_id: str, **kwargs) -> bool: ...

68

```

69

70

### API Policy Management

71

72

API-level policy management for implementing cross-cutting concerns like authentication, rate limiting, and transformations.

73

74

```python { .api }

75

class ApiPolicyOperations:

76

def get(self, resource_group_name: str, service_name: str, api_id: str, policy_id: str, format: Optional[str] = None, **kwargs) -> PolicyContract: ...

77

def create_or_update(self, resource_group_name: str, service_name: str, api_id: str, policy_id: str, parameters: PolicyContract, if_match: Optional[str] = None, **kwargs) -> PolicyContract: ...

78

def delete(self, resource_group_name: str, service_name: str, api_id: str, policy_id: str, if_match: str, **kwargs) -> None: ...

79

def list_by_api(self, resource_group_name: str, service_name: str, api_id: str, **kwargs) -> PolicyCollection: ...

80

def get_entity_tag(self, resource_group_name: str, service_name: str, api_id: str, policy_id: str, **kwargs) -> bool: ...

81

```

82

83

### API Export and Import

84

85

Export APIs to various formats (OpenAPI, WADL, WSDL) and import APIs from external sources.

86

87

```python { .api }

88

class ApiExportOperations:

89

def get(self, resource_group_name: str, service_name: str, api_id: str, format_param: str, export_param: str, **kwargs) -> ApiExportResult: ...

90

```

91

92

### API Version Set Management

93

94

Management of API version sets for organizing and versioning related APIs.

95

96

```python { .api }

97

class ApiVersionSetOperations:

98

def get(self, resource_group_name: str, service_name: str, version_set_id: str, **kwargs) -> ApiVersionSetContract: ...

99

def begin_create_or_update(self, resource_group_name: str, service_name: str, version_set_id: str, parameters: ApiVersionSetContract, if_match: Optional[str] = None, **kwargs) -> LROPoller[ApiVersionSetContract]: ...

100

def begin_update(self, resource_group_name: str, service_name: str, version_set_id: str, if_match: str, parameters: ApiVersionSetUpdateParameters, **kwargs) -> LROPoller[ApiVersionSetContract]: ...

101

def delete(self, resource_group_name: str, service_name: str, version_set_id: str, if_match: str, **kwargs) -> None: ...

102

def list_by_service(self, resource_group_name: str, service_name: str, filter: Optional[str] = None, top: Optional[int] = None, skip: Optional[int] = None, **kwargs) -> ItemPaged[ApiVersionSetContract]: ...

103

def get_entity_tag(self, resource_group_name: str, service_name: str, version_set_id: str, **kwargs) -> bool: ...

104

```

105

106

### API Documentation Management

107

108

Wiki and documentation management for APIs.

109

110

```python { .api }

111

class ApiWikiOperations:

112

def get(self, resource_group_name: str, service_name: str, api_id: str, **kwargs) -> WikiContract: ...

113

def begin_create_or_update(self, resource_group_name: str, service_name: str, api_id: str, parameters: WikiContract, if_match: Optional[str] = None, **kwargs) -> LROPoller[WikiContract]: ...

114

def begin_update(self, resource_group_name: str, service_name: str, api_id: str, if_match: str, parameters: WikiUpdateContract, **kwargs) -> LROPoller[WikiContract]: ...

115

def delete(self, resource_group_name: str, service_name: str, api_id: str, if_match: str, **kwargs) -> None: ...

116

def get_entity_tag(self, resource_group_name: str, service_name: str, api_id: str, **kwargs) -> bool: ...

117

```

118

119

### GraphQL API Support

120

121

Specialized operations for GraphQL API management including resolver and policy management.

122

123

```python { .api }

124

class GraphQLApiResolverOperations:

125

def get(self, resource_group_name: str, service_name: str, api_id: str, resolver_id: str, **kwargs) -> ResolverContract: ...

126

def begin_create_or_update(self, resource_group_name: str, service_name: str, api_id: str, resolver_id: str, parameters: ResolverContract, if_match: Optional[str] = None, **kwargs) -> LROPoller[ResolverContract]: ...

127

def begin_update(self, resource_group_name: str, service_name: str, api_id: str, resolver_id: str, if_match: str, parameters: ResolverUpdateContract, **kwargs) -> LROPoller[ResolverContract]: ...

128

def delete(self, resource_group_name: str, service_name: str, api_id: str, resolver_id: str, if_match: str, **kwargs) -> None: ...

129

def list_by_api(self, resource_group_name: str, service_name: str, api_id: str, filter: Optional[str] = None, top: Optional[int] = None, skip: Optional[int] = None, **kwargs) -> ItemPaged[ResolverContract]: ...

130

def get_entity_tag(self, resource_group_name: str, service_name: str, api_id: str, resolver_id: str, **kwargs) -> bool: ...

131

132

class GraphQLApiResolverPolicyOperations:

133

def get(self, resource_group_name: str, service_name: str, api_id: str, resolver_id: str, policy_id: str, format: Optional[str] = None, **kwargs) -> PolicyContract: ...

134

def create_or_update(self, resource_group_name: str, service_name: str, api_id: str, resolver_id: str, policy_id: str, parameters: PolicyContract, if_match: Optional[str] = None, **kwargs) -> PolicyContract: ...

135

def delete(self, resource_group_name: str, service_name: str, api_id: str, resolver_id: str, policy_id: str, if_match: str, **kwargs) -> None: ...

136

def list_by_resolver(self, resource_group_name: str, service_name: str, api_id: str, resolver_id: str, **kwargs) -> PolicyCollection: ...

137

def get_entity_tag(self, resource_group_name: str, service_name: str, api_id: str, resolver_id: str, policy_id: str, **kwargs) -> bool: ...

138

```

139

140

## Usage Examples

141

142

### Creating a New API

143

144

```python

145

from azure.mgmt.apimanagement.models import ApiCreateOrUpdateParameter, ApiType, Protocol

146

147

# Create API from OpenAPI specification

148

api_params = ApiCreateOrUpdateParameter(

149

display_name="Pet Store API",

150

service_url="https://petstore.swagger.io/v2",

151

path="petstore",

152

protocols=[Protocol.HTTPS],

153

api_type=ApiType.HTTP,

154

format="openapi+json",

155

value="https://petstore.swagger.io/v2/swagger.json" # OpenAPI spec URL

156

)

157

158

# Create the API

159

api = client.api.begin_create_or_update(

160

resource_group_name="my-rg",

161

service_name="my-apim",

162

api_id="petstore-api",

163

parameters=api_params

164

).result()

165

166

print(f"Created API: {api.display_name}")

167

```

168

169

### Managing API Versions

170

171

```python

172

from azure.mgmt.apimanagement.models import ApiVersionSetContract, VersioningScheme

173

174

# Create version set

175

version_set = ApiVersionSetContract(

176

display_name="Pet Store API Versions",

177

versioning_scheme=VersioningScheme.SEGMENT,

178

version_query_name="version",

179

description="Versions of the Pet Store API"

180

)

181

182

version_set = client.api_version_set.begin_create_or_update(

183

resource_group_name="my-rg",

184

service_name="my-apim",

185

version_set_id="petstore-versions",

186

parameters=version_set

187

).result()

188

189

# Create versioned API

190

api_v2_params = ApiCreateOrUpdateParameter(

191

display_name="Pet Store API v2",

192

service_url="https://petstore.swagger.io/v2",

193

path="petstore",

194

api_version="v2",

195

api_version_set_id=version_set.id,

196

protocols=[Protocol.HTTPS]

197

)

198

199

api_v2 = client.api.begin_create_or_update(

200

resource_group_name="my-rg",

201

service_name="my-apim",

202

api_id="petstore-api-v2",

203

parameters=api_v2_params

204

).result()

205

```

206

207

### Working with API Operations

208

209

```python

210

from azure.mgmt.apimanagement.models import OperationContract, RequestContract, ResponseContract

211

212

# Create a new operation

213

operation = OperationContract(

214

display_name="Get Pet by ID",

215

method="GET",

216

url_template="/pet/{petId}",

217

template_parameters=[

218

ParameterContract(

219

name="petId",

220

type="integer",

221

required=True,

222

description="ID of pet to return"

223

)

224

],

225

responses=[

226

ResponseContract(

227

status_code=200,

228

description="Successful operation",

229

representations=[

230

RepresentationContract(

231

content_type="application/json"

232

)

233

]

234

),

235

ResponseContract(

236

status_code=404,

237

description="Pet not found"

238

)

239

]

240

)

241

242

# Add operation to API

243

operation = client.api_operation.begin_create_or_update(

244

resource_group_name="my-rg",

245

service_name="my-apim",

246

api_id="petstore-api",

247

operation_id="get-pet-by-id",

248

parameters=operation

249

).result()

250

```

251

252

## Types

253

254

### Core API Types

255

256

```python { .api }

257

class ApiContract:

258

id: Optional[str]

259

name: Optional[str]

260

type: Optional[str]

261

properties: Optional[ApiContractProperties]

262

263

class ApiCreateOrUpdateParameter:

264

properties: Optional[ApiCreateOrUpdateProperties]

265

266

class ApiContractProperties:

267

display_name: Optional[str]

268

service_url: Optional[str]

269

path: Optional[str]

270

protocols: Optional[List[Protocol]]

271

api_version: Optional[str]

272

api_version_description: Optional[str]

273

api_version_set_id: Optional[str]

274

subscription_required: Optional[bool]

275

subscription_key_parameter_names: Optional[SubscriptionKeyParameterNamesContract]

276

api_type: Optional[ApiType]

277

api_revision: Optional[str]

278

api_revision_description: Optional[str]

279

source_api_id: Optional[str]

280

is_current: Optional[bool]

281

is_online: Optional[bool]

282

description: Optional[str]

283

authentication_settings: Optional[AuthenticationSettingsContract]

284

contact: Optional[ApiContactInformation]

285

license: Optional[ApiLicenseInformation]

286

terms_of_service_url: Optional[str]

287

288

class OperationContract:

289

id: Optional[str]

290

name: Optional[str]

291

type: Optional[str]

292

properties: Optional[OperationContractProperties]

293

294

class OperationContractProperties:

295

display_name: Optional[str]

296

method: Optional[str]

297

url_template: Optional[str]

298

template_parameters: Optional[List[ParameterContract]]

299

description: Optional[str]

300

request: Optional[RequestContract]

301

responses: Optional[List[ResponseContract]]

302

policies: Optional[str]

303

```

304

305

### API Enums

306

307

```python { .api }

308

class ApiType:

309

HTTP = "http"

310

SOAP = "soap"

311

WEBSOCKET = "websocket"

312

GRAPHQL = "graphql"

313

314

class Protocol:

315

HTTP = "http"

316

HTTPS = "https"

317

WS = "ws"

318

WSS = "wss"

319

320

class ContentFormat:

321

WADL_XML = "wadl-xml"

322

WADL_LINK_JSON = "wadl-link-json"

323

SWAGGER_JSON = "swagger-json"

324

SWAGGER_LINK_JSON = "swagger-link-json"

325

WSDL = "wsdl"

326

WSDL_LINK = "wsdl-link"

327

OPENAPI = "openapi"

328

OPENAPI_JSON = "openapi+json"

329

OPENAPI_LINK = "openapi-link"

330

OPENAPI_JSON_LINK = "openapi+json-link"

331

GRAPHQL_LINK = "graphql-link"

332

333

class VersioningScheme:

334

SEGMENT = "Segment"

335

QUERY = "Query"

336

HEADER = "Header"

337

338

class SoapApiType:

339

SOAP_TO_REST = "SoapToRest"

340

SOAP_PASS_THROUGH = "SoapPassThrough"

341

```