code: func (api *API) ApplySchema(ctx context.Context, s *Schema, remote bool) error {
  	span, _ := tracing.StartSpanFromContext(ctx, "API.ApplySchema")
  	defer span.Finish()
  
  	if err := api.validate(apiApplySchema); err != nil {
  		return errors.Wrap(err, "validating api method")
  	}
  
  	if !remote {
  		nodes := api.cluster.Nodes()
  		for i, node := range nodes {
  			err := api.server.defaultClient.PostSchema(ctx, &node.URI, s, true)
  			if err != nil {
  				return errors.Wrapf(err, "forwarding post schema to node %d of %d", i+1, len(nodes))
  			}
  		}
  	}
  
  	return api.holder.applySchema(s)
  }
docs: // ApplySchema takes the given schema and applies it across the
  // cluster (if remote is false), or just to this node (if remote is
  // true). This is designed for the use case of replicating a schema
  // from one Pilosa cluster to another which is initially empty. It is
  // not officially supported in other scenarios and may produce
  // surprising results.