---
title: "POST /v1/{+parent}/rolloutKinds"
method: POST
path: "/v1/{+parent}/rolloutKinds"
tags: ["projects"]
---

# POST /v1/{+parent}/rolloutKinds

`POST /v1/{+parent}/rolloutKinds`

Create a new rollout kind.

## Path parameters

- `parent` string, required

## Query parameters

- `requestId` string
- `rolloutKindId` string
- `validateOnly` boolean

## Request body

- RolloutKind — An object that describes various settings of Rollout execution. Includes built-in and customizable policies.
  - `etag` string — Output only. An opaque value that uniquely identifies a version or generation of a resource. It can be used to confirm that the client and server agree on the ordering of a resource being written.
  - `createTime` string, google-datetime — Output only. The timestamp when the resource was created.
  - `errorBudget` ErrorBudget — The configuration for error budget. If the number of failed units exceeds max(allowed_count, allowed_ratio * total_units), the rollout will be paused.
    - `allowedCount` integer — Optional. The maximum number of failed units allowed in a location without pausing the rollout.
    - `allowedPercentage` integer — Optional. The maximum percentage of units allowed to fail (0, 100] within a location without pausing the rollout.
  - `annotations` object — Optional. Annotations is an unstructured key-value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/user-guide/annotations
  - `rolloutOrchestrationStrategy` string — Optional. The strategy used for executing a Rollout. This is a required field. There are two supported values strategies which are used to control - "Google.Cloud.Simple.AllAtOnce" - "Google.Cloud.Simple.OneLocationAtATime" A rollout with one of these simple strategies will rollout across all locations defined in the associated UnitKind's Saas Locations.
  - `unitFilter` string — Optional. CEL(https://github.com/google/cel-spec) formatted filter string against Unit. The filter will be applied to determine the eligible unit population. This filter can only reduce, but not expand the scope of the rollout.
  - `name` string — Identifier. The resource name (full URI of the resource) following the standard naming scheme: "projects/{project}/locations/{location}/rolloutKinds/{rollout_kind_id}"
  - `unitKind` string — Required. Immutable. UnitKind that this rollout kind corresponds to. Rollouts stemming from this rollout kind will target the units of this unit kind. In other words, this defines the population of target units to be upgraded by rollouts.
  - `unitUpdatePacing` UnitUpdatePacing — UnitUpdatePacing defines the policy for the maximum number of unit operations that can run for a rollout in parallel in a single region.
    - `maxConcurrentOperationsPercent` Decimal — A representation of a decimal value, such as 2.5. Clients may convert values into language-native decimal formats, such as Java's [BigDecimal](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html) or Python's [decimal.Decimal](https://docs.python.org/3/library/decimal.html).
      - `value` string — The decimal value, as a string. The string representation consists of an optional sign, `+` (`U+002B`) or `-` (`U+002D`), followed by a sequence of zero or more decimal digits ("the integer"), optionally followed by a fraction, optionally followed by an exponent. An empty string **should** be interpreted as `0`. The fraction consists of a decimal point followed by zero or more decimal digits. The string must contain at least one digit in either the integer or the fraction. The number formed by the sign, the integer and the fraction is referred to as the significand. The exponent consists of the character `e` (`U+0065`) or `E` (`U+0045`) followed by one or more decimal digits. Services **should** normalize decimal values before storing them by: - Removing an explicitly-provided `+` sign (`+2.5` -> `2.5`). - Replacing a zero-length integer value with `0` (`.5` -> `0.5`). - Coercing the exponent character to upper-case, with explicit sign (`2.5e8` -> `2.5E+8`). - Removing an explicitly-provided zero exponent (`2.5E0` -> `2.5`). Services **may** perform additional normalization based on its own needs and the internal decimal implementation selected, such as shifting the decimal point and exponent value together (example: `2.5E-1` <-> `0.25`). Additionally, services **may** preserve trailing zeroes in the fraction to indicate increased precision, but are not required to do so. Note that only the `.` character is supported to divide the integer and the fraction; `,` **should not** be supported regardless of locale. Additionally, thousand separators **should not** be supported. If a service does support them, values **must** be normalized. The ENBF grammar is: DecimalString = '' | [Sign] Significand [Exponent]; Sign = '+' | '-'; Significand = Digits '.' | [Digits] '.' Digits; Exponent = ('e' | 'E') [Sign] Digits; Digits = { '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' }; Services **should** clearly document the range of supported values, the maximum supported precision (total number of digits), and, if applicable, the scale (number of digits after the decimal point), as well as how it behaves when receiving out-of-bounds values. Services **may** choose to accept values passed as input even when the value has a higher precision or scale than the service supports, and **should** round the value to fit the supported scale. Alternatively, the service **may** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) if precision would be lost. Services **should** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) if the service receives a value outside of the supported range.
    - `maxConcurrentOperationsCount` integer — Optional. An absolute cap on concurrent units operations. If both percent and count are provided, the system uses the MINIMUM (most restrictive).
  - `updateUnitKindStrategy` 'UPDATE_UNIT_KIND_STRATEGY_UNSPECIFIED' | 'UPDATE_UNIT_KIND_STRATEGY_ON_START' | 'UPDATE_UNIT_KIND_STRATEGY_NEVER' — Optional. The config for updating the unit kind. By default, the unit kind will be updated on the rollout start.
  - `labels` object — Optional. The labels on the resource, which can be used for categorization. similar to Kubernetes resource labels.
  - `uid` string — Output only. The unique identifier of the resource. UID is unique in the time and space for this resource within the scope of the service. It is typically generated by the server on successful creation of a resource and must not be changed. UID is used to uniquely identify resources with resource name reuses. This should be a UUID4.
  - `updateTime` string, google-datetime — Output only. The timestamp when the resource was last updated. Any change to the resource made by users must refresh this value. Changes to a resource made by the service should refresh this value.

## Response `200`

Successful response

---

[API](https://skmtc.net/google/apis/saasservicemgmt.md) · [All operations](https://skmtc.net/google/apis/saasservicemgmt/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/google/saasservicemgmt/revisions/f94de4124ae2/schema)
