def create_issues(self, field_list, prefetch=True):
        """Bulk create new issues and return an issue Resource for each successfully created issue.

        See `create_issue` documentation for field information.

        :param field_list: a list of dicts each containing field names and the values to use. Each dict
            is an individual issue to create and is subject to its minimum requirements.
        :type field_list: List[Dict[str, Any]]
        :param prefetch: whether to reload the created issue Resource for each created issue so that all
            of its data is present in the value returned from this method.
        :type prefetch: bool
        :rtype: List[Dict[str, Any]]

        """
        data = {'issueUpdates': []}
        for field_dict in field_list:
            issue_data = _field_worker(field_dict)
            p = issue_data['fields']['project']

            if isinstance(p, string_types) or isinstance(p, integer_types):
                issue_data['fields']['project'] = {'id': self.project(p).id}

            p = issue_data['fields']['issuetype']
            if isinstance(p, integer_types):
                issue_data['fields']['issuetype'] = {'id': p}
            if isinstance(p, string_types) or isinstance(p, integer_types):
                issue_data['fields']['issuetype'] = {'id': self.issue_type_by_name(p).id}

            data['issueUpdates'].append(issue_data)

        url = self._get_url('issue/bulk')
        try:
            r = self._session.post(url, data=json.dumps(data))
            raw_issue_json = json_loads(r)
        # Catching case where none of the issues has been created. See https://github.com/pycontribs/jira/issues/350
        except JIRAError as je:
            if je.status_code == 400:
                raw_issue_json = json.loads(je.response.text)
            else:
                raise
        issue_list = []
        errors = {}
        for error in raw_issue_json['errors']:
            errors[error['failedElementNumber']] = error['elementErrors']['errors']
        for index, fields in enumerate(field_list):
            if index in errors:
                issue_list.append({'status': 'Error', 'error': errors[index],
                                   'issue': None, 'input_fields': fields})
            else:
                issue = raw_issue_json['issues'].pop(0)
                if prefetch:
                    issue = self.issue(issue['key'])
                else:
                    issue = Issue(self._options, self._session, raw=issue)
                issue_list.append({'status': 'Success', 'issue': issue,
                                   'error': None, 'input_fields': fields})
        return issue_list
Bulk create new issues and return an issue Resource for each successfully created issue.

        See `create_issue` documentation for field information.

        :param field_list: a list of dicts each containing field names and the values to use. Each dict
            is an individual issue to create and is subject to its minimum requirements.
        :type field_list: List[Dict[str, Any]]
        :param prefetch: whether to reload the created issue Resource for each created issue so that all
            of its data is present in the value returned from this method.
        :type prefetch: bool
        :rtype: List[Dict[str, Any]]