'Creates a new case in the AWS Support Center. This operation
is modeled on the behavior of the AWS Support Center `Open a
new case`_ page. Its parameters require you to specify the
following information:
#. **IssueType.** The type of issue for the case. You can
specify either "customer-service" or "technical." If you do
not indicate a value, the default is "technical."
#. **ServiceCode.** The code for an AWS service. You obtain
the `ServiceCode` by calling DescribeServices.
#. **CategoryCode.** The category for the service defined for
the `ServiceCode` value. You also obtain the category code for
a service by calling DescribeServices. Each AWS service
defines its own set of category codes.
#. **SeverityCode.** A value that indicates the urgency of the
case, which in turn determines the response time according to
your service level agreement with AWS Support. You obtain the
SeverityCode by calling DescribeSeverityLevels.
#. **Subject.** The **Subject** field on the AWS Support
Center `Open a new case`_ page.
#. **CommunicationBody.** The **Description** field on the AWS
Support Center `Open a new case`_ page.
#. **AttachmentSetId.** The ID of a set of attachments that
has been created by using AddAttachmentsToSet.
#. **Language.** The human language in which AWS Support
handles the case. English and Japanese are currently
supported.
#. **CcEmailAddresses.** The AWS Support Center **CC** field
on the `Open a new case`_ page. You can list email addresses
to be copied on any correspondence about the case. The account
that opens the case is already identified by passing the AWS
Credentials in the HTTP POST method or in a method or function
call from one of the programming languages supported by an
`AWS SDK`_.
A successful CreateCase request returns an AWS Support case
number. Case numbers are used by the DescribeCases operation
to retrieve existing AWS Support cases.
:type subject: string
:param subject: The title of the AWS Support case.
:type service_code: string
:param service_code: The code for the AWS service returned by the call
to DescribeServices.
:type severity_code: string
:param severity_code: The code for the severity level returned by the
call to DescribeSeverityLevels.
:type category_code: string
:param category_code: The category of problem for the AWS Support case.
:type communication_body: string
:param communication_body: The communication body text when you create
an AWS Support case by calling CreateCase.
:type cc_email_addresses: list
:param cc_email_addresses: A list of email addresses that AWS Support
copies on case correspondence.
:type language: string
:param language: The ISO 639-1 code for the language in which AWS
provides support. AWS Support currently supports English ("en") and
Japanese ("ja"). Language parameters must be passed explicitly for
operations that take them.
:type issue_type: string
:param issue_type: The type of issue for the case. You can specify
either "customer-service" or "technical." If you do not indicate a
value, the default is "technical."
:type attachment_set_id: string
:param attachment_set_id: The ID of a set of one or more attachments
for the case. Create the set by using AddAttachmentsToSet.'

def create_case(self, subject, communication_body, service_code=None, severity_code=None, category_code=None, cc_email_addresses=None, language=None, issue_type=None, attachment_set_id=None):

    params = {'subject': subject, 'communicationBody': communication_body}
    if (service_code is not None):
        params['serviceCode'] = service_code
    if (severity_code is not None):
        params['severityCode'] = severity_code
    if (category_code is not None):
        params['categoryCode'] = category_code
    if (cc_email_addresses is not None):
        params['ccEmailAddresses'] = cc_email_addresses
    if (language is not None):
        params['language'] = language
    if (issue_type is not None):
        params['issueType'] = issue_type
    if (attachment_set_id is not None):
        params['attachmentSetId'] = attachment_set_id
    return self.make_request(action='CreateCase', body=json.dumps(params))
