func NewClient(baseURL string) Client {
	return &client{baseURL, nil}
}
NewClient creates a new Realm client
package realm
import (
	"archive/zip"
	"bytes"
	"encoding/json"
	"io"
	"net/http"
	"github.com/10gen/realm-cli/internal/cli/user"
	"github.com/10gen/realm-cli/internal/utils/api"
)
const (
	adminAPI   = "/api/admin/v3.0"
	privateAPI = "/api/private/v1.0"
	requestOriginHeader = "X-BAAS-Request-Origin"
	cliHeaderValue      = "mongodb-baas-cli"
)
type Client interface {
	AuthProfile() (AuthProfile, error)
	Authenticate(publicAPIKey, privateAPIKey string) (Session, error)
	Export(groupID, appID string, req ExportRequest) (string, *zip.Reader, error)
	ExportDependencies(groupID, appID string) (string, io.ReadCloser, error)
	ExportDependenciesArchive(groupID, appID string) (string, io.ReadCloser, error)
	Import(groupID, appID string, appData interface{}) error
	ImportDependencies(groupID, appID, uploadPath string) error
	Diff(groupID, appID string, appData interface{}) ([]string, error)
	DiffDependencies(groupID, appID, uploadPath string) (DependenciesDiff, error)
	DependenciesStatus(groupID, appID string) (DependenciesStatus, error)
	CreateApp(groupID, name string, meta AppMeta) (App, error)
	DeleteApp(groupID, appID string) error
	FindApp(groupID, appID string) (App, error)
	FindApps(filter AppFilter) ([]App, error)
	AppDescription(groupID, appID string) (AppDescription, error)
	CreateDraft(groupID, appID string) (AppDraft, error)
	DeployDraft(groupID, appID, draftID string) (AppDeployment, error)
	DiffDraft(groupID, appID, draftID string) (AppDraftDiff, error)
	DiscardDraft(groupID, appID, draftID string) error
	Deployments(groupID, appID string) ([]AppDeployment, error)
	Deployment(groupID, appID, deploymentID string) (AppDeployment, error)
	Draft(groupID, appID string) (AppDraft, error)
	Secrets(groupID, appID string) ([]Secret, error)
	CreateSecret(groupID, appID, name, value string) (Secret, error)
	DeleteSecret(groupID, appID, secretID string) error
	UpdateSecret(groupID, appID, secretID, name, value string) error
	CreateAPIKey(groupID, appID, apiKeyName string) (APIKey, error)
	CreateUser(groupID, appID, email, password string) (User, error)
	DeleteUser(groupID, appID, userID string) error
	DisableUser(groupID, appID, userID string) error
	EnableUser(groupID, appID, userID string) error
	FindUsers(groupID, appID string, filter UserFilter) ([]User, error)
	RevokeUserSessions(groupID, appID, userID string) error
	HostingAssets(groupID, appID string) ([]HostingAsset, error)
	HostingAssetUpload(groupID, appID, rootDir string, asset HostingAsset) error
	HostingAssetRemove(groupID, appID, path string) error
	HostingAssetAttributesUpdate(groupID, appID, path string, attrs ...HostingAssetAttribute) error
	HostingCacheInvalidate(groupID, appID, path string) error
	Functions(groupID, appID string) ([]Function, error)
	AppDebugExecuteFunction(groupID, appID, userID, name string, args []interface{}) (ExecutionResults, error)
	Logs(groupID, appID string, opts LogsOptions) (Logs, error)
	SchemaModels(groupID, appID, language string) ([]SchemaModel, error)
	AllTemplates() (Templates, error)
	ClientTemplate(groupID, appID, templateID string) (*zip.Reader, bool, error)
	CompatibleTemplates(groupID, appID string) (Templates, error)
	AllowedIPs(groupID, appID string) ([]AllowedIP, error)
	AllowedIPCreate(groupID, appID, address, comment string, useCurrent bool) (AllowedIP, error)
	AllowedIPUpdate(groupID, appID, allowedIPID, newAddress, newComment string) error
	AllowedIPDelete(groupID, appID, allowedIPID string) error
	Status() error
}