{
  "swagger": "2.0",
  "schemes": [
    "https"
  ],
  "host": "management.azure.com",
  "info": {
    "description": "Use these REST APIs for performing operations on entities like API, Product, and Subscription associated with your Azure API Management deployment.",
    "title": "ApiManagementClient",
    "version": "2016-07-07",
    "x-apisguru-categories": [
      "cloud"
    ],
    "x-logo": {
      "url": "https://api.apis.guru/v2/cache/logo/https_assets.onestore.ms_cdnfiles_onestorerolling-1606-01000_shell_v3_images_logo_microsoft.png"
    },
    "x-origin": [
      {
        "format": "swagger",
        "url": "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/apimanagement/resource-manager/Microsoft.ApiManagement/stable/2016-07-07/apimanagement.json",
        "version": "2.0"
      }
    ],
    "x-preferred": false,
    "x-providerName": "azure.com",
    "x-serviceName": "apimanagement",
    "x-tags": [
      "Azure",
      "Microsoft"
    ]
  },
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "securityDefinitions": {
    "azure_auth": {
      "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize",
      "description": "Azure Active Directory OAuth2 Flow.",
      "flow": "implicit",
      "scopes": {
        "user_impersonation": "impersonate your user account"
      },
      "type": "oauth2"
    }
  },
  "security": [
    {
      "azure_auth": [
        "user_impersonation"
      ]
    }
  ],
  "parameters": {
    "ApiIdParameter": {
      "description": "API identifier. Must be unique in the current API Management service instance.",
      "in": "path",
      "maxLength": 256,
      "minLength": 1,
      "name": "apiId",
      "pattern": "^[^*#&+:<>?]+$",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "ApiVersionParameter": {
      "description": "Version of the API to be used with the client request.",
      "in": "query",
      "name": "api-version",
      "required": true,
      "type": "string"
    },
    "BackendIdParameter": {
      "description": "User identifier. Must be unique in the current API Management service instance.",
      "in": "path",
      "maxLength": 255,
      "minLength": 1,
      "name": "backendid",
      "pattern": "^[^*#&+:<>?]+$",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "GroupIdParameter": {
      "description": "Group identifier. Must be unique in the current API Management service instance.",
      "in": "path",
      "maxLength": 256,
      "minLength": 1,
      "name": "groupId",
      "pattern": "^[^*#&+:<>?]+$",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "IdentityProviderNameParameter": {
      "description": "Identity Provider Type identifier.",
      "enum": [
        "facebook",
        "google",
        "microsoft",
        "twitter",
        "aad"
      ],
      "in": "path",
      "name": "identityProviderName",
      "required": true,
      "type": "string",
      "x-ms-enum": {
        "modelAsString": true,
        "name": "IdentityProviderNameType"
      },
      "x-ms-parameter-location": "method"
    },
    "OperationIdParameter": {
      "description": "Operation identifier within an API. Must be unique in the current API Management service instance.",
      "in": "path",
      "maxLength": 256,
      "minLength": 1,
      "name": "operationId",
      "pattern": "^[^*#&+:<>?]+$",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "ProductIdParameter": {
      "description": "Product identifier. Must be unique in the current API Management service instance.",
      "in": "path",
      "maxLength": 256,
      "minLength": 1,
      "name": "productId",
      "pattern": "^[^*#&+:<>?]+$",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "QuotaCounterKeyParameter": {
      "description": "Quota counter key identifier.",
      "in": "path",
      "name": "quotaCounterKey",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "QuotaPeriodKeyParameter": {
      "description": "Quota period key identifier.",
      "in": "path",
      "name": "quotaPeriodKey",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "ResourceGroupNameParameter": {
      "description": "The name of the resource group.",
      "in": "path",
      "name": "resourceGroupName",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "ServiceNameParameter": {
      "description": "The name of the API Management service.",
      "in": "path",
      "maxLength": 50,
      "minLength": 1,
      "name": "serviceName",
      "pattern": "^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    },
    "SkipQueryParameter": {
      "description": "Number of records to skip.",
      "format": "int32",
      "in": "query",
      "minimum": 0,
      "name": "$skip",
      "required": false,
      "type": "integer",
      "x-ms-parameter-location": "method"
    },
    "SubscriptionIdParameter": {
      "description": "Subscription credentials which uniquely identify Microsoft Azure subscription. The subscription ID forms part of the URI for every service call.",
      "in": "path",
      "name": "subscriptionId",
      "required": true,
      "type": "string"
    },
    "TopQueryParameter": {
      "description": "Number of records to return.",
      "format": "int32",
      "in": "query",
      "minimum": 1,
      "name": "$top",
      "required": false,
      "type": "integer",
      "x-ms-parameter-location": "method"
    },
    "UserIdParameter": {
      "description": "User identifier. Must be unique in the current API Management service instance.",
      "in": "path",
      "maxLength": 256,
      "minLength": 1,
      "name": "uid",
      "pattern": "^[^*#&+:<>?]+$",
      "required": true,
      "type": "string",
      "x-ms-parameter-location": "method"
    }
  },
  "paths": {
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis": {
      "get": {
        "description": "Lists all APIs of the API Management service instance.",
        "externalDocs": {
          "url": "https://msdn.microsoft.com/en-us/library/azure/dn781423.aspx"
        },
        "operationId": "Apis_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "| Field       | Supported operators    | Supported functions               |\n|-------------|------------------------|-----------------------------------|\n| id          | ge, le, eq, ne, gt, lt | substringof, startswith, endswith |\n| name        | ge, le, eq, ne, gt, lt | substringof, startswith, endswith |\n| description | ge, le, eq, ne, gt, lt | substringof, startswith, endswith |\n| serviceUrl  | ge, le, eq, ne, gt, lt | substringof, startswith, endswith |\n| path        | ge, le, eq, ne, gt, lt | substringof, startswith, endswith |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Paged Result response of Apis.",
            "schema": {
              "$ref": "#/definitions/ApiCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Apis"
        ],
        "x-ms-odata": "#/definitions/ApiContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}": {
      "delete": {
        "description": "Deletes the specified API of the API Management service instance.",
        "operationId": "Apis_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "description": "ETag of the API Entity. ETag should match the current entity state from the header response of the GET request or it should be * for unconditional update.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The API was successfully deleted."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Apis"
        ]
      },
      "get": {
        "description": "Gets the details of the API specified by its identifier.",
        "operationId": "Apis_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "produces": [
          "application/json",
          "application/vnd.sun.wadl+xml",
          "application/vnd.swagger.doc+json",
          "application/wsdl+xml"
        ],
        "responses": {
          "200": {
            "description": "The response body contains the specified API entity.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/ApiContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Apis"
        ]
      },
      "patch": {
        "description": "Updates the specified API of the API Management service instance.",
        "operationId": "Apis_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "description": "Patch parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PatchParameters"
            }
          },
          {
            "description": "ETag of the API entity. ETag should match the current entity state in the header response of the GET request or it should be * for unconditional update.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The API was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Apis"
        ]
      },
      "put": {
        "description": "Creates new or updates existing specified API of the API Management service instance.",
        "operationId": "Apis_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "description": "Create or update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ApiContract"
            }
          },
          {
            "description": "ETag of the Api Entity. For Create Api Etag should not be specified. For Update Etag should match the existing Entity or it can be * for unconditional update.",
            "in": "header",
            "name": "If-Match",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "API was successfully created."
          },
          "204": {
            "description": "API was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Apis"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations": {
      "get": {
        "description": "Lists a collection of the operations for the specified API.",
        "operationId": "ApiOperations_ListByApi",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "description": "| Field       | Supported operators    | Supported functions               |\n|-------------|------------------------|-----------------------------------|\n| name        | ge, le, eq, ne, gt, lt | substringof, startswith, endswith |\n| method      | ge, le, eq, ne, gt, lt | substringof, startswith, endswith |\n| description | ge, le, eq, ne, gt, lt | substringof, startswith, endswith |\n| urlTemplate | ge, le, eq, ne, gt, lt | substringof, startswith, endswith |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "A collection of operation summary entities at the API level.",
            "schema": {
              "$ref": "#/definitions/OperationCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ApiOperations"
        ],
        "x-ms-odata": "#/definitions/OperationContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/operations/{operationId}": {
      "delete": {
        "description": "Deletes the specified operation.",
        "operationId": "ApiOperations_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "$ref": "#/parameters/OperationIdParameter"
          },
          {
            "description": "ETag of the API Operation Entity. ETag should match the current entity state from the header response of the GET request or it should be * for unconditional update.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The operation was successfully deleted."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ApiOperations"
        ]
      },
      "get": {
        "description": "Gets the details of the API Operation specified by its identifier.",
        "operationId": "ApiOperations_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "$ref": "#/parameters/OperationIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains the specified Operation entity.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/OperationContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ApiOperations"
        ]
      },
      "patch": {
        "description": "Updates the details of the operation specified by its identifier.",
        "operationId": "ApiOperations_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "$ref": "#/parameters/OperationIdParameter"
          },
          {
            "description": "Update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PatchParameters"
            }
          },
          {
            "description": "ETag of the API Operation Entity. ETag should match the current entity state from the header response of the GET request or it should be * for unconditional update.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The operation was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ApiOperations"
        ]
      },
      "put": {
        "description": "Creates a new API operation or updates an existing one.",
        "operationId": "ApiOperations_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "$ref": "#/parameters/OperationIdParameter"
          },
          {
            "description": "Create parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OperationContract"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "Operation was successfully created."
          },
          "204": {
            "description": "Operation was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ApiOperations"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/products": {
      "get": {
        "description": "Lists all API associated products.",
        "operationId": "ApiProducts_ListByApi",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "description": "| Field | Supported operators    | Supported functions                         |\n|-------|------------------------|---------------------------------------------|\n| name  | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The operation returns a collection of products which have the Api entity.",
            "schema": {
              "$ref": "#/definitions/ProductCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ApiProducts"
        ],
        "x-ms-odata": "#/definitions/ProductContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/authorizationServers": {
      "get": {
        "description": "Lists a collection of authorization servers defined within a service instance.",
        "externalDocs": {
          "url": "https://msdn.microsoft.com/en-us/library/azure/dn879064.aspx"
        },
        "operationId": "AuthorizationServers_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "| Field | Supported operators    | Supported functions                         |\n|-------|------------------------|---------------------------------------------|\n| id    | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| name  | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "A Collection of the Authorization Server entities for the specified API Management service instance.",
            "schema": {
              "$ref": "#/definitions/AuthorizationServerCollection"
            }
          }
        },
        "tags": [
          "AuthorizationServers"
        ],
        "x-ms-odata": "#/definitions/OAuth2AuthorizationServerContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/authorizationServers/{authsid}": {
      "delete": {
        "description": "Deletes specific authorization server instance.",
        "operationId": "AuthorizationServers_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the authorization server.",
            "in": "path",
            "name": "authsid",
            "required": true,
            "type": "string"
          },
          {
            "description": "The entity state (Etag) version of the authentication server to delete. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The authorization server settings were successfully deleted."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "AuthorizationServers"
        ]
      },
      "get": {
        "description": "Gets the details of the authorization server specified by its identifier.",
        "operationId": "AuthorizationServers_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the authorization server.",
            "in": "path",
            "maxLength": 256,
            "name": "authsid",
            "pattern": "^[^*#&+:<>?]+$",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Gets the details of the specified authorization server.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/OAuth2AuthorizationServerContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "AuthorizationServers"
        ]
      },
      "patch": {
        "description": "Updates the details of the authorization server specified by its identifier.",
        "operationId": "AuthorizationServers_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the authorization server.",
            "in": "path",
            "name": "authsid",
            "required": true,
            "type": "string"
          },
          {
            "description": "OAuth2 Server settings Update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OAuth2AuthorizationServerUpdateContract"
            }
          },
          {
            "description": "The entity state (Etag) version of the authorization server to update. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The authorization server settings were successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "AuthorizationServers"
        ]
      },
      "put": {
        "description": "Creates new authorization server or updates an existing authorization server.",
        "operationId": "AuthorizationServers_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the authorization server.",
            "in": "path",
            "maxLength": 256,
            "name": "authsid",
            "pattern": "^[^*#&+:<>?]+$",
            "required": true,
            "type": "string"
          },
          {
            "description": "Create or update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OAuth2AuthorizationServerContract"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "Authorization server was successfully registered."
          },
          "204": {
            "description": "Authorization server is already registered."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "AuthorizationServers"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/backends": {
      "get": {
        "description": "Lists a collection of backends in the specified service instance.",
        "externalDocs": {
          "url": "https://msdn.microsoft.com/en-us/library/dn935030.aspx"
        },
        "operationId": "Backends_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "| Field | Supported operators    | Supported functions                         |\n|-------|------------------------|---------------------------------------------|\n| id    | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| host  | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists a collection of Backend entities.",
            "schema": {
              "$ref": "#/definitions/BackendCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Backends"
        ],
        "x-ms-odata": "#/definitions/BackendResponse",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/backends/{backendid}": {
      "delete": {
        "description": "Deletes the specified backend.",
        "operationId": "Backends_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/BackendIdParameter"
          },
          {
            "description": "The entity state (Etag) version of the backend to delete. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The backend was successfully deleted."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Backends"
        ]
      },
      "get": {
        "description": "Gets the details of the backend specified by its identifier.",
        "operationId": "Backends_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/BackendIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains the specified Backend entity.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/BackendResponse"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Backends"
        ]
      },
      "patch": {
        "description": "Updates an existing backend.",
        "operationId": "Backends_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/BackendIdParameter"
          },
          {
            "description": "Update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BackendUpdateParameters"
            }
          },
          {
            "description": "The entity state (Etag) version of the backend to update. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The existing backend was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Backends"
        ]
      },
      "put": {
        "description": "Creates or Updates a backend.",
        "operationId": "Backends_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/BackendIdParameter"
          },
          {
            "description": "Create parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BackendContract"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "Backend was successfully created."
          },
          "204": {
            "description": "The existing backend was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Backends"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/certificates": {
      "get": {
        "description": "Lists a collection of all certificates in the specified service instance.",
        "externalDocs": {
          "url": "https://msdn.microsoft.com/en-us/library/azure/dn783483.aspx"
        },
        "operationId": "Certificates_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "| Field          | Supported operators    | Supported functions                         |\n|----------------|------------------------|---------------------------------------------|\n| id             | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| subject        | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| thumbprint     | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| expirationDate | ge, le, eq, ne, gt, lt | N/A                                         |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns a collection of Certificate entity.",
            "schema": {
              "$ref": "#/definitions/CertificateCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Certificates"
        ],
        "x-ms-odata": "#/definitions/CertificateContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/certificates/{certificateId}": {
      "delete": {
        "description": "Deletes specific certificate.",
        "operationId": "Certificates_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the certificate.",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          },
          {
            "description": "The entity state (Etag) version of the certificate to delete. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The certificate was successfully deleted."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Certificates"
        ]
      },
      "get": {
        "description": "Gets the details of the certificate specified by its identifier.",
        "operationId": "Certificates_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the certificate.",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains the specified Certificate entity.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/CertificateContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Certificates"
        ]
      },
      "put": {
        "description": "Creates or updates the certificate being used for authentication with the backend.",
        "externalDocs": {
          "description": "How to secure back-end services using client certificate authentication in Azure API Management",
          "url": "https://azure.microsoft.com/en-us/documentation/articles/api-management-howto-mutual-certificates/"
        },
        "operationId": "Certificates_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the certificate entity. Must be unique in the current API Management service instance.",
            "in": "path",
            "maxLength": 256,
            "minLength": 1,
            "name": "certificateId",
            "pattern": "^[^*#&+:<>?]+$",
            "required": true,
            "type": "string"
          },
          {
            "description": "Create parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CertificateCreateOrUpdateParameters"
            }
          },
          {
            "description": "The entity state (Etag) version of the certificate to update. A value of \"*\" can be used for If-Match to unconditionally apply the operation..",
            "in": "header",
            "name": "If-Match",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "The new certificate was successfully added."
          },
          "204": {
            "description": "The certificate details were successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Certificates"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups": {
      "get": {
        "description": "Lists a collection of groups defined within a service instance.",
        "externalDocs": {
          "url": "https://msdn.microsoft.com/en-us/library/azure/dn776329.aspx"
        },
        "operationId": "Groups_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "| Field       | Supported operators    | Supported functions                         |\n|-------------|------------------------|---------------------------------------------|\n| id          | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| name        | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| description | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| type        | eq, ne                 | N/A                                         |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists a collection of Group entities.",
            "schema": {
              "$ref": "#/definitions/GroupCollection"
            }
          }
        },
        "tags": [
          "Groups"
        ],
        "x-ms-odata": "#/definitions/GroupContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups/{groupId}": {
      "delete": {
        "description": "Deletes specific group of the API Management service instance.",
        "operationId": "Groups_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/GroupIdParameter"
          },
          {
            "description": "ETag of the Group Entity. ETag should match the current entity state from the header response of the GET request or it should be * for unconditional update.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The group was successfully deleted."
          },
          "405": {
            "description": "The specified group cannot be updated because it is a built-in group.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Groups"
        ]
      },
      "get": {
        "description": "Gets the details of the group specified by its identifier.",
        "operationId": "Groups_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/GroupIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains the specified Group entity.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/GroupContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Groups"
        ]
      },
      "patch": {
        "description": "Updates the details of the group specified by its identifier.",
        "operationId": "Groups_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/GroupIdParameter"
          },
          {
            "description": "Update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/GroupUpdateParameters"
            }
          },
          {
            "description": "ETag of the Group Entity. ETag should match the current entity state from the header response of the GET request or it should be * for unconditional update.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The group details were successfully updated."
          },
          "405": {
            "description": "The specified group cannot be updated because it is a built-in group.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Groups"
        ]
      },
      "put": {
        "description": "Creates or Updates a group.",
        "operationId": "Groups_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/GroupIdParameter"
          },
          {
            "description": "Create parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/GroupCreateParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "Group was created successfully."
          },
          "204": {
            "description": "Group already exists."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Groups"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups/{groupId}/users": {
      "get": {
        "description": "Lists a collection of the members of the group, specified by its identifier.",
        "operationId": "GroupUsers_ListByGroup",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/GroupIdParameter"
          },
          {
            "description": "| Field            | Supported operators    | Supported functions               |\n|------------------|------------------------|-----------------------------------|\n| id               | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| firstName        | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| lastName         | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| email            | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| state            | eq                     | N/A                               |\n| registrationDate | ge, le, eq, ne, gt, lt | N/A                               |\n| note             | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists a collection of user entities associated with the group.",
            "schema": {
              "$ref": "#/definitions/UserCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "GroupUsers"
        ],
        "x-ms-odata": "#/definitions/UserContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/groups/{groupId}/users/{uid}": {
      "delete": {
        "description": "Remove existing user from existing group.",
        "operationId": "GroupUsers_Remove",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/GroupIdParameter"
          },
          {
            "$ref": "#/parameters/UserIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The user was successfully removed from the group.."
          },
          "405": {
            "description": "Attempt was made to add a user to a built-in group. Built-in group membership is managed by the system.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "GroupUsers"
        ]
      },
      "put": {
        "description": "Adds a user to the specified group.",
        "operationId": "GroupUsers_Add",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/GroupIdParameter"
          },
          {
            "$ref": "#/parameters/UserIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "The user was successfully added to the group."
          },
          "204": {
            "description": "The specified user is already a member of the specified group."
          },
          "405": {
            "description": "Attempt was made to add a user to a built-in group. Built-in group membership is managed by the system.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "GroupUsers"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/identityProviders": {
      "get": {
        "description": "Lists a collection of Identity Provider configured in the specified service instance.",
        "operationId": "IdentityProviders_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists a collection of Identity Providers.",
            "schema": {
              "$ref": "#/definitions/IdentityProviderList"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "IdentityProvider"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/identityProviders/{identityProviderName}": {
      "delete": {
        "description": "Deletes the specified identity provider configuration.",
        "operationId": "IdentityProviders_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/IdentityProviderNameParameter"
          },
          {
            "description": "The entity state (Etag) version of the backend to delete. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The identity provider configuration was successfully deleted."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "IdentityProvider"
        ]
      },
      "get": {
        "description": "Gets the configuration details of the identity Provider configured in specified service instance.",
        "operationId": "IdentityProviders_Get",
        "parameters": [
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/IdentityProviderNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains the specified IdentityProvider entity configuration details.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/IdentityProviderContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "IdentityProvider"
        ]
      },
      "patch": {
        "description": "Updates an existing IdentityProvider configuration.",
        "operationId": "IdentityProviders_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/IdentityProviderNameParameter"
          },
          {
            "description": "Update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdentityProviderUpdateParameters"
            }
          },
          {
            "description": "The entity state (Etag) version of the identity provider configuration to update. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The existing identity provider configuration was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "IdentityProviders"
        ]
      },
      "put": {
        "description": "Creates or Updates the IdentityProvider configuration.",
        "operationId": "IdentityProviders_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/IdentityProviderNameParameter"
          },
          {
            "description": "Create parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/IdentityProviderContract"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "IdentityProvider configuration were successfully created."
          },
          "204": {
            "description": "The existing Identity Provider was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "IdentityProvider"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/loggers": {
      "get": {
        "description": "Lists a collection of loggers in the specified service instance.",
        "externalDocs": {
          "url": "https://msdn.microsoft.com/en-us/library/azure/mt592020.aspx"
        },
        "operationId": "Loggers_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "| Field | Supported operators    | Supported functions                         |\n|-------|------------------------|---------------------------------------------|\n| id    | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| type  | eq                     |                                             |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists a collection of Logger entities.",
            "schema": {
              "$ref": "#/definitions/LoggerCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Loggers"
        ],
        "x-ms-odata": "#/definitions/LoggerResponse",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/loggers/{loggerid}": {
      "delete": {
        "description": "Deletes the specified logger.",
        "operationId": "Loggers_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the logger.",
            "in": "path",
            "name": "loggerid",
            "required": true,
            "type": "string"
          },
          {
            "description": "The entity state (Etag) version of the logger to delete. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The logger was successfully deleted."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Loggers"
        ]
      },
      "get": {
        "description": "Gets the details of the logger specified by its identifier.",
        "operationId": "Loggers_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the logger.",
            "in": "path",
            "name": "loggerid",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains the specified Logger entity.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/LoggerResponse"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Loggers"
        ]
      },
      "patch": {
        "description": "Updates an existing logger.",
        "operationId": "Loggers_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the logger.",
            "in": "path",
            "name": "loggerid",
            "required": true,
            "type": "string"
          },
          {
            "description": "Update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LoggerUpdateParameters"
            }
          },
          {
            "description": "The entity state (Etag) version of the logger to update. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The existing logger was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Loggers"
        ]
      },
      "put": {
        "description": "Creates or Updates a logger.",
        "operationId": "Loggers_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the logger.",
            "in": "path",
            "maxLength": 256,
            "name": "loggerid",
            "pattern": "^[^*#&+:<>?]+$",
            "required": true,
            "type": "string"
          },
          {
            "description": "Create parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/LoggerCreateParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "Logger was successfully created."
          },
          "204": {
            "description": "The existing logger was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Loggers"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders": {
      "get": {
        "description": "Lists all OpenID Connect Providers.",
        "operationId": "OpenIdConnectProviders_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "| Field | Supported operators    | Supported functions                         |\n|-------|------------------------|---------------------------------------------|\n| id    | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| name  | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists of all the OpenId Connect Providers.",
            "schema": {
              "$ref": "#/definitions/OpenIdConnectProviderCollection"
            }
          }
        },
        "tags": [
          "OpenIdConnectProviders"
        ],
        "x-ms-odata": "#/definitions/OpenidConnectProviderContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/openidConnectProviders/{opid}": {
      "delete": {
        "description": "Deletes specific OpenID Connect Provider of the API Management service instance.",
        "operationId": "OpenIdConnectProviders_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the OpenID Connect Provider.",
            "in": "path",
            "name": "opid",
            "required": true,
            "type": "string"
          },
          {
            "description": "The entity state (Etag) version of the OpenID Connect Provider to delete. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "OpenId Connect Provider was successfully deleted."
          },
          "405": {
            "description": "The specified OpenIdConnect Provider cannot be deleted because it is in use in a policy. You must remove all references to this property before it can be deleted.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "OpenIdConnectProviders"
        ]
      },
      "get": {
        "description": "Gets specific OpenID Connect Provider.",
        "operationId": "OpenIdConnectProviders_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the OpenID Connect Provider.",
            "in": "path",
            "name": "opid",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains the specified OpenId Connect Provider entity.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/OpenidConnectProviderContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "OpenIdConnectProviders"
        ]
      },
      "patch": {
        "description": "Updates the specific OpenID Connect Provider.",
        "operationId": "OpenIdConnectProviders_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the OpenID Connect Provider.",
            "in": "path",
            "name": "opid",
            "required": true,
            "type": "string"
          },
          {
            "description": "Update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OpenidConnectProviderUpdateContract"
            }
          },
          {
            "description": "The entity state (Etag) version of the OpenID Connect Provider to update. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "OpenId Connect Provider was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "OpenIdConnectProviders"
        ]
      },
      "put": {
        "description": "Creates or updates the OpenID Connect Provider.",
        "operationId": "OpenIdConnectProviders_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the OpenID Connect Provider.",
            "in": "path",
            "maxLength": 256,
            "name": "opid",
            "pattern": "^[^*#&+:<>?]+$",
            "required": true,
            "type": "string"
          },
          {
            "description": "Create parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OpenidConnectProviderCreateContract"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "OpenIdConnect Provider was successfully created."
          },
          "204": {
            "description": "OpenIdConnect Provider was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "OpenIdConnectProviders"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/policySnippets": {
      "get": {
        "description": "Lists all policy snippets.",
        "operationId": "PolicySnippets_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Policy scope.",
            "enum": [
              "Tenant",
              "Product",
              "Api",
              "Operation",
              "All"
            ],
            "in": "query",
            "name": "scope",
            "required": false,
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "PolicyScopeContract"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Returns an array of Policy Contracts.",
            "schema": {
              "items": {
                "$ref": "#/definitions/PolicySnippetContract"
              },
              "type": "array"
            }
          }
        },
        "tags": [
          "PolicySnippets"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products": {
      "get": {
        "description": "Lists a collection of products in the specified service instance.",
        "externalDocs": {
          "url": "https://msdn.microsoft.com/en-us/library/azure/dn776336.aspx"
        },
        "operationId": "Products_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "| Field       | Supported operators    | Supported functions                         |\n|-------------|------------------------|---------------------------------------------|\n| id          | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| name        | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| description | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| terms       | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| state       | eq                     |                                             |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "description": "When set to true, the response contains an array of groups that have visibility to the product. The default is false.",
            "in": "query",
            "name": "expandGroups",
            "required": false,
            "type": "boolean"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "A Collection of the Product entities for the specified API Management service instance.",
            "schema": {
              "$ref": "#/definitions/ProductCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Products"
        ],
        "x-ms-odata": "#/definitions/ProductContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}": {
      "delete": {
        "description": "Delete product.",
        "operationId": "Products_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ProductIdParameter"
          },
          {
            "description": "Delete existing subscriptions to the product or not.",
            "in": "query",
            "name": "deleteSubscriptions",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "ETag of the Product Entity. ETag should match the current entity state from the header response of the GET request or it should be * for unconditional update.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The product was successfully deleted."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Products"
        ]
      },
      "get": {
        "description": "Gets the details of the product specified by its identifier.",
        "operationId": "Products_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ProductIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains the specified Product entity.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/ProductContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Products"
        ]
      },
      "patch": {
        "description": "Update product.",
        "operationId": "Products_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ProductIdParameter"
          },
          {
            "description": "Update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ProductUpdateParameters"
            }
          },
          {
            "description": "ETag of the Product Entity. ETag should match the current entity state from the header response of the GET request or it should be * for unconditional update.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "No Content in case of Update Successful."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Products"
        ]
      },
      "put": {
        "description": "Creates or Updates a product.",
        "operationId": "Products_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ProductIdParameter"
          },
          {
            "description": "Create or update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ProductContract"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "Product was successfully created."
          },
          "204": {
            "description": "Product already exists."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Products"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/apis": {
      "get": {
        "description": "Lists a collection of the APIs associated with a product.",
        "operationId": "ProductApis_ListByProduct",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ProductIdParameter"
          },
          {
            "description": "| Field       | Supported operators    | Supported functions                         |\n|-------------|------------------------|---------------------------------------------|\n| id          | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| name        | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| description | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| serviceUrl  | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| path        | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains a collection of Api entities in the product.",
            "schema": {
              "$ref": "#/definitions/ApiCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ProductApis"
        ],
        "x-ms-odata": "#/definitions/ApiContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/apis/{apiId}": {
      "delete": {
        "description": "Deletes the specified API from the specified product.",
        "operationId": "ProductApis_Remove",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ProductIdParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The API was successfully removed from the product."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ProductApis"
        ]
      },
      "put": {
        "description": "Adds an API to the specified product.",
        "operationId": "ProductApis_Add",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ProductIdParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "The API was successfully added to the product."
          },
          "204": {
            "description": "The specified API is already added to the product."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ProductApis"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/groups": {
      "get": {
        "description": "Lists the collection of developer groups associated with the specified product.",
        "operationId": "ProductGroups_ListByProduct",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ProductIdParameter"
          },
          {
            "description": "| Field       | Supported operators    | Supported functions                         |\n|-------------|------------------------|---------------------------------------------|\n| id          | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| name        | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| description | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| type        | eq, ne                 | N/A                                         |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists a collection of Group entities.",
            "schema": {
              "$ref": "#/definitions/GroupCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ProductGroups"
        ],
        "x-ms-odata": "#/definitions/GroupContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/groups/{groupId}": {
      "delete": {
        "description": "Deletes the association between the specified group and product.",
        "operationId": "ProductGroups_Remove",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ProductIdParameter"
          },
          {
            "$ref": "#/parameters/GroupIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The group was successfully disassociated with the product."
          },
          "400": {
            "description": "Request validation failed.This is typically caused by an invalid product or group id.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ProductGroups"
        ]
      },
      "put": {
        "description": "Adds the association between the specified developer group with the specified product.",
        "operationId": "ProductGroups_Add",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ProductIdParameter"
          },
          {
            "$ref": "#/parameters/GroupIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "The group was successfully associated with the product.."
          },
          "204": {
            "description": "The specified group is already associated with the product."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ProductGroups"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/products/{productId}/subscriptions": {
      "get": {
        "description": "Lists the collection of subscriptions to the specified product.",
        "operationId": "ProductSubscriptions_ListByProduct",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ProductIdParameter"
          },
          {
            "description": "| Field        | Supported operators    | Supported functions                         |\n|--------------|------------------------|---------------------------------------------|\n| id           | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| name         | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| stateComment | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| userId       | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| productId    | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| state        | eq                     |                                             |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists a collection of subscription entities.",
            "schema": {
              "$ref": "#/definitions/SubscriptionCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "ProductSubscriptions"
        ],
        "x-ms-odata": "#/definitions/SubscriptionContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/properties": {
      "get": {
        "description": "Lists a collection of properties defined within a service instance.",
        "externalDocs": {
          "url": "https://msdn.microsoft.com/en-us/library/azure/mt651775.aspx"
        },
        "operationId": "Property_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "| Field | Supported operators    | Supported functions                                   |\n|-------|------------------------|-------------------------------------------------------|\n| tags  | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith, any, all |\n| name  | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith           |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "A Collection of the Property entities for the specified API Management service instance.",
            "schema": {
              "$ref": "#/definitions/PropertyCollection"
            }
          }
        },
        "tags": [
          "Property"
        ],
        "x-ms-odata": "#/definitions/PropertyContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/properties/{propId}": {
      "delete": {
        "description": "Deletes specific property from the API Management service instance.",
        "operationId": "Property_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the property.",
            "in": "path",
            "name": "propId",
            "required": true,
            "type": "string"
          },
          {
            "description": "The entity state (Etag) version of the property to delete. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "Property was successfully deleted."
          },
          "405": {
            "description": "The specified property cannot be deleted because it is in use in a policy. You must remove all references to this property before it can be deleted.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Property"
        ]
      },
      "get": {
        "description": "Gets the details of the property specified by its identifier.",
        "operationId": "Property_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the property.",
            "in": "path",
            "name": "propId",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains the specified Property entity.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/PropertyContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Property"
        ]
      },
      "patch": {
        "description": "Updates the specific property.",
        "operationId": "Property_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the property.",
            "in": "path",
            "name": "propId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PropertyUpdateParameters"
            }
          },
          {
            "description": "The entity state (Etag) version of the property to update. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "Property was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Property"
        ]
      },
      "put": {
        "description": "Creates or updates a property.",
        "operationId": "Property_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the property.",
            "in": "path",
            "maxLength": 256,
            "name": "propId",
            "pattern": "^[^*#&+:<>?]+$",
            "required": true,
            "type": "string"
          },
          {
            "description": "Create parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PropertyCreateParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "Property was successfully created."
          },
          "204": {
            "description": "Property was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Property"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/quotas/{quotaCounterKey}": {
      "get": {
        "description": "Lists a collection of current quota counter periods associated with the counter-key configured in the policy on the specified service instance. The api does not support paging yet.",
        "externalDocs": {
          "description": "Document describing how to configure the quota policies.",
          "url": "https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-product-with-rules#a-namepolicies-ato-configure-call-rate-limit-and-quota-policies"
        },
        "operationId": "QuotaByCounterKeys_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/QuotaCounterKeyParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists a collection of the quota counter values.",
            "schema": {
              "$ref": "#/definitions/QuotaCounterCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "QuotaByCounterKeys"
        ]
      },
      "patch": {
        "description": "Updates all the quota counter values specified with the existing quota counter key to a value in the specified service instance. This should be used for reset of the quota counter values.",
        "operationId": "QuotaByCounterKeys_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/QuotaCounterKeyParameter"
          },
          {
            "description": "The value of the quota counter to be applied to all quota counter periods.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/QuotaCounterValueContract"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "All the quota counter periods were successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "QuotaByCounterKeys"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/quotas/{quotaCounterKey}/{quotaPeriodKey}": {
      "get": {
        "description": "Gets the value of the quota counter associated with the counter-key in the policy for the specific period in service instance.",
        "externalDocs": {
          "description": "Document describing how to configure the quota policies.",
          "url": "https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-product-with-rules#a-namepolicies-ato-configure-call-rate-limit-and-quota-policies"
        },
        "operationId": "QuotaByPeriodKeys_Get",
        "parameters": [
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          },
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/QuotaCounterKeyParameter"
          },
          {
            "$ref": "#/parameters/QuotaPeriodKeyParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains the Quota counter details for the specified period.",
            "schema": {
              "$ref": "#/definitions/QuotaCounterContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "QuotaByPeriodKeys"
        ]
      },
      "patch": {
        "description": "Updates an existing quota counter value in the specified service instance.",
        "operationId": "QuotaByPeriodKeys_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/QuotaCounterKeyParameter"
          },
          {
            "$ref": "#/parameters/QuotaPeriodKeyParameter"
          },
          {
            "description": "The value of the Quota counter to be applied on the specified period.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/QuotaCounterValueContract"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The quota counter value was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "QuotaByPeriodKeys"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/regions": {
      "get": {
        "description": "Lists all azure regions in which the service exists.",
        "operationId": "Regions_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists of Regions in which the service is deployed.",
            "schema": {
              "$ref": "#/definitions/RegionListResult"
            }
          }
        },
        "tags": [
          "Regions"
        ],
        "x-ms-pageable": {
          "nextLinkName": null
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/{aggregation}": {
      "get": {
        "description": "Lists report records.",
        "operationId": "Reports_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Report aggregation.",
            "enum": [
              "byApi",
              "byGeo",
              "byOperation",
              "byProduct",
              "bySubscription",
              "byTime",
              "byUser"
            ],
            "in": "path",
            "name": "aggregation",
            "required": true,
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "ReportsAggregation"
            }
          },
          {
            "description": "The filter to apply on the operation.",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "description": "By time interval. This value is only applicable to ByTime aggregation. Interval must be multiple of 15 minutes and may not be zero. The value should be in ISO  8601 format (http://en.wikipedia.org/wiki/ISO_8601#Durations).This code can be used to convert TimSpan to a valid interval string: XmlConvert.ToString(new TimeSpan(hours, minutes, seconds))",
            "in": "query",
            "name": "interval",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists a collection of Report record.",
            "schema": {
              "$ref": "#/definitions/ReportCollection"
            }
          }
        },
        "tags": [
          "Reports"
        ],
        "x-ms-odata": "#/definitions/ReportRecordContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/subscriptions": {
      "get": {
        "description": "Lists all subscriptions of the API Management service instance.",
        "externalDocs": {
          "url": "https://msdn.microsoft.com/en-us/library/azure/dn776325.aspx"
        },
        "operationId": "Subscriptions_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "| Field        | Supported operators    | Supported functions                         |\n|--------------|------------------------|---------------------------------------------|\n| id           | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| name         | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| stateComment | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| userId       | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| productId    | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| state        | eq                     |                                             |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "A collection of the Subscription entities for the specified API Management service instance.",
            "schema": {
              "$ref": "#/definitions/SubscriptionCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Subscriptions"
        ],
        "x-ms-odata": "#/definitions/SubscriptionContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/subscriptions/{sid}": {
      "delete": {
        "description": "Deletes the specified subscription.",
        "operationId": "Subscriptions_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the subscription.",
            "in": "path",
            "name": "sid",
            "required": true,
            "type": "string"
          },
          {
            "description": "ETag of the Subscription Entity. ETag should match the current entity state from the header response of the GET request or it should be * for unconditional update.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The subscription details were successfully deleted."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Subscriptions"
        ]
      },
      "get": {
        "description": "Gets the specified Subscription entity.",
        "operationId": "Subscriptions_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the subscription.",
            "in": "path",
            "name": "sid",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains the specified Subscription entity.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/SubscriptionContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Subscriptions"
        ]
      },
      "patch": {
        "description": "Updates the details of a subscription specified by its identifier.",
        "operationId": "Subscriptions_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the subscription.",
            "in": "path",
            "name": "sid",
            "required": true,
            "type": "string"
          },
          {
            "description": "Update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SubscriptionUpdateParameters"
            }
          },
          {
            "description": "ETag of the Subscription Entity. ETag should match the current entity state from the header response of the GET request or it should be * for unconditional update.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The subscription details were successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Subscriptions"
        ]
      },
      "put": {
        "description": "Creates or updates the subscription of specified user to the specified product.",
        "operationId": "Subscriptions_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the subscription.",
            "in": "path",
            "maxLength": 256,
            "minLength": 1,
            "name": "sid",
            "pattern": "^[^*#&+:<>?]+$",
            "required": true,
            "type": "string"
          },
          {
            "description": "Create parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SubscriptionCreateParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "The user was successfully subscribed to the product."
          },
          "204": {
            "description": "The user already subscribed to the product."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Subscriptions"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/subscriptions/{sid}/regeneratePrimaryKey": {
      "post": {
        "description": "Regenerates primary key of existing subscription of the API Management service instance.",
        "operationId": "Subscriptions_RegeneratePrimaryKey",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the subscription.",
            "in": "path",
            "name": "sid",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The primary key was successfully regenerated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Subscriptions"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/subscriptions/{sid}/regenerateSecondaryKey": {
      "post": {
        "description": "Regenerates secondary key of existing subscription of the API Management service instance.",
        "operationId": "Subscriptions_RegenerateSecondaryKey",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Identifier of the subscription.",
            "in": "path",
            "name": "sid",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The secondary key was successfully regenerated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Subscriptions"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access": {
      "get": {
        "description": "Get tenant access information details.",
        "operationId": "TenantAccess_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Tenant Access information.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/AccessInformationContract"
            }
          }
        },
        "tags": [
          "TenantAccess"
        ]
      },
      "patch": {
        "description": "Update tenant access information details.",
        "operationId": "TenantAccess_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AccessInformationUpdateParameters"
            }
          },
          {
            "description": "The entity state (Etag) version of the tenant access settings to update. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "Tenant's access information updated successfully."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "TenantAccess"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access/git": {
      "get": {
        "description": "Gets the Git access configuration for the tenant.",
        "operationId": "TenantAccessGit_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Git Access Information for the Service.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/AccessInformationContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "TenantAccessGit"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access/git/regeneratePrimaryKey": {
      "post": {
        "description": "Regenerate primary access key for GIT.",
        "operationId": "TenantAccessGit_RegeneratePrimaryKey",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The primary key was successfully regenerated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "TenantAccessGit"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access/git/regenerateSecondaryKey": {
      "post": {
        "description": "Regenerate secondary access key for GIT.",
        "operationId": "TenantAccessGit_RegenerateSecondaryKey",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The secondary key was successfully regenerated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "TenantAccessGit"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access/regeneratePrimaryKey": {
      "post": {
        "description": "Regenerate primary access key.",
        "operationId": "TenantAccess_RegeneratePrimaryKey",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The primary key was successfully regenerated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "TenantAccess"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/access/regenerateSecondaryKey": {
      "post": {
        "description": "Regenerate secondary access key.",
        "operationId": "TenantAccess_RegenerateSecondaryKey",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The secondary key was successfully regenerated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "TenantAccess"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/configuration/deploy": {
      "post": {
        "description": "This operation applies changes from the specified Git branch to the configuration database. This is a long running operation and could take several minutes to complete.",
        "externalDocs": {
          "description": "To deploy any service configuration changes to the API Management service instance",
          "url": "https://azure.microsoft.com/en-us/documentation/articles/api-management-configuration-repository-git/#to-deploy-any-service-configuration-changes-to-the-api-management-service-instance"
        },
        "operationId": "TenantConfiguration_Deploy",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Deploy Configuration parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DeployConfigurationParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Result of applying changes from Git branch to database.",
            "schema": {
              "$ref": "#/definitions/OperationResultContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "TenantConfiguration"
        ],
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/configuration/save": {
      "post": {
        "description": "This operation creates a commit with the current configuration snapshot to the specified branch in the repository. This is a long running operation and could take several minutes to complete.",
        "externalDocs": {
          "description": "To save the service configuration to the Git repository",
          "url": "https://azure.microsoft.com/en-us/documentation/articles/api-management-configuration-repository-git/#to-save-the-service-configuration-to-the-git-repository"
        },
        "operationId": "TenantConfiguration_Save",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Save Configuration parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SaveConfigurationParameter"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Result of creating a commit in the repository.",
            "schema": {
              "$ref": "#/definitions/OperationResultContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "TenantConfiguration"
        ],
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/configuration/syncState": {
      "get": {
        "description": "Gets the status of the most recent synchronization between the configuration database and the Git repository.",
        "operationId": "TenantConfigurationSyncState_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Sync state result.",
            "schema": {
              "$ref": "#/definitions/TenantConfigurationSyncStateContract"
            }
          }
        },
        "tags": [
          "TenantConfigurationSyncState"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/configuration/validate": {
      "post": {
        "description": "This operation validates the changes in the specified Git branch. This is a long running operation and could take several minutes to complete.",
        "operationId": "TenantConfiguration_Validate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "Validate Configuration parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DeployConfigurationParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Result of validating the changes in the specified Git branch.",
            "schema": {
              "$ref": "#/definitions/OperationResultContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "TenantConfiguration"
        ],
        "x-ms-long-running-operation": true
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users": {
      "get": {
        "description": "Lists a collection of registered users in the specified service instance.",
        "externalDocs": {
          "url": "https://msdn.microsoft.com/en-us/library/azure/dn776330.aspx"
        },
        "operationId": "Users_ListByService",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "description": "| Field            | Supported operators    | Supported functions               |\n|------------------|------------------------|-----------------------------------|\n| id               | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| firstName        | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| lastName         | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| email            | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| state            | eq                     | N/A                               |\n| registrationDate | ge, le, eq, ne, gt, lt | N/A                               |\n| note             | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists a collection of User entities.",
            "schema": {
              "$ref": "#/definitions/UserCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Users"
        ],
        "x-ms-odata": "#/definitions/UserContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}": {
      "delete": {
        "description": "Deletes specific user.",
        "operationId": "Users_Delete",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/UserIdParameter"
          },
          {
            "description": "Whether to delete user's subscription or not.",
            "in": "query",
            "name": "deleteSubscriptions",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "The entity state (Etag) version of the user to delete. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The user details were successfully deleted."
          },
          "405": {
            "description": "Administrator user cannot be modified.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Users"
        ]
      },
      "get": {
        "description": "Gets the details of the user specified by its identifier.",
        "operationId": "Users_Get",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/UserIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Gets the specified user entity.",
            "headers": {
              "ETag": {
                "description": "Current entity state version. Should be treated as opaque and used to make conditional HTTP requests.",
                "type": "string"
              }
            },
            "schema": {
              "$ref": "#/definitions/UserContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Users"
        ]
      },
      "patch": {
        "description": "Updates the details of the user specified by its identifier.",
        "operationId": "Users_Update",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/UserIdParameter"
          },
          {
            "description": "Update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserUpdateParameters"
            }
          },
          {
            "description": "The entity state (Etag) version of the user to update. A value of \"*\" can be used for If-Match to unconditionally apply the operation.",
            "in": "header",
            "name": "If-Match",
            "required": true,
            "type": "string"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "204": {
            "description": "The user details were successfully updated."
          },
          "405": {
            "description": "Administrator user cannot be modified.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Users"
        ]
      },
      "put": {
        "description": "Creates or Updates a user.",
        "operationId": "Users_CreateOrUpdate",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/UserIdParameter"
          },
          {
            "description": "Create or update parameters.",
            "in": "body",
            "name": "parameters",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserCreateParameters"
            }
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "201": {
            "description": "User was successfully created."
          },
          "204": {
            "description": "User was successfully updated."
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Users"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}/generateSsoUrl": {
      "post": {
        "description": "Retrieves a redirection URL containing an authentication token for signing a given user into the developer portal.",
        "operationId": "Users_GenerateSsoUrl",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/UserIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response body contains the single sign-on URL.",
            "schema": {
              "$ref": "#/definitions/GenerateSsoUrlResult",
              "x-ms-client-flatten": true
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Users"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}/groups": {
      "get": {
        "description": "Lists all user groups.",
        "operationId": "UserGroups_ListByUser",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/UserIdParameter"
          },
          {
            "description": "| Field       | Supported operators    | Supported functions                         |\n|-------------|------------------------|---------------------------------------------|\n| id          | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| name        | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| description | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists a collection of Group entities.",
            "schema": {
              "$ref": "#/definitions/GroupCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "UserGroups"
        ],
        "x-ms-odata": "#/definitions/GroupContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}/identities": {
      "get": {
        "description": "Lists all user identities.",
        "operationId": "UserIdentities_ListByUser",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/UserIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists of User Identities.",
            "schema": {
              "items": {
                "$ref": "#/definitions/UserIdentityContract"
              },
              "type": "array"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "UserIdentities"
        ]
      }
    },
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/users/{uid}/subscriptions": {
      "get": {
        "description": "Lists the collection of subscriptions of the specified user.",
        "operationId": "UserSubscriptions_ListByUser",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/UserIdParameter"
          },
          {
            "description": "| Field        | Supported operators    | Supported functions                         |\n|--------------|------------------------|---------------------------------------------|\n| id           | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| name         | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| stateComment | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| userId       | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| productId    | ge, le, eq, ne, gt, lt | substringof, contains, startswith, endswith |\n| state        | eq                     |                                             |",
            "in": "query",
            "name": "$filter",
            "required": false,
            "type": "string"
          },
          {
            "$ref": "#/parameters/TopQueryParameter"
          },
          {
            "$ref": "#/parameters/SkipQueryParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "Lists a collection of Subscription entities.",
            "schema": {
              "$ref": "#/definitions/SubscriptionCollection"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "UserSubscriptions"
        ],
        "x-ms-odata": "#/definitions/SubscriptionContract",
        "x-ms-pageable": {
          "nextLinkName": "nextLink"
        }
      }
    }
  },
  "definitions": {
    "AccessInformationContract": {
      "description": "Tenant access information contract of the API Management service.",
      "properties": {
        "enabled": {
          "description": "Tenant access information of the API Management service.",
          "type": "boolean"
        },
        "id": {
          "description": "Identifier.",
          "type": "string"
        },
        "primaryKey": {
          "description": "Primary access key.",
          "type": "string"
        },
        "secondaryKey": {
          "description": "Secondary access key.",
          "type": "string"
        }
      }
    },
    "AccessInformationUpdateParameters": {
      "description": "Tenant access information update parameters of the API Management service.",
      "properties": {
        "enabled": {
          "description": "Tenant access information of the API Management service.",
          "type": "boolean"
        }
      },
      "required": [
        "enabled"
      ]
    },
    "ApiCollection": {
      "description": "Paged Api list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Page values.",
          "items": {
            "$ref": "#/definitions/ApiContract"
          },
          "type": "array"
        }
      }
    },
    "ApiContract": {
      "description": "API details.",
      "properties": {
        "authenticationSettings": {
          "$ref": "#/definitions/AuthenticationSettingsContract",
          "description": "Collection of authentication settings included into this API."
        },
        "description": {
          "description": "Description of the API. May include HTML formatting tags.",
          "type": "string"
        },
        "id": {
          "description": "API identifier path: /apis/{apiId}",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "API name.",
          "maxLength": 300,
          "minLength": 1,
          "type": "string"
        },
        "path": {
          "description": "Relative URL uniquely identifying this API and all of its resource paths within the API Management service instance. It is appended to the API endpoint base URL specified during the service instance creation to form a public URL for this API.",
          "maxLength": 400,
          "minLength": 0,
          "type": "string"
        },
        "protocols": {
          "description": "Describes on which protocols the operations in this API can be invoked.",
          "items": {
            "enum": [
              "Http",
              "Https"
            ],
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "ApiProtocolContract"
            }
          },
          "type": "array"
        },
        "serviceUrl": {
          "description": "Absolute URL of the backend service implementing this API.",
          "maxLength": 2000,
          "minLength": 1,
          "type": "string"
        },
        "subscriptionKeyParameterNames": {
          "$ref": "#/definitions/SubscriptionKeyParameterNamesContract",
          "description": "Protocols over which API is made available."
        },
        "type": {
          "description": "Type of API.",
          "enum": [
            "Http",
            "Soap"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "ApiTypeContract"
          }
        }
      },
      "required": [
        "name",
        "serviceUrl",
        "path",
        "protocols"
      ]
    },
    "ApiExportResult": {
      "description": "The response model for the export API output operation.",
      "properties": {
        "content": {
          "description": "Response content bytes.",
          "format": "byte",
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "statusCode": {
          "enum": [
            "Continue",
            "OK",
            "Created",
            "Accepted",
            "NotFound",
            "Conflict"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "HttpStatusCode"
          }
        }
      }
    },
    "AuthenticationSettingsContract": {
      "description": "API Authentication Settings.",
      "properties": {
        "oAuth2": {
          "$ref": "#/definitions/OAuth2AuthenticationSettingsContract"
        }
      }
    },
    "AuthorizationServerCollection": {
      "description": "Paged OAuth2 Authorization Servers list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Page values.",
          "items": {
            "$ref": "#/definitions/OAuth2AuthorizationServerContract"
          },
          "type": "array"
        }
      }
    },
    "BackendCollection": {
      "description": "Paged Backend list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Backend values.",
          "items": {
            "$ref": "#/definitions/BackendResponse"
          },
          "type": "array"
        }
      }
    },
    "BackendContract": {
      "description": "Parameters supplied to the Create Backend operation.",
      "properties": {
        "host": {
          "description": "Host attribute of the backend. Host is a pure hostname without a port or suffix, for example backend.contoso.com. Must not be empty.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "skipCertificateChainValidation": {
          "default": false,
          "description": "Flag indicating whether SSL certificate chain validation should be skipped when using self-signed certificates for this backend host.",
          "type": "boolean"
        }
      },
      "required": [
        "host"
      ]
    },
    "BackendResponse": {
      "allOf": [
        {
          "$ref": "#/definitions/BackendContract"
        }
      ],
      "description": "The Backend entity in API Management represents a backend service that is configured to skip certification chain validation when using a self-signed certificate to test mutual certificate authentication.",
      "properties": {
        "id": {
          "description": "Uniquely identifies the backend within the current API Management service instance. The value is a valid relative URL in the format of /backends/{backendId} where {backendId} is a backend identifier.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "BackendUpdateParameters": {
      "description": "Parameters supplied to the Update Backend operation.",
      "properties": {
        "host": {
          "description": "Host attribute of the backend. Host is a pure hostname without a port or suffix, for example backend.contoso.com. Must not be empty.",
          "maxLength": 255,
          "minLength": 1,
          "type": "string"
        },
        "skipCertificateChainValidation": {
          "default": false,
          "description": "Flag indicating whether SSL certificate chain validation should be skipped when using self-signed certificates for this backend host.",
          "type": "boolean"
        }
      }
    },
    "CertificateCollection": {
      "description": "Paged Certificates list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Page values.",
          "items": {
            "$ref": "#/definitions/CertificateContract"
          },
          "type": "array"
        }
      }
    },
    "CertificateContract": {
      "description": "Certificate details.",
      "properties": {
        "expirationDate": {
          "description": "Expiration date of the certificate. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "description": "Certificate identifier path: /certificates/{certificateId}",
          "readOnly": true,
          "type": "string"
        },
        "subject": {
          "description": "Subject attribute of the certificate.",
          "type": "string"
        },
        "thumbprint": {
          "description": "Thumbprint of the certificate.",
          "type": "string"
        }
      },
      "required": [
        "subject",
        "thumbprint",
        "expirationDate"
      ]
    },
    "CertificateCreateOrUpdateParameters": {
      "description": "Parameters supplied to the CreateOrUpdate certificate operation.",
      "properties": {
        "data": {
          "description": "Base 64 encoded certificate using the application/x-pkcs12 representation.",
          "type": "string"
        },
        "password": {
          "description": "Password for the Certificate",
          "type": "string"
        }
      },
      "required": [
        "data",
        "password"
      ]
    },
    "DeployConfigurationParameters": {
      "description": "Parameters supplied to the Deploy Configuration operation.",
      "properties": {
        "branch": {
          "description": "The name of the Git branch from which the configuration is to be deployed to the configuration database.",
          "type": "string"
        },
        "force": {
          "description": "The value enforcing deleting subscriptions to products that are deleted in this update.",
          "type": "boolean"
        }
      },
      "required": [
        "branch"
      ]
    },
    "ErrorBodyContract": {
      "description": "Error Body contract.",
      "properties": {
        "code": {
          "description": "Service-defined error code. This code serves as a sub-status for the HTTP error code specified in the response.",
          "type": "string"
        },
        "details": {
          "description": "The list of invalid fields send in request, in case of validation error.",
          "items": {
            "$ref": "#/definitions/ErrorFieldContract"
          },
          "type": "array"
        },
        "message": {
          "description": "Human-readable representation of the error.",
          "type": "string"
        }
      }
    },
    "ErrorFieldContract": {
      "description": "Error Field contract.",
      "properties": {
        "code": {
          "description": "Property level error code.",
          "type": "string"
        },
        "message": {
          "description": "Human-readable representation of property-level error.",
          "type": "string"
        },
        "target": {
          "description": "Property name.",
          "type": "string"
        }
      }
    },
    "GenerateSsoUrlResult": {
      "description": "Generate SSO Url operations response details.",
      "properties": {
        "value": {
          "description": "Redirect Url containing the SSO URL value.",
          "type": "string"
        }
      }
    },
    "GroupCollection": {
      "description": "Paged Group list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Page values.",
          "items": {
            "$ref": "#/definitions/GroupContract"
          },
          "type": "array"
        }
      }
    },
    "GroupContract": {
      "description": "Developer group.",
      "properties": {
        "builtIn": {
          "description": "true if the group is one of the three system groups (Administrators, Developers, or Guests); otherwise false.",
          "readOnly": true,
          "type": "boolean"
        },
        "description": {
          "description": "Group description. Can contain HTML formatting tags.",
          "maxLength": 1000,
          "type": "string"
        },
        "externalId": {
          "description": "For external groups, this property contains the id of the group from the external identity provider, e.g. Azure Active Directory; otherwise the value is null.",
          "readOnly": true,
          "type": "string"
        },
        "id": {
          "description": "Uniquely identifies the group within the current API Management service instance. The value is a valid relative URL in the format of /groups/{groupId} where {groupId} is a group identifier.",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "Group name.",
          "maxLength": 300,
          "minLength": 1,
          "type": "string"
        },
        "type": {
          "description": "Group type.",
          "enum": [
            "Custom",
            "System",
            "External"
          ],
          "readOnly": true,
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "GroupTypeContract"
          }
        }
      },
      "required": [
        "name"
      ]
    },
    "GroupCreateParameters": {
      "description": "Parameters supplied to the Create Group operation.",
      "properties": {
        "description": {
          "description": "Group description.",
          "type": "string"
        },
        "externalId": {
          "description": "Identifier for an external group.",
          "type": "string"
        },
        "name": {
          "description": "Group name.",
          "maxLength": 300,
          "minLength": 1,
          "type": "string"
        },
        "type": {
          "description": "Group type.",
          "enum": [
            "Custom",
            "System",
            "External"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "GroupTypeContract"
          }
        }
      },
      "required": [
        "name"
      ]
    },
    "GroupUpdateParameters": {
      "description": "Parameters supplied to the Update Group operation.",
      "properties": {
        "description": {
          "description": "Group description.",
          "type": "string"
        },
        "externalId": {
          "description": "Identifier for an external group.",
          "type": "string"
        },
        "name": {
          "description": "Group name.",
          "maxLength": 300,
          "minLength": 1,
          "type": "string"
        },
        "type": {
          "description": "Group type.",
          "enum": [
            "Custom",
            "System",
            "External"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "GroupTypeContract"
          }
        }
      }
    },
    "IdentityProviderContract": {
      "description": "The external Identity Providers like Facebook, Google, Microsoft, Twitter or Azure Active Directory which can be used to enable access to the API Management service developer portal for all users.",
      "externalDocs": {
        "url": "https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-aad#how-to-authorize-developer-accounts-using-azure-active-directory"
      },
      "properties": {
        "allowedTenants": {
          "description": "List of Allowed Tenants when configuring Azure Active Directory login.",
          "items": {
            "type": "string"
          },
          "maxItems": 32,
          "type": "array"
        },
        "clientId": {
          "description": "Client Id of the Application in the external Identity Provider. It is App ID for Facebook login, Client ID for Google login, App ID for Microsoft.",
          "minLength": 1,
          "type": "string"
        },
        "clientSecret": {
          "description": "Client secret of the Application in external Identity Provider, used to authenticate login request. For example, it is App Secret for Facebook login, API Key for Google login, Public Key for Microsoft.",
          "minLength": 1,
          "type": "string"
        },
        "type": {
          "description": "Identity Provider Type identifier.",
          "enum": [
            "facebook",
            "google",
            "microsoft",
            "twitter",
            "aad"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": true,
            "name": "IdentityProviderNameType"
          }
        }
      },
      "required": [
        "clientId",
        "clientSecret"
      ]
    },
    "IdentityProviderList": {
      "description": "List of all the Identity Providers configured on the service instance.",
      "properties": {
        "value": {
          "description": "Identity Provider configuration values.",
          "items": {
            "$ref": "#/definitions/IdentityProviderContract"
          },
          "type": "array"
        }
      }
    },
    "IdentityProviderUpdateParameters": {
      "description": "Parameters supplied to the Update Identity Provider operation.",
      "properties": {
        "allowedTenants": {
          "description": "List of Allowed Tenants when configuring Azure Active Directory login.",
          "items": {
            "type": "string"
          },
          "maxItems": 32,
          "type": "array"
        },
        "clientId": {
          "description": "Client Id of the Application in the external Identity Provider. It is App ID for Facebook login, Client ID for Google login, App ID for Microsoft.",
          "minLength": 1,
          "type": "string"
        },
        "clientSecret": {
          "description": "Client secret of the Application in external Identity Provider, used to authenticate login request. For example, it is App Secret for Facebook login, API Key for Google login, Public Key for Microsoft.",
          "minLength": 1,
          "type": "string"
        }
      }
    },
    "LoggerCollection": {
      "description": "Paged Logger list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Logger values.",
          "items": {
            "$ref": "#/definitions/LoggerResponse"
          },
          "type": "array"
        }
      }
    },
    "LoggerCreateParameters": {
      "description": "Parameters supplied to the Create Logger operation.",
      "properties": {
        "credentials": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The name and SendRule connection string of the event hub.",
          "example": {
            "connectionString": "Endpoint=endpoint and key from Azure classic portal. This property in credentials is must.",
            "name": "Event hub name. This is optional."
          },
          "type": "object"
        },
        "description": {
          "description": "Logger description.",
          "type": "string"
        },
        "isBuffered": {
          "description": "Whether records are buffered in the logger before publishing. Default is assumed to be true.",
          "type": "boolean"
        },
        "type": {
          "description": "Logger type.",
          "enum": [
            "AzureEventHub"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "LoggerTypeContract"
          }
        }
      },
      "required": [
        "type",
        "credentials"
      ]
    },
    "LoggerResponse": {
      "description": "The Logger entity in API Management represents an event sink that you can use to log API Management events. Currently the Logger entity supports logging API Management events to Azure Event Hubs.",
      "properties": {
        "credentials": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The name and SendRule connection string of the event hub.",
          "example": {
            "connectionString": "Endpoint=sb://contoso-ns.servicebus.windows.net/;SharedAccessKeyName=Sender;SharedAccessKey=...",
            "name": "apim"
          },
          "type": "object"
        },
        "description": {
          "description": "Logger description.",
          "maxLength": 256,
          "type": "string"
        },
        "id": {
          "description": "Uniquely identifies the logger within the current API Management service instance. The value is a valid relative URL in the format of /loggers/{loggerId} where {loggerId} is a logger identifier.",
          "readOnly": true,
          "type": "string"
        },
        "isBuffered": {
          "default": true,
          "description": "Whether records are buffered in the logger before publishing. Default is assumed to be true.",
          "type": "boolean"
        },
        "type": {
          "description": "Logger type.",
          "enum": [
            "AzureEventHub"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "LoggerTypeContract"
          }
        }
      },
      "required": [
        "type",
        "credentials"
      ]
    },
    "LoggerUpdateParameters": {
      "description": "Parameters supplied to the Update Logger operation.",
      "properties": {
        "credentials": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Logger credentials.",
          "type": "object"
        },
        "description": {
          "description": "Logger description.",
          "type": "string"
        },
        "isBuffered": {
          "description": "whether records are buffered in the logger before publishing. Default is assumed to be true.",
          "type": "boolean"
        },
        "type": {
          "description": "Logger type.",
          "enum": [
            "AzureEventHub"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "LoggerTypeContract"
          }
        }
      },
      "required": [
        "type"
      ]
    },
    "OAuth2AuthenticationSettingsContract": {
      "description": "API OAuth2 Authentication settings details.",
      "properties": {
        "authorizationServerId": {
          "description": "OAuth authorization server identifier.",
          "type": "string"
        },
        "scope": {
          "description": "operations scope.",
          "type": "string"
        }
      }
    },
    "OAuth2AuthorizationServerContract": {
      "description": "External OAuth authorization server settings.",
      "example": {
        "authorizationEndpoint": "https://login.microsoftonline.com/55abb68a-8ews-4565-8675-927722a8a005/oauth2/authorize?api-version=1.0",
        "authorizationMethods": [
          "GET"
        ],
        "bearerTokenSendingMethods": [
          "authorizationHeader"
        ],
        "clientAuthenticationMethod": [
          "Body"
        ],
        "clientId": "demo",
        "clientRegistrationEndpoint": "https://contoso.com/",
        "clientSecret": "demo",
        "defaultScope": null,
        "description": null,
        "grantTypes": [
          "authorizationCode"
        ],
        "id": "/authorizationServers/554be23d0fce600674232c33",
        "name": "AAD OAuth A/S",
        "resourceOwnerPassword": null,
        "resourceOwnerUsername": null,
        "supportState": false,
        "tokenBodyParameters": [],
        "tokenEndpoint": "https://login.microsoftonline.com/55abb68a-8ews-4565-8675-927722a8a005/oauth2/token?api-version=1.0"
      },
      "properties": {
        "authorizationEndpoint": {
          "description": "OAuth authorization endpoint. See http://tools.ietf.org/html/rfc6749#section-3.2.",
          "type": "string"
        },
        "authorizationMethods": {
          "description": "HTTP verbs supported by the authorization endpoint. GET must be always present. POST is optional.",
          "items": {
            "enum": [
              "HEAD",
              "OPTIONS",
              "TRACE",
              "GET",
              "POST",
              "PUT",
              "PATCH",
              "DELETE"
            ],
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "MethodContract"
            }
          },
          "type": "array"
        },
        "bearerTokenSendingMethods": {
          "description": "Specifies the mechanism by which access token is passed to the API. ",
          "externalDocs": {
            "url": "http://tools.ietf.org/html/rfc6749#section-4"
          },
          "items": {
            "enum": [
              "authorizationHeader",
              "query"
            ],
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "BearerTokenSendingMethodsContract"
            }
          },
          "type": "array"
        },
        "clientAuthenticationMethod": {
          "description": "Method of authentication supported by the token endpoint of this authorization server. Possible values are Basic and/or Body. When Body is specified, client credentials and other parameters are passed within the request body in the application/x-www-form-urlencoded format.",
          "items": {
            "enum": [
              "Basic",
              "Body"
            ],
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "ClientAuthenticationMethodContract"
            }
          },
          "type": "array"
        },
        "clientId": {
          "description": "Client or app id registered with this authorization server.",
          "type": "string"
        },
        "clientRegistrationEndpoint": {
          "description": "Optional reference to a page where client or app registration for this authorization server is performed. Contains absolute URL to entity being referenced.",
          "type": "string"
        },
        "clientSecret": {
          "description": "Client or app secret registered with this authorization server.",
          "type": "string"
        },
        "defaultScope": {
          "description": "Access token scope that is going to be requested by default. Can be overridden at the API level. Should be provided in the form of a string containing space-delimited values.",
          "externalDocs": {
            "url": "http://tools.ietf.org/html/rfc6749#section-3.3"
          },
          "type": "string"
        },
        "description": {
          "description": "Description of the authorization server. Can contain HTML formatting tags.",
          "type": "string"
        },
        "grantTypes": {
          "description": "Form of an authorization grant, which the client uses to request the access token.",
          "externalDocs": {
            "url": "http://tools.ietf.org/html/rfc6749#section-4"
          },
          "items": {
            "enum": [
              "authorizationCode",
              "implicit",
              "resourceOwnerPassword",
              "clientCredentials"
            ],
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "GrantTypesContract"
            }
          },
          "type": "array"
        },
        "id": {
          "description": "Uniquely identifies the authorization server within the current API Management service instance. The value is a valid relative URL in the format of /authorizationServers/{authsid} where {authsid} is an authorization server identifier.",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "User-friendly authorization server name.",
          "maxLength": 50,
          "minLength": 1,
          "type": "string"
        },
        "resourceOwnerPassword": {
          "description": "Can be optionally specified when resource owner password grant type is supported by this authorization server. Default resource owner password.",
          "type": "string"
        },
        "resourceOwnerUsername": {
          "description": "Can be optionally specified when resource owner password grant type is supported by this authorization server. Default resource owner username.",
          "type": "string"
        },
        "supportState": {
          "description": "If true, authorization server will include state parameter from the authorization request to its response. Client may use state parameter to raise protocol security.",
          "externalDocs": {
            "url": "http://tools.ietf.org/html/rfc6749#section-3.1"
          },
          "type": "boolean"
        },
        "tokenBodyParameters": {
          "description": "Additional parameters required by the token endpoint of this authorization server represented as an array of JSON objects with name and value string properties, i.e. {\"name\" : \"name value\", \"value\": \"a value\"}.",
          "items": {
            "$ref": "#/definitions/TokenBodyParameterContract"
          },
          "type": "array"
        },
        "tokenEndpoint": {
          "description": "OAuth token endpoint. Contains absolute URI to entity being referenced.",
          "externalDocs": {
            "url": "http://tools.ietf.org/html/rfc6749#section-3.1"
          },
          "type": "string"
        }
      },
      "required": [
        "name",
        "clientRegistrationEndpoint",
        "authorizationEndpoint",
        "clientId",
        "grantTypes"
      ]
    },
    "OAuth2AuthorizationServerUpdateContract": {
      "description": "External OAuth authorization server Update settings contract.",
      "properties": {
        "authorizationEndpoint": {
          "description": "OAuth authorization endpoint. See http://tools.ietf.org/html/rfc6749#section-3.2.",
          "type": "string"
        },
        "authorizationMethods": {
          "description": "HTTP verbs supported by the authorization endpoint. GET must be always present. POST is optional.",
          "items": {
            "enum": [
              "HEAD",
              "OPTIONS",
              "TRACE",
              "GET",
              "POST",
              "PUT",
              "PATCH",
              "DELETE"
            ],
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "MethodContract"
            }
          },
          "type": "array"
        },
        "bearerTokenSendingMethods": {
          "description": "Specifies the mechanism by which access token is passed to the API. ",
          "externalDocs": {
            "url": "http://tools.ietf.org/html/rfc6749#section-4"
          },
          "items": {
            "enum": [
              "authorizationHeader",
              "query"
            ],
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "BearerTokenSendingMethodsContract"
            }
          },
          "type": "array"
        },
        "clientAuthenticationMethod": {
          "description": "Method of authentication supported by the token endpoint of this authorization server. Possible values are Basic and/or Body. When Body is specified, client credentials and other parameters are passed within the request body in the application/x-www-form-urlencoded format.",
          "items": {
            "enum": [
              "Basic",
              "Body"
            ],
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "ClientAuthenticationMethodContract"
            }
          },
          "type": "array"
        },
        "clientId": {
          "description": "Client or app id registered with this authorization server.",
          "type": "string"
        },
        "clientRegistrationEndpoint": {
          "description": "Optional reference to a page where client or app registration for this authorization server is performed. Contains absolute URL to entity being referenced.",
          "type": "string"
        },
        "clientSecret": {
          "description": "Client or app secret registered with this authorization server.",
          "type": "string"
        },
        "defaultScope": {
          "description": "Access token scope that is going to be requested by default. Can be overridden at the API level. Should be provided in the form of a string containing space-delimited values.",
          "externalDocs": {
            "url": "http://tools.ietf.org/html/rfc6749#section-3.3"
          },
          "type": "string"
        },
        "description": {
          "description": "Description of the authorization server. Can contain HTML formatting tags.",
          "type": "string"
        },
        "grantTypes": {
          "description": "Form of an authorization grant, which the client uses to request the access token.",
          "externalDocs": {
            "url": "http://tools.ietf.org/html/rfc6749#section-4"
          },
          "items": {
            "enum": [
              "authorizationCode",
              "implicit",
              "resourceOwnerPassword",
              "clientCredentials"
            ],
            "type": "string",
            "x-ms-enum": {
              "modelAsString": false,
              "name": "GrantTypesContract"
            }
          },
          "type": "array"
        },
        "name": {
          "description": "User-friendly authorization server name.",
          "maxLength": 50,
          "minLength": 1,
          "type": "string"
        },
        "resourceOwnerPassword": {
          "description": "Can be optionally specified when resource owner password grant type is supported by this authorization server. Default resource owner password.",
          "type": "string"
        },
        "resourceOwnerUsername": {
          "description": "Can be optionally specified when resource owner password grant type is supported by this authorization server. Default resource owner username.",
          "type": "string"
        },
        "supportState": {
          "description": "If true, authorization server will include state parameter from the authorization request to its response. Client may use state parameter to raise protocol security.",
          "externalDocs": {
            "url": "http://tools.ietf.org/html/rfc6749#section-3.1"
          },
          "type": "boolean"
        },
        "tokenBodyParameters": {
          "description": "Additional parameters required by the token endpoint of this authorization server represented as an array of JSON objects with name and value string properties, i.e. {\"name\" : \"name value\", \"value\": \"a value\"}.",
          "items": {
            "$ref": "#/definitions/TokenBodyParameterContract"
          },
          "type": "array"
        },
        "tokenEndpoint": {
          "description": "OAuth token endpoint. Contains absolute URI to entity being referenced.",
          "externalDocs": {
            "url": "http://tools.ietf.org/html/rfc6749#section-3.1"
          },
          "type": "string"
        }
      }
    },
    "OpenIdConnectProviderCollection": {
      "description": "Paged OpenIdProviders list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Page values.",
          "items": {
            "$ref": "#/definitions/OpenidConnectProviderContract"
          },
          "type": "array"
        }
      }
    },
    "OpenidConnectProviderContract": {
      "description": "OpenID Connect Providers Contract.",
      "properties": {
        "clientId": {
          "description": "Client ID of developer console which is the client application.",
          "type": "string"
        },
        "clientSecret": {
          "description": "Client Secret of developer console which is the client application.",
          "type": "string"
        },
        "description": {
          "description": "User-friendly description of OpenID Connect Provider.",
          "type": "string"
        },
        "id": {
          "description": "OpenID Connect Provider identifier.",
          "type": "string"
        },
        "metadataEndpoint": {
          "description": "Metadata endpoint URI.",
          "type": "string"
        },
        "name": {
          "description": "User-friendly OpenID Connect Provider name.",
          "maxLength": 50,
          "type": "string"
        }
      },
      "required": [
        "name",
        "metadataEndpoint",
        "clientId"
      ]
    },
    "OpenidConnectProviderCreateContract": {
      "description": "Parameters supplied to the Create OpenID Connect Provider operation.",
      "properties": {
        "clientId": {
          "description": "Client ID of developer console which is the client application.",
          "type": "string"
        },
        "clientSecret": {
          "description": "Client Secret of developer console which is the client application.",
          "type": "string"
        },
        "description": {
          "description": "User-friendly description of OpenID Connect Provider.",
          "type": "string"
        },
        "metadataEndpoint": {
          "description": "Metadata endpoint URI.",
          "type": "string"
        },
        "name": {
          "description": "User-friendly OpenID Connect Provider name.",
          "maxLength": 50,
          "type": "string"
        }
      },
      "required": [
        "name",
        "metadataEndpoint",
        "clientId"
      ]
    },
    "OpenidConnectProviderUpdateContract": {
      "description": "Parameters supplied to the Update OpenID Connect Provider operation.",
      "properties": {
        "clientId": {
          "description": "Client ID of developer console which is the client application.",
          "type": "string"
        },
        "clientSecret": {
          "description": "Client Secret of developer console which is the client application.",
          "type": "string"
        },
        "description": {
          "description": "User-friendly description of OpenID Connect Provider.",
          "type": "string"
        },
        "metadataEndpoint": {
          "description": "Metadata endpoint URI.",
          "type": "string"
        },
        "name": {
          "description": "User-friendly OpenID Connect Provider name.",
          "maxLength": 50,
          "type": "string"
        }
      }
    },
    "OperationCollection": {
      "description": "Paged Operation list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Page values.",
          "items": {
            "$ref": "#/definitions/OperationContract"
          },
          "type": "array"
        }
      }
    },
    "OperationContract": {
      "description": "Api Operation details.",
      "properties": {
        "description": {
          "description": "Description of the operation. May include HTML formatting tags.",
          "maxLength": 1000,
          "type": "string"
        },
        "id": {
          "description": "Uniquely identifies the operation within the current API Management service instance. The value is a valid relative URL in the format of /apis/{aid}/operations/{id} where {aid} is an API identifier and {id} is an operation identifier.",
          "readOnly": true,
          "type": "string"
        },
        "method": {
          "description": "A Valid HTTP Operation Method. Typical Http Methods like GET, PUT, POST but not limited by only them.",
          "externalDocs": {
            "description": "As defined by RFC.",
            "url": "http://www.rfc-editor.org/rfc/rfc7230.txt"
          },
          "type": "string"
        },
        "name": {
          "description": "Operation Name.",
          "maxLength": 300,
          "minLength": 1,
          "type": "string"
        },
        "request": {
          "$ref": "#/definitions/RequestContract",
          "description": "An entity containing request details."
        },
        "responses": {
          "description": "Array of Operation responses.",
          "items": {
            "$ref": "#/definitions/ResultContract"
          },
          "type": "array"
        },
        "templateParameters": {
          "description": "Collection of URL template parameters.",
          "items": {
            "$ref": "#/definitions/ParameterContract"
          },
          "type": "array"
        },
        "urlTemplate": {
          "description": "Relative URL template identifying the target resource for this operation. May include parameters. Example: /customers/{cid}/orders/{oid}/?date={date}",
          "maxLength": 1000,
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "name",
        "method",
        "urlTemplate"
      ]
    },
    "OperationResultContract": {
      "description": "Operation Result.",
      "properties": {
        "error": {
          "$ref": "#/definitions/ErrorBodyContract"
        },
        "id": {
          "description": "Operation result identifier.",
          "type": "string"
        },
        "resultInfo": {
          "description": "Optional result info.",
          "type": "string"
        },
        "started": {
          "description": "Start time of an async operation. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        },
        "status": {
          "description": "Status of an async operation.",
          "enum": [
            "Started",
            "InProgress",
            "Succeeded",
            "Failed"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "AsyncOperationState"
          }
        },
        "updated": {
          "description": "Last update time of an async operation. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "ParameterContract": {
      "description": "Operation parameters details.",
      "properties": {
        "defaultValue": {
          "description": "Default parameter value.",
          "type": "string"
        },
        "description": {
          "description": "Parameter description.",
          "type": "string"
        },
        "name": {
          "description": "Parameter name.",
          "type": "string"
        },
        "required": {
          "description": "whether parameter is required or not.",
          "type": "boolean"
        },
        "type": {
          "description": "Parameter type.",
          "type": "string"
        },
        "values": {
          "description": "Parameter values.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "name",
        "type"
      ]
    },
    "PatchParameters": {
      "description": "Parameters supplied to the Patch operations.",
      "properties": {
        "RawJson": {
          "description": "json value.",
          "type": "object"
        }
      },
      "required": [
        "RawJson"
      ]
    },
    "PolicySnippetContract": {
      "description": "Policy snippet.",
      "properties": {
        "content": {
          "description": "Snippet content.",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "Snippet name.",
          "readOnly": true,
          "type": "string"
        },
        "scope": {
          "description": "Snippet scope.",
          "enum": [
            "Tenant",
            "Product",
            "Api",
            "Operation",
            "All"
          ],
          "readOnly": true,
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "PolicyScopeContract"
          }
        },
        "toolTip": {
          "description": "Snippet toolTip.",
          "readOnly": true,
          "type": "string"
        }
      }
    },
    "ProductCollection": {
      "description": "Paged Products list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Page values.",
          "items": {
            "$ref": "#/definitions/ProductContract"
          },
          "type": "array"
        }
      }
    },
    "ProductContract": {
      "description": "Product profile.",
      "properties": {
        "approvalRequired": {
          "description": "whether subscription approval is required. If false, new subscriptions will be approved automatically enabling developers to call the product’s APIs immediately after subscribing. If true, administrators must manually approve the subscription before the developer can any of the product’s APIs. Can be present only if subscriptionRequired property is present and has a value of false.",
          "type": "boolean"
        },
        "description": {
          "description": "Product description. May include HTML formatting tags.",
          "maxLength": 1000,
          "minLength": 1,
          "type": "string"
        },
        "id": {
          "description": "Uniquely identifies the product within the current API Management service instance. The value is a valid relative URL in the format of /products/{productId} where {productId} is a product identifier.",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "Product name.",
          "maxLength": 300,
          "minLength": 1,
          "type": "string"
        },
        "state": {
          "default": "NotPublished",
          "description": "whether product is published or not. Published products are discoverable by users of developer portal. Non published products are visible only to administrators. Default state of Product is NotPublished.",
          "enum": [
            "NotPublished",
            "Published"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "ProductStateContract"
          }
        },
        "subscriptionRequired": {
          "default": true,
          "description": "Whether a product subscription is required for accessing APIs included in this product. If true, the product is referred to as \"protected\" and a valid subscription key is required for a request to an API included in the product to succeed. If false, the product is referred to as \"open\" and requests to an API included in the product can be made without a subscription key. If property is omitted when creating a new product it's value is assumed to be true.",
          "type": "boolean"
        },
        "subscriptionsLimit": {
          "description": "Whether the number of subscriptions a user can have to this product at the same time. Set to null or omit to allow unlimited per user subscriptions. Can be present only if subscriptionRequired property is present and has a value of false.",
          "format": "int32",
          "type": "integer"
        },
        "terms": {
          "description": "Product terms of use. Developers trying to subscribe to the product will be presented and required to accept these terms before they can complete the subscription process.",
          "type": "string"
        }
      },
      "required": [
        "name"
      ]
    },
    "ProductUpdateParameters": {
      "description": "Parameters supplied to the CreateOrUpdate Product operation.",
      "properties": {
        "approvalRequired": {
          "description": "whether subscription approval is required. If false, new subscriptions will be approved automatically enabling developers to call the product’s APIs immediately after subscribing. If true, administrators must manually approve the subscription before the developer can any of the product’s APIs. Can be present only if subscriptionRequired property is present and has a value of false.",
          "type": "boolean"
        },
        "description": {
          "description": "Product description.",
          "maxLength": 500,
          "minLength": 1,
          "type": "string"
        },
        "name": {
          "description": "Product name.",
          "maxLength": 300,
          "minLength": 1,
          "type": "string"
        },
        "state": {
          "description": "whether product is published or not. Published products are discoverable by users of developer portal. Non published products are visible only to administrators.",
          "enum": [
            "NotPublished",
            "Published"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "ProductStateContract"
          }
        },
        "subscriptionRequired": {
          "description": "whether a product subscription is required for accessing APIs included in this product. If true, the product is referred to as \"protected\" and a valid subscription key is required for a request to an API included in the product to succeed. If false, the product is referred to as \"open\" and requests to an API included in the product can be made without a subscription key. If property is omitted when creating a new product it's value is assumed to be true.",
          "type": "boolean"
        },
        "subscriptionsLimit": {
          "description": "whether the number of subscriptions a user can have to this product at the same time. Set to null or omit to allow unlimited per user subscriptions. Can be present only if subscriptionRequired property is present and has a value of false.",
          "format": "int32",
          "type": "integer"
        },
        "terms": {
          "description": "Product terms and conditions. Developer will have to accept these terms before he's allowed to call product API.",
          "type": "string"
        }
      }
    },
    "PropertyCollection": {
      "description": "Paged Property list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Page values.",
          "items": {
            "$ref": "#/definitions/PropertyContract"
          },
          "type": "array"
        }
      }
    },
    "PropertyContract": {
      "description": "Property details.",
      "properties": {
        "id": {
          "description": "Uniquely identifies the property within the current API Management service instance. The value is a valid relative URL in the format of /properties/{propId} where {propId} is a property identifier.",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "Unique name of Property. It may contain only letters, digits, period, dash, and underscore characters.",
          "maxLength": 256,
          "minLength": 1,
          "pattern": "^[A-Z0-9-._]+$",
          "type": "string"
        },
        "secret": {
          "description": "Determines whether the value is a secret and should be encrypted or not. Default value is false.",
          "type": "boolean"
        },
        "tags": {
          "description": "Optional tags that when provided can be used to filter the property list.",
          "items": {
            "type": "string"
          },
          "maxItems": 32,
          "type": "array"
        },
        "value": {
          "description": "Value of the property. Can contain policy expressions. It may not be empty or consist only of whitespace.",
          "maxLength": 4096,
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "name",
        "value"
      ]
    },
    "PropertyCreateParameters": {
      "description": "Parameters supplied to the Create Property operation.",
      "properties": {
        "name": {
          "description": "Unique name of Property. It may contain only letters, digits, period, dash, and underscore characters.",
          "maxLength": 256,
          "minLength": 1,
          "pattern": "^[A-Z0-9-._]+$",
          "type": "string"
        },
        "secret": {
          "description": "Determines whether the value is a secret and should be encrypted or not. Default value is false.",
          "type": "boolean"
        },
        "tags": {
          "description": "Optional tags that when provided can be used to filter the property list.",
          "items": {
            "type": "string"
          },
          "maxItems": 32,
          "type": "array"
        },
        "value": {
          "description": "Value of the property. Can contain policy expressions. It may not be empty or consist only of whitespace.",
          "maxLength": 4096,
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "name",
        "value"
      ]
    },
    "PropertyUpdateParameters": {
      "description": "Parameters supplied to the Update Property operation.",
      "properties": {
        "name": {
          "description": "Unique name of Property. It may contain only letters, digits, period, dash, and underscore characters.",
          "maxLength": 256,
          "minLength": 1,
          "pattern": "^[A-Z0-9-._]+$",
          "type": "string"
        },
        "secret": {
          "description": "Determines whether the value is a secret and should be encrypted or not. Default value is false.",
          "type": "boolean"
        },
        "tags": {
          "description": "Optional tags that when provided can be used to filter the property list.",
          "items": {
            "type": "string"
          },
          "maxItems": 32,
          "type": "array"
        },
        "value": {
          "description": "Value of the property. Can contain policy expressions. It may not be empty or consist only of whitespace.",
          "maxLength": 4096,
          "minLength": 1,
          "type": "string"
        }
      }
    },
    "QuotaCounterCollection": {
      "description": "Paged Quota Counter list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Quota counter values.",
          "items": {
            "$ref": "#/definitions/QuotaCounterContract"
          },
          "type": "array"
        }
      }
    },
    "QuotaCounterContract": {
      "allOf": [
        {
          "$ref": "#/definitions/QuotaCounterValueContract"
        }
      ],
      "description": "Quota counter details.",
      "properties": {
        "counterKey": {
          "description": "The Key value of the Counter. Must not be empty.",
          "minLength": 1,
          "type": "string"
        },
        "periodEndTime": {
          "description": "The date of the end of Counter Period. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        },
        "periodKey": {
          "description": "Identifier of the Period for which the counter was collected. Must not be empty.",
          "minLength": 1,
          "type": "string"
        },
        "periodStartTime": {
          "description": "The date of the start of Counter Period. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        }
      },
      "required": [
        "counterKey",
        "periodKey",
        "periodStartTime",
        "periodEndTime"
      ]
    },
    "QuotaCounterValueContract": {
      "description": "Quota counter value details.",
      "properties": {
        "callsCount": {
          "description": "Number of times Counter was called.",
          "format": "int32",
          "type": "integer"
        },
        "kbTransferred": {
          "description": "Data Transferred in KiloBytes.",
          "format": "double",
          "type": "number"
        }
      }
    },
    "RegionContract": {
      "description": "Region profile.",
      "properties": {
        "isMasterRegion": {
          "description": "whether Region is the master region.",
          "type": "boolean"
        },
        "name": {
          "description": "Region name.",
          "type": "string"
        }
      },
      "required": [
        "name",
        "isMasterRegion"
      ]
    },
    "RegionListResult": {
      "description": "Lists Regions operation response details.",
      "properties": {
        "value": {
          "description": "Lists of Regions.",
          "items": {
            "$ref": "#/definitions/RegionContract"
          },
          "type": "array"
        }
      }
    },
    "ReportCollection": {
      "description": "Paged Report records list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Page values.",
          "items": {
            "$ref": "#/definitions/ReportRecordContract"
          },
          "type": "array"
        }
      }
    },
    "ReportRecordContract": {
      "description": "Report data.",
      "properties": {
        "apiId": {
          "description": "API identifier path. /apis/{apiId}",
          "type": "string"
        },
        "apiRegion": {
          "description": "API region identifier.",
          "type": "string"
        },
        "apiTimeAvg": {
          "description": "Average time it took to process request.",
          "format": "double",
          "type": "number"
        },
        "apiTimeMax": {
          "description": "Maximum time it took to process request.",
          "format": "double",
          "type": "number"
        },
        "apiTimeMin": {
          "description": "Minimum time it took to process request.",
          "format": "double",
          "type": "number"
        },
        "bandwidth": {
          "description": "Bandwidth consumed.",
          "format": "int64",
          "type": "integer"
        },
        "cacheHitCount": {
          "description": "Number of times when content was served from cache policy.",
          "format": "int32",
          "type": "integer"
        },
        "cacheMissCount": {
          "description": "Number of times content was fetched from backend.",
          "format": "int32",
          "type": "integer"
        },
        "callCountBlocked": {
          "description": "Number of calls blocked due to invalid credentials.",
          "format": "int32",
          "type": "integer"
        },
        "callCountFailed": {
          "description": "Number of calls failed due to proxy or backend errors.",
          "format": "int32",
          "type": "integer"
        },
        "callCountOther": {
          "description": "Number of other calls.",
          "format": "int32",
          "type": "integer"
        },
        "callCountSuccess": {
          "description": "Number of successful calls.",
          "format": "int32",
          "type": "integer"
        },
        "callCountTotal": {
          "description": "Total number of calls.",
          "format": "int32",
          "type": "integer"
        },
        "country": {
          "description": "Country to which this record data is related.",
          "type": "string"
        },
        "interval": {
          "description": "Length of aggregation period.",
          "format": "int64",
          "type": "integer"
        },
        "name": {
          "description": "Name depending on report endpoint specifies product, API, operation or developer name.",
          "type": "string"
        },
        "operationId": {
          "description": "Operation identifier path. /apis/{apiId}/operations/{operationId}",
          "type": "string"
        },
        "productId": {
          "description": "Product identifier path. /products/{productId}",
          "readOnly": true,
          "type": "string"
        },
        "region": {
          "description": "Country region to which this record data is related.",
          "type": "string"
        },
        "serviceTimeAvg": {
          "description": "Average time it took to process request on backend.",
          "format": "double",
          "type": "number"
        },
        "serviceTimeMax": {
          "description": "Maximum time it took to process request on backend.",
          "format": "double",
          "type": "number"
        },
        "serviceTimeMin": {
          "description": "Minimum time it took to process request on backend.",
          "format": "double",
          "type": "number"
        },
        "subscriptionId": {
          "description": "Subscription identifier path. /subscriptions/{subscriptionId}",
          "type": "string"
        },
        "timestamp": {
          "description": "Start of aggregation period. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        },
        "userId": {
          "description": "User identifier path. /users/{userId}",
          "readOnly": true,
          "type": "string"
        },
        "zip": {
          "description": "Zip code to which this record data is related.",
          "type": "string"
        }
      }
    },
    "RepresentationContract": {
      "description": "Operation request/response representation details.",
      "properties": {
        "contentType": {
          "description": "Specifies a registered or custom content type for this representation, e.g. application/xml.",
          "type": "string"
        },
        "sample": {
          "description": "An example of the representation.",
          "type": "string"
        }
      },
      "required": [
        "contentType"
      ]
    },
    "RequestContract": {
      "description": "Operation request details.",
      "properties": {
        "description": {
          "description": "Operation request description.",
          "type": "string"
        },
        "headers": {
          "description": "Collection of operation request headers.",
          "items": {
            "$ref": "#/definitions/ParameterContract"
          },
          "type": "array"
        },
        "queryParameters": {
          "description": "Collection of operation request query parameters.",
          "items": {
            "$ref": "#/definitions/ParameterContract"
          },
          "type": "array"
        },
        "representations": {
          "description": "Collection of operation request representations.",
          "items": {
            "$ref": "#/definitions/RepresentationContract"
          },
          "type": "array"
        }
      }
    },
    "ResultContract": {
      "description": "Operation response details.",
      "properties": {
        "description": {
          "description": "Operation response description.",
          "type": "string"
        },
        "representations": {
          "description": "Collection of operation response representations.",
          "items": {
            "$ref": "#/definitions/RepresentationContract"
          },
          "type": "array"
        },
        "statusCode": {
          "description": "Operation response HTTP status code.",
          "format": "int32",
          "maximum": 599,
          "minimum": 100,
          "type": "integer"
        }
      },
      "required": [
        "statusCode"
      ]
    },
    "SaveConfigurationParameter": {
      "description": "Parameters supplied to the Save Tenant Configuration operation.",
      "properties": {
        "branch": {
          "description": "The name of the Git branch in which to commit the current configuration snapshot.",
          "type": "string"
        },
        "force": {
          "description": "The value if true, the current configuration database is committed to the Git repository, even if the Git repository has newer changes that would be overwritten.",
          "type": "boolean"
        }
      },
      "required": [
        "branch"
      ]
    },
    "SubscriptionCollection": {
      "description": "Paged Subscriptions list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Page values.",
          "items": {
            "$ref": "#/definitions/SubscriptionContract"
          },
          "type": "array"
        }
      }
    },
    "SubscriptionContract": {
      "description": "Subscription details.",
      "properties": {
        "createdDate": {
          "description": "Subscription creation date. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "readOnly": true,
          "type": "string"
        },
        "endDate": {
          "description": "Date when subscription was cancelled or expired. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        },
        "expirationDate": {
          "description": "Subscription expiration date. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        },
        "id": {
          "description": "Uniquely identifies the subscription within the current API Management service instance. The value is a valid relative URL in the format of /subscriptions/{sid} where {sid} is a subscription identifier.",
          "readOnly": true,
          "type": "string"
        },
        "name": {
          "description": "The name of the subscription, or null if the subscription has no name.",
          "maxLength": 100,
          "minLength": 0,
          "type": "string"
        },
        "notificationDate": {
          "description": "Upcoming subscription expiration notification date. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        },
        "primaryKey": {
          "description": "Subscription primary key.",
          "maxLength": 256,
          "minLength": 1,
          "type": "string"
        },
        "productId": {
          "description": "The product resource identifier of the subscribed product. The value is a valid relative URL in the format of /products/{productId} where {productId} is a product identifier.",
          "type": "string"
        },
        "secondaryKey": {
          "description": "Subscription secondary key.",
          "maxLength": 256,
          "minLength": 1,
          "type": "string"
        },
        "startDate": {
          "description": "Subscription activation date. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        },
        "state": {
          "description": "Subscription state. Possible states are * active – the subscription is active, * suspended – the subscription is blocked, and the subscriber cannot call any APIs of the product, * submitted – the subscription request has been made by the developer, but has not yet been approved or rejected, * rejected – the subscription request has been denied by an administrator, * cancelled – the subscription has been cancelled by the developer or administrator, * expired – the subscription reached its expiration date and was deactivated.",
          "enum": [
            "Suspended",
            "Active",
            "Expired",
            "Submitted",
            "Rejected",
            "Cancelled"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "SubscriptionStateContract"
          }
        },
        "stateComment": {
          "description": "Optional subscription comment added by an administrator.",
          "type": "string"
        },
        "userId": {
          "description": "The user resource identifier of the subscription owner. The value is a valid relative URL in the format of /users/{uid} where {uid} is a user identifier.",
          "type": "string"
        }
      }
    },
    "SubscriptionCreateParameters": {
      "description": "Parameters supplied to the Create subscription operation.",
      "properties": {
        "name": {
          "description": "Subscription name.",
          "maxLength": 100,
          "minLength": 1,
          "type": "string"
        },
        "primaryKey": {
          "description": "Primary subscription key. If not specified during request key will be generated automatically.",
          "maxLength": 256,
          "minLength": 1,
          "type": "string"
        },
        "productId": {
          "description": "Product (product id path) for which subscription is being created in form /products/{productId}",
          "type": "string"
        },
        "secondaryKey": {
          "description": "Secondary subscription key. If not specified during request key will be generated automatically.",
          "maxLength": 256,
          "minLength": 1,
          "type": "string"
        },
        "state": {
          "description": "Initial subscription state. If no value is specified, subscription is created with Submitted state. Possible states are * active – the subscription is active, * suspended – the subscription is blocked, and the subscriber cannot call any APIs of the product, * submitted – the subscription request has been made by the developer, but has not yet been approved or rejected, * rejected – the subscription request has been denied by an administrator, * cancelled – the subscription has been cancelled by the developer or administrator, * expired – the subscription reached its expiration date and was deactivated.",
          "enum": [
            "Suspended",
            "Active",
            "Expired",
            "Submitted",
            "Rejected",
            "Cancelled"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "SubscriptionStateContract"
          }
        },
        "userId": {
          "description": "User (user id path) for whom subscription is being created in form /users/{uid}",
          "type": "string"
        }
      },
      "required": [
        "userId",
        "productId",
        "name"
      ]
    },
    "SubscriptionKeyParameterNamesContract": {
      "description": "Subscription key parameter names details.",
      "example": {
        "subscriptionKeyParameterNames": {
          "header": "customHeaderParameterName",
          "query": "customQueryParameterName"
        }
      },
      "properties": {
        "header": {
          "description": "Subscription key header name.",
          "type": "string"
        },
        "query": {
          "description": "Subscription key query string parameter name.",
          "type": "string"
        }
      }
    },
    "SubscriptionUpdateParameters": {
      "description": "Parameters supplied to the Update subscription operation.",
      "properties": {
        "expirationDate": {
          "description": "New subscription expiration date.",
          "format": "date-time",
          "type": "string"
        },
        "name": {
          "description": "Subscription name.",
          "type": "string"
        },
        "primaryKey": {
          "description": "Primary subscription key.",
          "maxLength": 256,
          "minLength": 1,
          "type": "string"
        },
        "productId": {
          "description": "Product identifier path: /products/{productId}",
          "type": "string"
        },
        "secondaryKey": {
          "description": "Secondary subscription key.",
          "maxLength": 256,
          "minLength": 1,
          "type": "string"
        },
        "state": {
          "description": "Subscription state. Possible states are * active – the subscription is active, * suspended – the subscription is blocked, and the subscriber cannot call any APIs of the product, * submitted – the subscription request has been made by the developer, but has not yet been approved or rejected, * rejected – the subscription request has been denied by an administrator, * cancelled – the subscription has been cancelled by the developer or administrator, * expired – the subscription reached its expiration date and was deactivated.",
          "enum": [
            "Suspended",
            "Active",
            "Expired",
            "Submitted",
            "Rejected",
            "Cancelled"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "SubscriptionStateContract"
          }
        },
        "stateComment": {
          "description": "Comments describing subscription state change by the administrator.",
          "type": "string"
        },
        "userId": {
          "description": "User identifier path: /users/{uid}",
          "type": "string"
        }
      }
    },
    "TenantConfigurationSyncStateContract": {
      "description": "Tenant Configuration Synchronization State.",
      "properties": {
        "branch": {
          "description": "The name of Git branch.",
          "type": "string"
        },
        "commitId": {
          "description": "The latest commit Id.",
          "type": "string"
        },
        "configurationChangeDate": {
          "description": "The date of the latest configuration change. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        },
        "isExport": {
          "description": "value indicating if last sync was save (true) or deploy (false) operation.",
          "type": "boolean"
        },
        "isGitEnabled": {
          "description": "value indicating whether Git configuration access is enabled.",
          "type": "boolean"
        },
        "isSynced": {
          "description": "value indicating if last synchronization was later than the configuration change.",
          "type": "boolean"
        },
        "syncDate": {
          "description": "The date of the latest synchronization. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        }
      }
    },
    "TenantLongRunningOperationResult": {
      "description": "A standard service response for long running tenant operations.",
      "properties": {
        "operationStatusLink": {
          "description": "operation status link.",
          "type": "string"
        },
        "requestId": {
          "type": "string"
        },
        "retryAfter": {
          "description": "The number of minutes to retry the operation after.",
          "format": "int32",
          "type": "integer"
        },
        "status": {
          "description": "Current status of the operation.",
          "enum": [
            "InProgress",
            "Succeeded",
            "Failed"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "OperationStatus"
          }
        },
        "statusCode": {
          "enum": [
            "Continue",
            "OK",
            "Created",
            "Accepted",
            "NotFound",
            "Conflict"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "HttpStatusCode"
          }
        }
      }
    },
    "TokenBodyParameterContract": {
      "description": "OAuth acquire token request body parameter (www-url-form-encoded).",
      "properties": {
        "name": {
          "description": "body parameter name.",
          "type": "string"
        },
        "value": {
          "description": "body parameter value.",
          "type": "string"
        }
      },
      "required": [
        "name",
        "value"
      ]
    },
    "UserCollection": {
      "description": "Paged Users list representation.",
      "properties": {
        "count": {
          "description": "Total records count number.",
          "format": "int64",
          "type": "integer"
        },
        "nextLink": {
          "description": "Next page link if any.",
          "type": "string"
        },
        "value": {
          "description": "Page values.",
          "items": {
            "$ref": "#/definitions/UserContract"
          },
          "type": "array"
        }
      }
    },
    "UserContract": {
      "description": "User profile.",
      "properties": {
        "email": {
          "description": "Email address.",
          "type": "string"
        },
        "firstName": {
          "description": "First name.",
          "type": "string"
        },
        "id": {
          "description": "User identifier path.",
          "type": "string"
        },
        "identities": {
          "description": "Collection of user identities.",
          "items": {
            "$ref": "#/definitions/UserIdentityContract"
          },
          "readOnly": true,
          "type": "array"
        },
        "lastName": {
          "description": "Last name.",
          "type": "string"
        },
        "note": {
          "description": "Administrator's note about given user.",
          "type": "string"
        },
        "registrationDate": {
          "description": "Date of user registration. The date conforms to the following format: `yyyy-MM-ddTHH:mm:ssZ` as specified by the ISO 8601 standard.\n",
          "format": "date-time",
          "type": "string"
        },
        "state": {
          "description": "User state.",
          "enum": [
            "Active",
            "Blocked"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "UserStateContract"
          }
        }
      }
    },
    "UserCreateParameters": {
      "description": "Parameters supplied to the Create User operation.",
      "properties": {
        "email": {
          "description": "Email address. Must not be empty and must be unique within the service instance.",
          "maxLength": 254,
          "minLength": 1,
          "type": "string"
        },
        "firstName": {
          "description": "First name.",
          "maxLength": 100,
          "minLength": 1,
          "type": "string"
        },
        "lastName": {
          "description": "Last name.",
          "maxLength": 100,
          "minLength": 1,
          "type": "string"
        },
        "note": {
          "description": "Optional note about a user set by the administrator.",
          "type": "string"
        },
        "password": {
          "description": "User Password.",
          "type": "string"
        },
        "state": {
          "default": "Active",
          "description": "Account state. Specifies whether the user is active or not. Blocked users are unable to sign into the developer portal or call any APIs of subscribed products. Default state is Active.",
          "enum": [
            "Active",
            "Blocked"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "UserStateContract"
          }
        }
      },
      "required": [
        "email",
        "password",
        "firstName",
        "lastName"
      ]
    },
    "UserIdentityContract": {
      "description": "User identity details.",
      "properties": {
        "id": {
          "description": "Identifier value within provider.",
          "type": "string"
        },
        "provider": {
          "description": "Identity provider name.",
          "type": "string"
        }
      }
    },
    "UserUpdateParameters": {
      "description": "Parameters supplied to the Update User operation.",
      "properties": {
        "email": {
          "description": "Email address.",
          "type": "string"
        },
        "firstName": {
          "description": "First name.",
          "maxLength": 100,
          "minLength": 1,
          "type": "string"
        },
        "lastName": {
          "description": "Last name.",
          "maxLength": 100,
          "minLength": 1,
          "type": "string"
        },
        "note": {
          "description": "Note about user.",
          "type": "string"
        },
        "password": {
          "description": "Password.",
          "type": "string"
        },
        "state": {
          "description": "Account state.",
          "enum": [
            "Active",
            "Blocked"
          ],
          "type": "string",
          "x-ms-enum": {
            "modelAsString": false,
            "name": "UserStateContract"
          }
        }
      }
    }
  },
  "x-ms-paths": {
    "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}?export=true": {
      "get": {
        "description": "Gets the details of the API specified by its identifier.",
        "operationId": "Apis_Export",
        "parameters": [
          {
            "$ref": "#/parameters/ResourceGroupNameParameter"
          },
          {
            "$ref": "#/parameters/ServiceNameParameter"
          },
          {
            "$ref": "#/parameters/ApiIdParameter"
          },
          {
            "$ref": "#/parameters/ApiVersionParameter"
          },
          {
            "$ref": "#/parameters/SubscriptionIdParameter"
          }
        ],
        "responses": {
          "200": {
            "description": "The response contains a stream with a full set of API metadata and includes API entity with an embedded array of operation entities.",
            "schema": {
              "$ref": "#/definitions/ApiExportResult"
            }
          },
          "default": {
            "description": "Error response describing why the operation failed.",
            "schema": {
              "$ref": "#/definitions/ErrorBodyContract"
            }
          }
        },
        "tags": [
          "Apis"
        ]
      }
    }
  }
}