{ "swagger": "2.0", "info": { "title": "HybridComputeManagementClient", "description": "The Hybrid Compute Management Client.", "version": "2019-12-12" }, "host": "management.azure.com", "schemes": [ "https" ], "consumes": [ "application/json" ], "produces": [ "application/json" ], "security": [ { "azure_auth": [ "user_impersonation" ] } ], "securityDefinitions": { "azure_auth": { "type": "oauth2", "authorizationUrl": "https://login.microsoftonline.com/common/oauth2/authorize", "flow": "implicit", "description": "Azure Active Directory OAuth2 Flow", "scopes": { "user_impersonation": "impersonate your user account" } } }, "paths": { "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HybridCompute/machines/{name}": { "put": { "tags": [ "machines" ], "operationId": "Machines_CreateOrUpdate", "description": "The operation to create or update a hybrid machine resource identity in Azure.", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" }, { "name": "resourceGroupName", "in": "path", "required": true, "type": "string", "description": "The name of the resource group." }, { "name": "name", "in": "path", "required": true, "type": "string", "description": "The name of the hybrid machine." }, { "name": "parameters", "in": "body", "required": true, "schema": { "$ref": "#/definitions/Machine" }, "description": "Parameters supplied to the Create hybrid machine operation." } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/Machine" } }, "default": { "description": "Error response describing why the operation failed.", "schema": { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Create or update a machine resource.": { "$ref": "./examples/Machines_CreateOrUpdate.json" } } }, "patch": { "tags": [ "machines" ], "operationId": "Machines_Update", "description": "The operation to update a hybrid machine.", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" }, { "name": "resourceGroupName", "in": "path", "required": true, "type": "string", "description": "The name of the resource group." }, { "name": "name", "in": "path", "required": true, "type": "string", "description": "The name of the hybrid machine." }, { "name": "parameters", "in": "body", "required": true, "schema": { "$ref": "#/definitions/MachineUpdate" }, "description": "Parameters supplied to the Update hybrid machine operation." } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/Machine" } }, "default": { "description": "Error response describing why the operation failed.", "schema": { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Update a machine resource.": { "$ref": "./examples/Machines_Update.json" } } }, "delete": { "tags": [ "machines" ], "operationId": "Machines_Delete", "description": "The operation to remove a hybrid machine identity in Azure.", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" }, { "name": "resourceGroupName", "in": "path", "required": true, "type": "string", "description": "The name of the resource group." }, { "name": "name", "in": "path", "required": true, "type": "string", "description": "The name of the hybrid machine." } ], "responses": { "200": { "description": "OK" }, "204": { "description": "No Content" }, "default": { "description": "Error response describing why the operation failed.", "schema": { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Delete a machine resource.": { "$ref": "./examples/Machines_Delete.json" } } }, "get": { "tags": [ "machines" ], "operationId": "Machines_Get", "description": "Retrieves information about the model view or the instance view of a hybrid machine.", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" }, { "name": "resourceGroupName", "in": "path", "required": true, "type": "string", "description": "The name of the resource group." }, { "name": "name", "in": "path", "required": true, "type": "string", "description": "The name of the hybrid machine." }, { "name": "$expand", "in": "query", "required": false, "type": "string", "description": "The expand expression to apply on the operation.", "enum": [ "instanceView" ], "x-ms-enum": { "name": "InstanceViewTypes", "modelAsString": true } } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/Machine" } }, "default": { "description": "Error response describing why the operation failed.", "schema": { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Get a machine resource.": { "$ref": "./examples/Machines_Get.json" } } } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HybridCompute/machines/{name}/reconnect": { "post": { "tags": [ "machines" ], "operationId": "Machines_Reconnect", "description": "The operation to reconnect a hybrid machine resource to its identity in Azure.", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" }, { "name": "resourceGroupName", "in": "path", "required": true, "type": "string", "description": "The name of the resource group." }, { "name": "name", "in": "path", "required": true, "type": "string", "description": "The name of the hybrid machine." }, { "name": "parameters", "in": "body", "required": true, "schema": { "$ref": "#/definitions/MachineReconnect" }, "description": "Parameters supplied to the Reconnect hybrid machine operation." } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/Machine" } }, "default": { "description": "Error response describing why the operation failed.", "schema": { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Reconnect a machine resource.": { "$ref": "./examples/Machines_Reconnect.json" } } } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HybridCompute/machines": { "get": { "tags": [ "machines" ], "operationId": "Machines_ListByResourceGroup", "description": "Lists all the hybrid machines in the specified resource group. Use the nextLink property in the response to get the next page of hybrid machines.", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" }, { "name": "resourceGroupName", "in": "path", "required": true, "type": "string", "description": "The name of the resource group." } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/MachineListResult" } }, "default": { "description": "Error response describing why the operation failed.", "schema": { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Get all machine resources in a resource group.": { "$ref": "./examples/Machines_ListByResourceGroup.json" } }, "x-ms-pageable": { "nextLinkName": "nextLink" } } }, "/subscriptions/{subscriptionId}/providers/Microsoft.HybridCompute/machines": { "get": { "tags": [ "machines" ], "operationId": "Machines_ListBySubscription", "description": "Lists all the hybrid machines in the specified subscription. Use the nextLink property in the response to get the next page of hybrid machines.", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/MachineListResult" } }, "default": { "description": "Error response describing why the operation failed.", "schema": { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/ErrorResponse" } } }, "x-ms-examples": { "Get all machine resources in a subscription.": { "$ref": "./examples/Machines_ListBySubscription.json" } }, "x-ms-pageable": { "nextLinkName": "nextLink" } } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HybridCompute/machines/{name}/extensions/{extensionName}": { "put": { "tags": [ "MachineExtensions" ], "operationId": "MachineExtensions_CreateOrUpdate", "description": "The operation to create or update the extension.", "parameters": [ { "name": "resourceGroupName", "in": "path", "required": true, "type": "string", "description": "The name of the resource group." }, { "name": "name", "in": "path", "required": true, "type": "string", "description": "The name of the machine where the extension should be created or updated." }, { "name": "extensionName", "in": "path", "required": true, "type": "string", "description": "The name of the machine extension." }, { "name": "extensionParameters", "in": "body", "required": true, "schema": { "$ref": "#/definitions/MachineExtension" }, "description": "Parameters supplied to the Create Machine Extension operation." }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/MachineExtension" } }, "202": { "description": "Accepted" } }, "x-ms-examples": { "Create or Update a Machine Extension": { "$ref": "./examples/PUTExtension.json" } }, "x-ms-long-running-operation": true }, "patch": { "tags": [ "MachineExtensions" ], "operationId": "MachineExtensions_Update", "description": "The operation to create or update the extension.", "parameters": [ { "name": "resourceGroupName", "in": "path", "required": true, "type": "string", "description": "The name of the resource group." }, { "name": "name", "in": "path", "required": true, "type": "string", "description": "The name of the machine where the extension should be created or updated." }, { "name": "extensionName", "in": "path", "required": true, "type": "string", "description": "The name of the machine extension." }, { "name": "extensionParameters", "in": "body", "required": true, "schema": { "$ref": "#/definitions/MachineExtensionUpdate" }, "description": "Parameters supplied to the Create Machine Extension operation." }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/MachineExtension" } }, "202": { "description": "Accepted" } }, "x-ms-examples": { "Create or Update a Machine Extension": { "$ref": "./examples/UpdateExtension.json" } }, "x-ms-long-running-operation": true }, "delete": { "tags": [ "MachineExtensions" ], "operationId": "MachineExtensions_Delete", "description": "The operation to delete the extension.", "parameters": [ { "name": "resourceGroupName", "in": "path", "required": true, "type": "string", "description": "The name of the resource group." }, { "name": "name", "in": "path", "required": true, "type": "string", "description": "The name of the machine where the extension should be deleted." }, { "name": "extensionName", "in": "path", "required": true, "type": "string", "description": "The name of the machine extension." }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" } ], "responses": { "200": { "description": "OK" }, "202": { "description": "Accepted" }, "204": { "description": "No Content" } }, "x-ms-long-running-operation": true, "x-ms-examples": { "Delete a Machine Extension": { "$ref": "./examples/DELETEExtension.json" } } }, "get": { "tags": [ "MachineExtensions" ], "operationId": "MachineExtensions_Get", "description": "The operation to get the extension.", "parameters": [ { "name": "resourceGroupName", "in": "path", "required": true, "type": "string", "description": "The name of the resource group." }, { "name": "name", "in": "path", "required": true, "type": "string", "description": "The name of the machine containing the extension." }, { "name": "extensionName", "in": "path", "required": true, "type": "string", "description": "The name of the machine extension." }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/MachineExtension" } } }, "x-ms-examples": { "GET Machine Extension": { "$ref": "./examples/GETExtension.json" } } } }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.HybridCompute/machines/{name}/extensions": { "get": { "tags": [ "MachineExtensions" ], "operationId": "MachineExtensions_List", "description": "The operation to get all extensions of a non-Azure machine", "parameters": [ { "name": "resourceGroupName", "in": "path", "required": true, "type": "string", "description": "The name of the resource group." }, { "name": "name", "in": "path", "required": true, "type": "string", "description": "The name of the machine containing the extension." }, { "name": "$expand", "in": "query", "required": false, "type": "string", "description": "The expand expression to apply on the operation." }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" }, { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/SubscriptionIdParameter" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/MachineExtensionsListResult" } } }, "x-ms-pageable": { "nextLinkName": "nextLink" }, "x-ms-examples": { "GET all Machine Extensions": { "$ref": "./examples/LISTExtension.json" } } } }, "/providers/Microsoft.HybridCompute/operations": { "get": { "tags": [ "operations" ], "operationId": "Operations_List", "description": "Gets a list of hybrid compute operations.", "parameters": [ { "$ref": "../../../../../common-types/resource-management/v1/types.json#/parameters/ApiVersionParameter" } ], "responses": { "200": { "description": "OK", "schema": { "$ref": "#/definitions/OperationListResult" } }, "default": { "description": "Error response describing why the operation failed.", "schema": { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/ErrorResponse" } } }, "x-ms-pageable": { "nextLinkName": null } } } }, "definitions": { "OperationListResult": { "properties": { "value": { "type": "array", "readOnly": true, "items": { "$ref": "#/definitions/OperationValue" }, "description": "The list of compute operations" } }, "description": "The List Compute Operation operation response." }, "OperationValue": { "properties": { "origin": { "type": "string", "readOnly": true, "description": "The origin of the compute operation." }, "name": { "type": "string", "readOnly": true, "description": "The name of the compute operation." }, "display": { "x-ms-client-flatten": true, "allOf": [ { "$ref": "#/definitions/OperationValueDisplay" } ], "description": "Display properties" } }, "description": "Describes the properties of a Compute Operation value." }, "OperationValueDisplay": { "properties": { "operation": { "type": "string", "readOnly": true, "description": "The display name of the compute operation." }, "resource": { "type": "string", "readOnly": true, "description": "The display name of the resource the operation applies to." }, "description": { "type": "string", "readOnly": true, "description": "The description of the operation." }, "provider": { "type": "string", "readOnly": true, "description": "The resource provider for the operation." } }, "description": "Describes the properties of a Hybrid Compute Operation Value Display." }, "OSProfile": { "readOnly": true, "properties": { "computerName": { "type": "string", "readOnly": true, "description": "Specifies the host OS name of the hybrid machine." } }, "description": "Specifies the operating system settings for the hybrid machine." }, "MachineProperties": { "properties": { "locationData": { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/locationData" }, "osProfile": { "allOf": [ { "$ref": "#/definitions/OSProfile" } ], "description": "Specifies the operating system settings for the hybrid machine." }, "provisioningState": { "readOnly": true, "type": "string", "description": "The provisioning state, which only appears in the response." }, "status": { "readOnly": true, "type": "string", "description": "The status of the hybrid machine agent.", "enum": [ "Connected", "Disconnected", "Error" ], "x-ms-enum": { "name": "StatusTypes", "modelAsString": true } }, "lastStatusChange": { "readOnly": true, "type": "string", "format": "date-time", "description": "The time of the last status change." }, "errorDetails": { "readOnly": true, "type": "array", "items": { "$ref": "#/definitions/ErrorDetail" }, "description": "Details about the error state." }, "agentVersion": { "readOnly": true, "type": "string", "description": "The hybrid machine agent full version." }, "vmId": { "type": "string", "x-ms-mutability": [ "read", "create" ], "description": "Specifies the hybrid machine unique ID." }, "displayName": { "readOnly": true, "type": "string", "description": "Specifies the hybrid machine display name." }, "machineFqdn": { "readOnly": true, "type": "string", "description": "Specifies the hybrid machine FQDN." }, "clientPublicKey": { "type": "string", "description": "Public Key that the client provides to be used during initial resource onboarding" }, "osName": { "readOnly": true, "type": "string", "description": "The Operating System running on the hybrid machine." }, "osVersion": { "readOnly": true, "type": "string", "description": "The version of Operating System running on the hybrid machine." }, "extensions": { "type": "array", "items": { "$ref": "#/definitions/MachineExtensionInstanceView" }, "description": "Machine Extensions information" } }, "description": "Describes the properties of a hybrid machine." }, "MachineReconnectProperties": { "properties": { "vmId": { "type": "string", "description": "Specifies the hybrid machine unique ID." }, "clientPublicKey": { "type": "string", "description": "Public Key that the client provides to be used during initial resource onboarding." } }, "description": "Describes the properties required to reconnect a hybrid machine." }, "MachineUpdateProperties": { "properties": { "locationData": { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/locationData" } }, "description": "Describes the ARM updatable properties of a hybrid machine." }, "Machine": { "properties": { "properties": { "x-ms-client-flatten": true, "allOf": [ { "$ref": "#/definitions/MachineProperties" } ], "description": "Hybrid Compute Machine properties" }, "identity": { "allOf": [ { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/Identity" } ] } }, "allOf": [ { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/TrackedResource" } ], "description": "Describes a hybrid machine." }, "MachineUpdate": { "properties": { "identity": { "x-ms-client-flatten": true, "allOf": [ { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/Identity" } ], "description": "Hybrid Compute Machine Managed Identity" }, "properties": { "x-ms-client-flatten": true, "allOf": [ { "$ref": "#/definitions/MachineUpdateProperties" } ], "description": "Hybrid Compute Machine properties" } }, "allOf": [ { "$ref": "#/definitions/UpdateResource" } ], "description": "Describes a hybrid machine Update." }, "MachineReconnect": { "properties": { "properties": { "x-ms-client-flatten": true, "allOf": [ { "$ref": "#/definitions/MachineReconnectProperties" } ], "description": "Hybrid Compute Machine properties" } }, "description": "Describes a hybrid machine reconnect." }, "MachineListResult": { "properties": { "value": { "type": "array", "items": { "$ref": "#/definitions/Machine" }, "description": "The list of hybrid machines." }, "nextLink": { "type": "string", "description": "The URI to fetch the next page of Machines. Call ListNext() with this URI to fetch the next page of hybrid machines." } }, "required": [ "value" ], "description": "The List hybrid machine operation response." }, "UpdateResource": { "description": "The Update Resource model definition.", "properties": { "tags": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Resource tags" } } }, "ErrorDetail": { "title": "Error details.", "type": "object", "properties": { "code": { "description": "The error's code.", "type": "string" }, "message": { "description": "A human readable error message.", "type": "string" }, "target": { "description": "Indicates which property in the request is responsible for the error.", "type": "string" }, "details": { "description": "Additional error details.", "type": "array", "items": { "$ref": "#/definitions/ErrorDetail" } } }, "required": [ "code", "message" ] }, "MachineExtension": { "properties": { "properties": { "x-ms-client-flatten": true, "allOf": [ { "$ref": "#/definitions/MachineExtensionProperties" } ], "description": "Describes Machine Extension Properties." } }, "allOf": [ { "$ref": "../../../../../common-types/resource-management/v1/types.json#/definitions/TrackedResource" } ], "description": "Describes a Machine Extension." }, "MachineExtensionUpdate": { "properties": { "properties": { "x-ms-client-flatten": true, "allOf": [ { "$ref": "#/definitions/MachineExtensionUpdateProperties" } ], "description": "Describes Machine Extension Update Properties." } }, "allOf": [ { "$ref": "#/definitions/UpdateResource" } ], "description": "Describes a Machine Extension Update." }, "MachineExtensionProperties": { "properties": { "forceUpdateTag": { "type": "string", "description": "How the extension handler should be forced to update even if the extension configuration has not changed." }, "publisher": { "type": "string", "description": "The name of the extension handler publisher." }, "type": { "type": "string", "description": "Specifies the type of the extension; an example is \"CustomScriptExtension\"." }, "typeHandlerVersion": { "type": "string", "description": "Specifies the version of the script handler." }, "autoUpgradeMinorVersion": { "type": "boolean", "description": "Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true." }, "settings": { "type": "object", "description": "Json formatted public settings for the extension." }, "protectedSettings": { "type": "object", "description": "The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all." }, "provisioningState": { "readOnly": true, "type": "string", "description": "The provisioning state, which only appears in the response." }, "instanceView": { "allOf": [ { "$ref": "#/definitions/MachineExtensionInstanceView" } ], "description": "The machine extension instance view." } }, "description": "Describes the properties of a Machine Extension." }, "MachineExtensionUpdateProperties": { "properties": { "forceUpdateTag": { "type": "string", "description": "How the extension handler should be forced to update even if the extension configuration has not changed." }, "publisher": { "type": "string", "description": "The name of the extension handler publisher." }, "type": { "type": "string", "description": "Specifies the type of the extension; an example is \"CustomScriptExtension\"." }, "typeHandlerVersion": { "type": "string", "description": "Specifies the version of the script handler." }, "autoUpgradeMinorVersion": { "type": "boolean", "description": "Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true." }, "settings": { "type": "object", "description": "Json formatted public settings for the extension." }, "protectedSettings": { "type": "object", "description": "The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all." } }, "description": "Describes the properties of a Machine Extension." }, "MachineExtensionInstanceView": { "properties": { "name": { "type": "string", "description": "The machine extension name." }, "type": { "type": "string", "description": "Specifies the type of the extension; an example is \"CustomScriptExtension\"." }, "typeHandlerVersion": { "type": "string", "description": "Specifies the version of the script handler." }, "status": { "properties": { "code": { "type": "string", "description": "The status code." }, "level": { "type": "string", "description": "The level code.", "enum": [ "Info", "Warning", "Error" ], "x-ms-enum": { "name": "StatusLevelTypes", "modelAsString": true } }, "displayStatus": { "type": "string", "description": "The short localizable label for the status." }, "message": { "type": "string", "description": "The detailed status message, including for alerts and error messages." }, "time": { "type": "string", "format": "date-time", "description": "The time of the status." } }, "description": "Instance view status." } }, "description": "Describes the Machine Extension Instance View." }, "MachineExtensionsListResult": { "properties": { "value": { "type": "array", "items": { "$ref": "#/definitions/MachineExtension" }, "description": "The list of extensions" }, "nextLink": { "type": "string", "description": "The uri to fetch the next page of machine extensions. Call ListNext() with this to fetch the next page of extensions." } }, "description": "Describes the Machine Extensions List Result." } } }