code: func (s *ProtoService) CreateDashboardsFromProto(ctx context.Context, protoID platform.ID, orgID platform.ID) ([]*platform.Dashboard, error) {
  	// TODO(desa): this should be done transactionally.
  	proto, err := s.findProto(ctx, protoID)
  	if err != nil {
  		return nil, err
  	}
  
  	dashes := []*platform.Dashboard{}
  
  	for _, protodash := range proto.Dashboards {
  		dash := &platform.Dashboard{}
  		*dash = protodash.Dashboard
  		// TODO(desa): add organization id here
  		dash.Cells = nil
  
  		if err := s.DashboardService.CreateDashboard(ctx, dash); err != nil {
  			return nil, err
  		}
  
  		cells := []*platform.Cell{}
  		for _, protocell := range protodash.Dashboard.Cells {
  			cell := &platform.Cell{}
  			*cell = *protocell
  
  			protoview, ok := protodash.Views[cell.ID]
  			if !ok {
  				return nil, &platform.Error{Msg: fmt.Sprintf("view for ID %q does not exist", cell.ID)}
  			}
  
  			view := &platform.View{}
  			*view = protoview
  			opts := platform.AddDashboardCellOptions{View: view}
  			if err := s.DashboardService.AddDashboardCell(ctx, dash.ID, cell, opts); err != nil {
  				return nil, err
  			}
  
  			cells = append(cells, cell)
  		}
  
  		dash.Cells = cells
  
  		dashes = append(dashes, dash)
  	}
  
  	return dashes, nil
  }
docs: // CreateDashboardsFromProtos creates instances of each dashboard in a proto.