def create_insight(self, project_key, **kwargs):
        """Create a new insight

        :param project_key: Project identifier, in the form of
        projectOwner/projectid
        :type project_key: str
        :param title: Insight title
        :type title: str
        :param description: Insight description.
        :type description: str, optional
        :param image_url: If image-based, the URL of the image
        :type image_url: str
        :param embed_url: If embed-based, the embeddable URL
        :type embed_url: str
        :param source_link: Permalink to source code or platform this insight
        was generated with. Allows others to replicate the steps originally
        used to produce the insight.
        :type source_link: str, optional
        :param data_source_links: One or more permalinks to the data sources
        used to generate this insight. Allows others to access the data
        originally used to produce the insight.
        :type data_source_links: array
        :returns: Insight with message and uri object
        :rtype: object
        :raises RestApiException: If a server error occurs

        Examples
        --------
        >>> import datadotworld as dw
        >>> api_client = dw.api_client()
        >>> api_client.create_insight(
        ...     'projectOwner/projectid', title='Test insight',
        ...     image_url='url')  # doctest: +SKIP
        """
        request = self.__build_insight_obj(
            lambda: _swagger.InsightCreateRequest(
                title=kwargs.get('title'),
                body=_swagger.InsightBody(
                    image_url=kwargs.get('image_url'),
                    embed_url=kwargs.get('embed_url'),
                    markdown_body=kwargs.get('markdown_body')
                )
            ), kwargs)
        project_owner, project_id = parse_dataset_key(project_key)
        try:
            (_, _, headers) = self._insights_api.create_insight_with_http_info(
                project_owner,
                project_id,
                body=request,
                _return_http_data_only=False)
            if 'Location' in headers:
                return headers['Location']
        except _swagger.rest.ApiException as e:
            raise RestApiError(cause=e)
Create a new insight

        :param project_key: Project identifier, in the form of
        projectOwner/projectid
        :type project_key: str
        :param title: Insight title
        :type title: str
        :param description: Insight description.
        :type description: str, optional
        :param image_url: If image-based, the URL of the image
        :type image_url: str
        :param embed_url: If embed-based, the embeddable URL
        :type embed_url: str
        :param source_link: Permalink to source code or platform this insight
        was generated with. Allows others to replicate the steps originally
        used to produce the insight.
        :type source_link: str, optional
        :param data_source_links: One or more permalinks to the data sources
        used to generate this insight. Allows others to access the data
        originally used to produce the insight.
        :type data_source_links: array
        :returns: Insight with message and uri object
        :rtype: object
        :raises RestApiException: If a server error occurs

        Examples
        --------
        >>> import datadotworld as dw
        >>> api_client = dw.api_client()
        >>> api_client.create_insight(
        ...     'projectOwner/projectid', title='Test insight',
        ...     image_url='url')  # doctest: +SKIP