tcqueue/tcqueue.go
func (queue *Queue) CompleteArtifact(taskId, runId, name string, payload *CompleteArtifactRequest) error {
	cd := tcclient.Client(*queue)
	_, _, err := (&cd).APICall(payload, "PUT", "/task/"+url.QueryEscape(taskId)+"/runs/"+url.QueryEscape(runId)+"/artifacts/"+url.QueryEscape(name), nil, nil)
	return err
}
func (queue *Queue) CompleteArtifact(taskId, runId, name string, payload *CompleteArtifactRequest) error {
	cd := tcclient.Client(*queue)
	_, _, err := (&cd).APICall(payload, "PUT", "/task/"+url.QueryEscape(taskId)+"/runs/"+url.QueryEscape(runId)+"/artifacts/"+url.QueryEscape(name), nil, nil)
	return err
}
// Stability: *** EXPERIMENTAL ***
//
// This endpoint finalises an upload done through the blob `storageType`.
// The queue will ensure that the task/run is still allowing artifacts
// to be uploaded.  For single-part S3 blob artifacts, this endpoint
// will simply ensure the artifact is present in S3.  For multipart S3
// artifacts, the endpoint will perform the commit step of the multipart
// upload flow.  As the final step for both multi and single part artifacts,
// the `present` entity field will be set to `true` to reflect that the
// artifact is now present and a message published to pulse.  NOTE: This
// endpoint *must* be called for all artifacts of storageType 'blob'
//
// Required scopes:
//   Any of:
//   - queue:create-artifact:<taskId>/<runId>
//   - All of:
//     * queue:create-artifact:<name>
//     * assume:worker-id:<workerGroup>/<workerId>
//
// See #completeArtifact