createPolicyVersion method

Future<CreatePolicyVersionResponse> createPolicyVersion({
  1. required String policyDocument,
  2. required String policyName,
  3. bool? setAsDefault,
})

Creates a new version of the specified AWS IoT policy. To update a policy, create a new policy version. A managed policy can have up to five versions. If the policy has five versions, you must use DeletePolicyVersion to delete an existing version before you create a new one.

Optionally, you can set the new version as the policy's default version. The default version is the operative version (that is, the version that is in effect for the certificates to which the policy is attached).

May throw ResourceNotFoundException. May throw MalformedPolicyException. May throw VersionsLimitExceededException. May throw InvalidRequestException. May throw ThrottlingException. May throw UnauthorizedException. May throw ServiceUnavailableException. May throw InternalFailureException.

Parameter policyDocument : The JSON document that describes the policy. Minimum length of 1. Maximum length of 2048, excluding whitespace.

Parameter policyName : The policy name.

Parameter setAsDefault : Specifies whether the policy version is set as the default. When this parameter is true, the new policy version becomes the operative version (that is, the version that is in effect for the certificates to which the policy is attached).

Implementation

Future<CreatePolicyVersionResponse> createPolicyVersion({
  required String policyDocument,
  required String policyName,
  bool? setAsDefault,
}) async {
  ArgumentError.checkNotNull(policyDocument, 'policyDocument');
  ArgumentError.checkNotNull(policyName, 'policyName');
  _s.validateStringLength(
    'policyName',
    policyName,
    1,
    128,
    isRequired: true,
  );
  final $query = <String, List<String>>{
    if (setAsDefault != null) 'setAsDefault': [setAsDefault.toString()],
  };
  final $payload = <String, dynamic>{
    'policyDocument': policyDocument,
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'POST',
    requestUri: '/policies/${Uri.encodeComponent(policyName)}/version',
    queryParams: $query,
    exceptionFnMap: _exceptionFns,
  );
  return CreatePolicyVersionResponse.fromJson(response);
}