Create/link an outcome.

        Link an outcome into the outcome group. The outcome to link can either be
        specified by a PUT to the link URL for a specific outcome (the outcome_id
        in the PUT URLs) or by supplying the information for a new outcome (title,
        description, ratings, mastery_points) in a POST to the collection.
        
        If linking an existing outcome, the outcome_id must identify an outcome
        available to this context; i.e. an outcome owned by this group's context,
        an outcome owned by an associated account, or a global outcome. With
        outcome_id present, any other parameters are ignored.
        
        If defining a new outcome, the outcome is created in the outcome group's
        context using the provided title, description, ratings, and mastery points;
        the title is required but all other fields are optional. The new outcome
        is then linked into the outcome group.
        
        If ratings are provided when creating a new outcome, an embedded rubric
        criterion is included in the new outcome. This criterion's mastery_points
        default to the maximum points in the highest rating if not specified in the
        mastery_points parameter. Any ratings lacking a description are given a
        default of "No description". Any ratings lacking a point value are given a
        default of 0. If no ratings are provided, the mastery_points parameter is
        ignored.

def create_link_outcome_global_outcome_id(self, id, outcome_id, calculation_int=None, calculation_method=None, description=None, display_name=None, mastery_points=None, ratings_description=None, ratings_points=None, title=None, vendor_guid=None):
        """
        Create/link an outcome.

        Link an outcome into the outcome group. The outcome to link can either be
        specified by a PUT to the link URL for a specific outcome (the outcome_id
        in the PUT URLs) or by supplying the information for a new outcome (title,
        description, ratings, mastery_points) in a POST to the collection.
        
        If linking an existing outcome, the outcome_id must identify an outcome
        available to this context; i.e. an outcome owned by this group's context,
        an outcome owned by an associated account, or a global outcome. With
        outcome_id present, any other parameters are ignored.
        
        If defining a new outcome, the outcome is created in the outcome group's
        context using the provided title, description, ratings, and mastery points;
        the title is required but all other fields are optional. The new outcome
        is then linked into the outcome group.
        
        If ratings are provided when creating a new outcome, an embedded rubric
        criterion is included in the new outcome. This criterion's mastery_points
        default to the maximum points in the highest rating if not specified in the
        mastery_points parameter. Any ratings lacking a description are given a
        default of "No description". Any ratings lacking a point value are given a
        default of 0. If no ratings are provided, the mastery_points parameter is
        ignored.
        """
        path = {}
        data = {}
        params = {}

        # REQUIRED - PATH - id
        """ID"""
        path["id"] = id

        # REQUIRED - PATH - outcome_id
        """The ID of the existing outcome to link."""
        path["outcome_id"] = outcome_id

        # OPTIONAL - title
        """The title of the new outcome. Required if outcome_id is absent."""
        if title is not None:
            data["title"] = title

        # OPTIONAL - display_name
        """A friendly name shown in reports for outcomes with cryptic titles,
        such as common core standards names."""
        if display_name is not None:
            data["display_name"] = display_name

        # OPTIONAL - description
        """The description of the new outcome."""
        if description is not None:
            data["description"] = description

        # OPTIONAL - vendor_guid
        """A custom GUID for the learning standard."""
        if vendor_guid is not None:
            data["vendor_guid"] = vendor_guid

        # OPTIONAL - mastery_points
        """The mastery threshold for the embedded rubric criterion."""
        if mastery_points is not None:
            data["mastery_points"] = mastery_points

        # OPTIONAL - ratings[description]
        """The description of a rating level for the embedded rubric criterion."""
        if ratings_description is not None:
            data["ratings[description]"] = ratings_description

        # OPTIONAL - ratings[points]
        """The points corresponding to a rating level for the embedded rubric criterion."""
        if ratings_points is not None:
            data["ratings[points]"] = ratings_points

        # OPTIONAL - calculation_method
        """The new calculation method.  Defaults to "highest""""
        if calculation_method is not None:
            self._validate_enum(calculation_method, ["decaying_average", "n_mastery", "latest", "highest"])
            data["calculation_method"] = calculation_method

        # OPTIONAL - calculation_int
        """The new calculation int.  Only applies if the calculation_method is "decaying_average" or "n_mastery""""
        if calculation_int is not None:
            data["calculation_int"] = calculation_int

        self.logger.debug("PUT /api/v1/global/outcome_groups/{id}/outcomes/{outcome_id} with query params: {params} and form data: {data}".format(params=params, data=data, **path))
        return self.generic_request("PUT", "/api/v1/global/outcome_groups/{id}/outcomes/{outcome_id}".format(**path), data=data, params=params, single_item=True)