createSecurityProfile method

Future<CreateSecurityProfileResponse> createSecurityProfile({
  1. required String securityProfileName,
  2. List<String>? additionalMetricsToRetain,
  3. List<MetricToRetain>? additionalMetricsToRetainV2,
  4. Map<AlertTargetType, AlertTarget>? alertTargets,
  5. List<Behavior>? behaviors,
  6. String? securityProfileDescription,
  7. List<Tag>? tags,
})

Creates a Device Defender security profile.

May throw InvalidRequestException. May throw ResourceAlreadyExistsException. May throw ThrottlingException. May throw InternalFailureException.

Parameter securityProfileName : The name you are giving to the security profile.

Parameter additionalMetricsToRetain : Please use CreateSecurityProfileRequest$additionalMetricsToRetainV2 instead.

A list of metrics whose data is retained (stored). By default, data is retained for any metric used in the profile's behaviors, but it is also retained for any metric specified here. Can be used with custom metrics; cannot be used with dimensions.

Parameter additionalMetricsToRetainV2 : A list of metrics whose data is retained (stored). By default, data is retained for any metric used in the profile's behaviors, but it is also retained for any metric specified here. Can be used with custom metrics; cannot be used with dimensions.

Parameter alertTargets : Specifies the destinations to which alerts are sent. (Alerts are always sent to the console.) Alerts are generated when a device (thing) violates a behavior.

Parameter behaviors : Specifies the behaviors that, when violated by a device (thing), cause an alert.

Parameter securityProfileDescription : A description of the security profile.

Parameter tags : Metadata that can be used to manage the security profile.

Implementation

Future<CreateSecurityProfileResponse> createSecurityProfile({
  required String securityProfileName,
  List<String>? additionalMetricsToRetain,
  List<MetricToRetain>? additionalMetricsToRetainV2,
  Map<AlertTargetType, AlertTarget>? alertTargets,
  List<Behavior>? behaviors,
  String? securityProfileDescription,
  List<Tag>? tags,
}) async {
  ArgumentError.checkNotNull(securityProfileName, 'securityProfileName');
  _s.validateStringLength(
    'securityProfileName',
    securityProfileName,
    1,
    128,
    isRequired: true,
  );
  _s.validateStringLength(
    'securityProfileDescription',
    securityProfileDescription,
    0,
    1000,
  );
  final $payload = <String, dynamic>{
    if (additionalMetricsToRetain != null)
      'additionalMetricsToRetain': additionalMetricsToRetain,
    if (additionalMetricsToRetainV2 != null)
      'additionalMetricsToRetainV2': additionalMetricsToRetainV2,
    if (alertTargets != null)
      'alertTargets': alertTargets.map((k, e) => MapEntry(k.toValue(), e)),
    if (behaviors != null) 'behaviors': behaviors,
    if (securityProfileDescription != null)
      'securityProfileDescription': securityProfileDescription,
    if (tags != null) 'tags': tags,
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'POST',
    requestUri:
        '/security-profiles/${Uri.encodeComponent(securityProfileName)}',
    exceptionFnMap: _exceptionFns,
  );
  return CreateSecurityProfileResponse.fromJson(response);
}