code: func (serviceInstance *ServiceInstance) UnmarshalJSON(data []byte) error {
  	var ccServiceInstance struct {
  		Metadata internal.Metadata
  		Entity   struct {
  			Name            string        `json:"name"`
  			SpaceGUID       string        `json:"space_guid"`
  			ServiceGUID     string        `json:"service_guid"`
  			ServicePlanGUID string        `json:"service_plan_guid"`
  			Type            string        `json:"type"`
  			Tags            []string      `json:"tags"`
  			DashboardURL    string        `json:"dashboard_url"`
  			RouteServiceURL string        `json:"route_service_url"`
  			LastOperation   LastOperation `json:"last_operation"`
  		}
  	}
  	err := cloudcontroller.DecodeJSON(data, &ccServiceInstance)
  	if err != nil {
  		return err
  	}
  
  	serviceInstance.GUID = ccServiceInstance.Metadata.GUID
  	serviceInstance.Name = ccServiceInstance.Entity.Name
  	serviceInstance.SpaceGUID = ccServiceInstance.Entity.SpaceGUID
  	serviceInstance.ServiceGUID = ccServiceInstance.Entity.ServiceGUID
  	serviceInstance.ServicePlanGUID = ccServiceInstance.Entity.ServicePlanGUID
  	serviceInstance.Type = constant.ServiceInstanceType(ccServiceInstance.Entity.Type)
  	serviceInstance.Tags = ccServiceInstance.Entity.Tags
  	serviceInstance.DashboardURL = ccServiceInstance.Entity.DashboardURL
  	serviceInstance.RouteServiceURL = ccServiceInstance.Entity.RouteServiceURL
  	serviceInstance.LastOperation = ccServiceInstance.Entity.LastOperation
  	return nil
  }
docs: // UnmarshalJSON helps unmarshal a Cloud Controller Service Instance response.