Update Service

Updates a Service Fabric service using the specified update description.

This API allows updating properties of a running Service Fabric service. The set of properties that can be updated are a subset of the properties that were specified at the time of creating the service. The current set of properties can be obtained using GetServiceDescription API. Note that updating the properties of a running service is different than upgrading your application using StartApplicationUpgrade API. The upgrade is a long running background operation that involves moving the application from one version to another, one upgrade domain at a time, whereas update applies the new properties immediately to the service.

Request

Method Request URI
POST /Services/{serviceId}/$/Update?api-version=6.0&timeout={timeout}

Parameters

Name Type Required Location
serviceId string Yes Path
api-version string Yes Query
timeout integer (int64) No Query
ServiceUpdateDescription ServiceUpdateDescription Yes Body

serviceId

Type: string
Required: Yes

The identity of the service. This ID is typically the full name of the service without the 'fabric:' URI scheme. Starting from version 6.0, hierarchical names are delimited with the "~" character. For example, if the service name is "fabric:/myapp/app1/svc1", the service identity would be "myapp~app1~svc1" in 6.0+ and "myapp/app1/svc1" in previous versions.


api-version

Type: string
Required: Yes
Default: 6.0

The version of the API. This parameter is required and its value must be '6.0'.

Service Fabric REST API version is based on the runtime version in which the API was introduced or was changed. Service Fabric runtime supports more than one version of the API. This is the latest supported version of the API. If a lower API version is passed, the returned response may be different from the one documented in this specification.

Additionally the runtime accept any version that is higher than the latest supported version up to the current version of the runtime. So if the latest API version is 6.0, but if the runtime is 6.1, in order to make it easier to write the clients, the runtime will accept version 6.1 for that API. However the behavior of the API will be as per the documented 6.0 version.


timeout

Type: integer (int64)
Required: No
Default: 60
InclusiveMaximum: 4294967295
InclusiveMinimum: 1

The server timeout for performing the operation in seconds. This timeout specifies the time duration that the client is willing to wait for the requested operation to complete. The default value for this parameter is 60 seconds.


ServiceUpdateDescription

Type: ServiceUpdateDescription
Required: Yes

The information necessary to update a service.

Responses

HTTP Status Code Description Response Schema
200 (OK) A successful operation will return 202 status code.
All other status codes The detailed error response.
FabricError

Examples

Stateless service

This example shows how to update placement and load balancing related settings of a stateless Service Fabric service.

Request

POST http://localhost:19080/Services/test~test1/$/Update?api-version=6.0
Body
{
  "ServiceKind": "Stateless",
  "Flags": "1568",
  "PlacementConstraints": "Color==Red",
  "DefaultMoveCost": "High",
  "ScalingPolicies": [
    {
      "ScalingTrigger": {
        "Kind": "AveragePartitionLoad",
        "MetricName": "servicefabric:/_CpuCores",
        "LowerLoadThreshold": "0.500000",
        "UpperLoadThreshold": "0.800000",
        "ScaleIntervalInSeconds": "900"
      },
      "ScalingMechanism": {
        "Kind": "PartitionInstanceCount",
        "MinInstanceCount": "4",
        "MaxInstanceCount": "6",
        "ScaleIncrement": "2"
      }
    }
  ]
}

200 Response

Body

The response body is empty.

Stateful service

This example shows how to update placement and load balancing related settings of a stateful Service Fabric service.

Request

POST http://localhost:19080/Services/test~test2/$/Update?api-version=6.0
Body
{
  "ServiceKind": "Stateful",
  "Flags": "40",
  "PlacementConstraints": "Color==Green",
  "StandByReplicaKeepDurationSeconds": "1000"
}

200 Response

Body

The response body is empty.