code: func (c *Connector) UpsertSchema(ctx context.Context, scope, namePrefix string, eds []*dosa.EntityDefinition) (*dosa.SchemaStatus, error) {
  	rpcEds := EntityDefsToThrift(eds)
  	request := &dosarpc.UpsertSchemaRequest{
  		Scope:      &scope,
  		NamePrefix: &namePrefix,
  		EntityDefs: rpcEds,
  	}
  
  	response, err := c.client.UpsertSchema(ctx, request, getHeaders(c.headers)...)
  	if err != nil {
  		if !dosarpc.Dosa_UpsertSchema_Helper.IsException(err) {
  			return nil, errors.Wrap(err, "failed to UpsertSchema due to network issue")
  		}
  		return nil, wrapError(err, "failed to UpsertSchema", scope)
  	}
  
  	status := ""
  	if response.Status != nil {
  		status = *response.Status
  	}
  
  	if response.Version == nil {
  		return nil, errors.New("failed to UpsertSchema: server returns version nil")
  	}
  
  	return &dosa.SchemaStatus{
  		Version: *response.Version,
  		Status:  status,
  	}, nil
  }
docs: // UpsertSchema upserts the schema through RPC