createOpsItem method

Future<CreateOpsItemResponse> createOpsItem({
  1. required String description,
  2. required String source,
  3. required String title,
  4. DateTime? actualEndTime,
  5. DateTime? actualStartTime,
  6. String? category,
  7. List<OpsItemNotification>? notifications,
  8. Map<String, OpsItemDataValue>? operationalData,
  9. String? opsItemType,
  10. DateTime? plannedEndTime,
  11. DateTime? plannedStartTime,
  12. int? priority,
  13. List<RelatedOpsItem>? relatedOpsItems,
  14. String? severity,
  15. List<Tag>? tags,
})

Creates a new OpsItem. You must have permission in AWS Identity and Access Management (IAM) to create a new OpsItem. For more information, see Getting started with OpsCenter in the AWS Systems Manager User Guide.

Operations engineers and IT professionals use OpsCenter to view, investigate, and remediate operational issues impacting the performance and health of their AWS resources. For more information, see AWS Systems Manager OpsCenter in the AWS Systems Manager User Guide.

May throw InternalServerError. May throw OpsItemAlreadyExistsException. May throw OpsItemLimitExceededException. May throw OpsItemInvalidParameterException.

Parameter description : Information about the OpsItem.

Parameter source : The origin of the OpsItem, such as Amazon EC2 or Systems Manager.

Parameter title : A short heading that describes the nature of the OpsItem and the impacted resource.

Parameter actualEndTime : The time a runbook workflow ended. Currently reported only for the OpsItem type /aws/changerequest.

Parameter actualStartTime : The time a runbook workflow started. Currently reported only for the OpsItem type /aws/changerequest.

Parameter category : Specify a category to assign to an OpsItem.

Parameter notifications : The Amazon Resource Name (ARN) of an SNS topic where notifications are sent when this OpsItem is edited or changed.

Parameter operationalData : Operational data is custom data that provides useful reference details about the OpsItem. For example, you can specify log files, error strings, license keys, troubleshooting tips, or other relevant data. You enter operational data as key-value pairs. The key has a maximum length of 128 characters. The value has a maximum size of 20 KB. You can choose to make the data searchable by other users in the account or you can restrict search access. Searchable data means that all users with access to the OpsItem Overview page (as provided by the DescribeOpsItems API action) can view and search on the specified data. Operational data that is not searchable is only viewable by users who have access to the OpsItem (as provided by the GetOpsItem API action).

Use the /aws/resources key in OperationalData to specify a related resource in the request. Use the /aws/automations key in OperationalData to associate an Automation runbook with the OpsItem. To view AWS CLI example commands that use these keys, see Creating OpsItems manually in the AWS Systems Manager User Guide.

Parameter opsItemType : The type of OpsItem to create. Currently, the only valid values are /aws/changerequest and /aws/issue.

Parameter plannedEndTime : The time specified in a change request for a runbook workflow to end. Currently supported only for the OpsItem type /aws/changerequest.

Parameter plannedStartTime : The time specified in a change request for a runbook workflow to start. Currently supported only for the OpsItem type /aws/changerequest.

Parameter priority : The importance of this OpsItem in relation to other OpsItems in the system.

Parameter relatedOpsItems : One or more OpsItems that share something in common with the current OpsItems. For example, related OpsItems can include OpsItems with similar error messages, impacted resources, or statuses for the impacted resource.

Parameter severity : Specify a severity to assign to an OpsItem.

Parameter tags : Optional metadata that you assign to a resource. You can restrict access to OpsItems by using an inline IAM policy that specifies tags. For more information, see Getting started with OpsCenter in the AWS Systems Manager User Guide.

Tags use a key-value pair. For example:

Key=Department,Value=Finance

Implementation

Future<CreateOpsItemResponse> createOpsItem({
  required String description,
  required String source,
  required String title,
  DateTime? actualEndTime,
  DateTime? actualStartTime,
  String? category,
  List<OpsItemNotification>? notifications,
  Map<String, OpsItemDataValue>? operationalData,
  String? opsItemType,
  DateTime? plannedEndTime,
  DateTime? plannedStartTime,
  int? priority,
  List<RelatedOpsItem>? relatedOpsItems,
  String? severity,
  List<Tag>? tags,
}) async {
  ArgumentError.checkNotNull(description, 'description');
  _s.validateStringLength(
    'description',
    description,
    1,
    1024,
    isRequired: true,
  );
  ArgumentError.checkNotNull(source, 'source');
  _s.validateStringLength(
    'source',
    source,
    1,
    128,
    isRequired: true,
  );
  ArgumentError.checkNotNull(title, 'title');
  _s.validateStringLength(
    'title',
    title,
    1,
    1024,
    isRequired: true,
  );
  _s.validateStringLength(
    'category',
    category,
    1,
    64,
  );
  _s.validateNumRange(
    'priority',
    priority,
    1,
    5,
  );
  _s.validateStringLength(
    'severity',
    severity,
    1,
    64,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AmazonSSM.CreateOpsItem'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'Description': description,
      'Source': source,
      'Title': title,
      if (actualEndTime != null)
        'ActualEndTime': unixTimestampToJson(actualEndTime),
      if (actualStartTime != null)
        'ActualStartTime': unixTimestampToJson(actualStartTime),
      if (category != null) 'Category': category,
      if (notifications != null) 'Notifications': notifications,
      if (operationalData != null) 'OperationalData': operationalData,
      if (opsItemType != null) 'OpsItemType': opsItemType,
      if (plannedEndTime != null)
        'PlannedEndTime': unixTimestampToJson(plannedEndTime),
      if (plannedStartTime != null)
        'PlannedStartTime': unixTimestampToJson(plannedStartTime),
      if (priority != null) 'Priority': priority,
      if (relatedOpsItems != null) 'RelatedOpsItems': relatedOpsItems,
      if (severity != null) 'Severity': severity,
      if (tags != null) 'Tags': tags,
    },
  );

  return CreateOpsItemResponse.fromJson(jsonResponse.body);
}