Nextended.Aspire.Hosting.WebDataStudio — API-Referenz
Die vollständige öffentliche Oberfläche von Nextended.Aspire.Hosting.WebDataStudio, erzeugt aus der gebauten Assembly.
Generiert
Diese Seite wird von tools/ApiRef aus der kompilierten Assembly erzeugt — sie zeigt auch Member ohne XML-Kommentar und kann daher nicht vom Code abweichen. Nicht von Hand bearbeiten.
Nextended.Aspire.Hosting.WebDataStudio
ConnectionScope
enum
Where a connection somebody makes in the studio goes.
Werte
Session
The browser that made it, and nobody else. Nothing on disk, gone when the container restarts or the session expires — a studio handed out as a viewer wants this one.Stored
The studio's connection store: written down, kept across restarts, visible to everybody who may see it. What every studio did before this setting existed.value__
SavedStudioQuery
class
One saved query, written in the app host rather than kept as a file.
Konstruktoren
SavedStudioQuery(string Name, string Sql, string Folder = null, string Connection = null)
One saved query, written in the app host rather than kept as a file.
Eigenschaften
Connection : string { get; set; }
The connection it belongs to, by the name the studio shows. Optional.Folder : string { get; set; }
The folder in the saved-queries panel. Optional.Name : string { get; set; }
What the panel calls it.Sql : string { get; set; }
The statement.
ScheduledStudioQuery
class
A query the studio runs on a schedule and writes to a file — the nightly report nobody wants to remember to run.
Konstruktoren
ScheduledStudioQuery(string Name, string Connection, string Sql, int? EveryMinutes = null, string DailyAtUtc = null, string Format = null, int? MaxRows = null)
Eigenschaften
Connection : string { get; set; }
Connection name, as the studio shows it.DailyAtUtc : string { get; set; }
Run once a day at this time in UTC, e.g.03:00.EveryMinutes : int? { get; set; }
Run this often. Use this orDailyAtUtc.Format : string { get; set; }
Export format:csv(the default),json,xlsx, …MaxRows : int? { get; set; }
Row cap for the run.Name : string { get; set; }
Names the job, and the files it writes.Sql : string { get; set; }
One reading statement. A write is refused when it runs.
StudioAccount
class
One account of a WebDataStudio instance: who signs in, what they may do, and which connections they see. The password is deliberately not part of this — it goes to the container and nowhere else, so nothing can print it by accident.
Konstruktoren
StudioAccount(string Name, string Role, IReadOnlyList<string> Connections)
Eigenschaften
Connections : IReadOnlyList<string> { get; set; }
The connections this account may see, by name. Empty means all of them.Name : string { get; set; }
The login name.Role : string { get; set; }admin(everything, including the administration panel),editor(read and write) orviewer(every connection read-only).
StudioBackup
class
One backup the studio takes on its own, without anybody remembering to.
Konstruktoren
StudioBackup(string Name, string Connection, int? EveryMinutes = null, string DailyAtUtc = null, string Format = null, bool SchemaOnly = false, int Keep = 7)
Eigenschaften
Connection : string { get; set; }
Which connection to dump, by the name the studio shows.DailyAtUtc : string { get; set; }
Once a day at this time in UTC, e.g.02:00.EveryMinutes : int? { get; set; }
Every so many minutes, or null for a daily one.Format : string { get; set; }
plain, custom or tar, where the engine's tool has a choice.Keep : int { get; set; }
How many files of this job to keep. The oldest go, because a volume that fills up is how a backup schedule stops being one.Name : string { get; set; }
What the job is called. It also names the files it writes.SchemaOnly : bool { get; set; }
The shape without the rows.
StudioConnectionEntry
class
A connection the studio should have that is not a resource in this stack — a legacy server, a read-only replica somebody else runs.
Konstruktoren
StudioConnectionEntry(string Name, string Engine, string ConnectionString, bool ReadOnly = false, string Color = null, string Group = null)
A connection the studio should have that is not a resource in this stack — a legacy server, a read-only replica somebody else runs.
Eigenschaften
Color : string { get; set; }ConnectionString : string { get; set; }Engine : string { get; set; }Group : string { get; set; }Name : string { get; set; }ReadOnly : bool { get; set; }
StudioDashboard
class
One dashboard the deployment ships: a page of statements everybody who opens the studio sees.
Konstruktoren
StudioDashboard(string Name, IReadOnlyList<StudioTile> Tiles, int RefreshSeconds = 0)
Eigenschaften
Name : string { get; set; }
What the dashboard is called.RefreshSeconds : int { get; set; }
How often the tiles run themselves. 0 means only when asked; below 10 is rounded up.Tiles : IReadOnlyList<StudioTile> { get; set; }
The boxes on it.
StudioExportTemplate
class
One export format, written as text with placeholders rather than as code.
Konstruktoren
StudioExportTemplate(string Id, string Label, string Extension, string ContentType, string Row, string Header = null, string Footer = null, string Separator = ", ")
One export format, written as text with placeholders rather than as code.
Eigenschaften
ContentType : string { get; set; }
The content type the download carries.Extension : string { get; set; }
The file extension, without the dot.Footer : string { get; set; }
Written once after them.Header : string { get; set; }
Written once before the rows.{{table}},{{columns}}.Id : string { get; set; }
The id the studio lists it under. Saving a copy under another id is how somebody changes it.Label : string { get; set; }
What the export dialog calls it.Row : string { get; set; }
The text written per row.{{values}},{{col.NAME}},{{index}}.Separator : string { get; set; }
What joins{{columns}}and{{values}}.
StudioQualityRule
class
One rule about the rows rather than about the schema.
Konstruktoren
StudioQualityRule(string Connection, string Table, string Kind, string Column = null, string Schema = null, string Argument = null, string Message = null, bool Enabled = true)
One rule about the rows rather than about the schema.
Eigenschaften
Argument : string { get; set; }0..100,customers.id,24h, or the condition a bad row satisfies.Column : string { get; set; }
The column. Not needed byExpression, which names its own.Connection : string { get; set; }
The connection, by the name the studio shows.Enabled : bool { get; set; }Kind : string { get; set; }NotNull,Unique,Range,Referential,FreshnessorExpression.Message : string { get; set; }
What to say when it fails.Schema : string { get; set; }
The schema, where the engine has them.Table : string { get; set; }
The table the rule is about.
StudioRoles
static class
The roles a StudioAccount can have.
Felder
Admin : string
Everything, including the administration panel.Editor : string
Read and write, but no administration.Viewer : string
Every connection read-only.
StudioSeedCopy
class
The things a repository can hold, written in the app host instead — and both at once where that is what you want.
Konstruktoren
StudioSeedCopy(string From, string To, IReadOnlyList<string> Tables, int? MaxRows = null, string Schema = null)
Eigenschaften
From : string { get; set; }
Where the rows are, by the name the studio shows.MaxRows : int? { get; set; }
At most this many rows per table. 10 000 by default: this is a seed, not a replica.Schema : string { get; set; }
The schema to create them in, where the target engine has schemas.Tables : IReadOnlyList<string> { get; set; }
Which tables. Each is created in the target and filled.To : string { get; set; }
Where they should be.
StudioSnippet
class
One editor snippet the deployment ships. ${1:name} is a tab stop, the way the studio's own snippets are written.
Konstruktoren
StudioSnippet(string Prefix, string Label, string Body, string Description = null)
One editor snippet the deployment ships.${1:name}is a tab stop, the way the studio's own snippets are written.
Eigenschaften
Body : string { get; set; }Description : string { get; set; }Label : string { get; set; }Prefix : string { get; set; }
StudioTile
class
One box on a dashboard.
Konstruktoren
StudioTile(string Title, string Connection, string Sql, string View = "number", int Width = 1)
One box on a dashboard.
Eigenschaften
Connection : string { get; set; }
The connection to run on, by the name the studio shows.Sql : string { get; set; }
The statement.Title : string { get; set; }
What the box is called.View : string { get; set; }number,tableorchart.Width : int { get; set; }
How many of the four columns it takes, 1 to 4.
UrlConnections
enum
Where a connection the studio opened from its own URL is kept.
Werte
Session
For the browser that opened the link and nowhere else: nobody else sees it, nothing about it is written down, and it is gone when the studio restarts. The right answer when the link carried a password.Store
In the studio's connection store like any other connection: kept across restarts, visible to everybody who can open the studio. Right for a studio one person runs, wrong for a shared one.value__
WebDataStudioAccessExtensions
static class
What people may do in the studio: where a connection they make goes, and which ways in are open.
WebDataStudioAssistantExtensions
static class
Wires the studio's optional assistance — explain a statement, draft one from a question — to an OpenAI-compatible endpoint. Without one of these calls the feature does not exist: no button in the UI, no calls anywhere, and /api/health reports assist: false.
Felder
ChatCompletionsPath : string
The path an OpenAI-compatible server serves chat completions on.DefaultModel : string
Model used when a call does not name one.
WebDataStudioAttachExtensions
static class
Attaches WebDataStudio to a database from the database's own side, the way Aspire's WithPgAdmin and WithRedisInsight do it: the studio is created once and every further call attaches another connection to the same one.
WebDataStudioBuilderExtensions
static class
Fluent API for running WebDataStudio inside your Aspire stack. Either add it yourself with AddWebDataStudio and attach databases with WithReference, or start from a database resource and call WithWebDataStudio``1.
WebDataStudioEngine
enum
The database engines WebDataStudio can talk to. The value tells the studio which driver to open a connection string with, and is passed as WDS_CONN_<NAME>_ENGINE.
Werte
ClickHouse
ClickHouse.DuckDb
DuckDB, backed by a file the container can reach.MongoDb
MongoDB.MySql
MySQL and MariaDB.OData
An OData service, V2 to V4, read over HTTP. The connection string is the URL of the service root, and each further line of it is a request header — seeWithODataService, which writes both. Read-only: the studio never sends a POST, a PATCH or a DELETE to a service.Oracle
Oracle Database.PostgreSql
PostgreSQL (and anything speaking its wire protocol).Redis
Redis and Valkey.SqlServer
Microsoft SQL Server and Azure SQL.Sqlite
SQLite, backed by a file the container can reach.Storage
Object storage: an S3-compatible bucket, Azure Blob Storage, Google Cloud Storage, or a folder. The connection string is the storage URL —s3://bucket/prefix,azblob://account/container,gs://bucket,file:///data/incoming.value__
WebDataStudioEngineExtensions
static class
Maps WebDataStudioEngine to the identifiers WebDataStudio expects.
Extension Methods
ToEngineId(this WebDataStudioEngine engine) : string
The engine id as WebDataStudio spells it inWDS_CONN_<NAME>_ENGINE.
WebDataStudioFilesExtensions
static class
Things a repository can hold and a review can catch: the queries everybody on the team needs, and the data that makes a fresh database worth opening. Both are folders on your machine, mounted into the studio and read at start.
WebDataStudioInlineExtensions
static class
Keine Beschreibung.
WebDataStudioMcpExtensions
static class
Turns the studio into an MCP server, so an agent — Claude Code, Claude Desktop, VS Code, Cursor, anything that speaks MCP — can reach the databases of this stack through it.
Methoden
MissingKeyWarning(WebDataStudioResource resource) : string
What is wrong with this studio's MCP configuration, or null when nothing is. The app host prints it before anything starts; it is public so a test or a health check can ask the same question without starting an application.
Felder
DefaultPath : string
Path the studio serves MCP on when nothing else is asked for.
WebDataStudioMcpTools
static class
The tools the studio's MCP endpoint offers, by name — so WithMcpTools takes a constant rather than a string somebody has to spell right.
Felder
ApplyScript : string
Runs the script a hash belongs to. NeedsallowWrite.BrowseRows : string
A page of rows from one table, masked and capped.DescribeObject : string
Columns, indexes, keys and triggers of one object.ExplainPlan : string
The query plan for a statement.HealthReport : string
The studio's own analysis of a connection or a table.ListConnections : string
The databases the studio can reach, with their ids.ListObjects : string
Walks the object tree a level at a time.ListTables : string
Every table and view of a connection, in one call.PreviewScript : string
Splits a script and returns a hash. Runs nothing. NeedsallowWrite.ReadOnly : string[]
Everything that only reads — the useful default for an agent you do not fully trust.RedisValue : string
One Redis key, in the shape its type has.RunQuery : string
One reading statement, masked and capped.SchemaOnly : string[]
Enough to find one's way around a schema, without reading a single row.ServerActivity : string
What the server is running, and who waits on whom.
WebDataStudioODataExtensions
static class
An OData service as a connection: the URL of the service root, and the headers the service wants.
WebDataStudioOpsExtensions
static class
The operational side of the studio: what it watches, and who it tells. The studio already runs the analysis behind its health report — these calls arrange for somebody to hear about it.
WebDataStudioProviderExtensions
static class
The hosted model providers, one call each. All of them are WithAssistant with the right URL and a sensible default model — the point is that nobody has to look the URL up to get started.
Felder
ClaudeEndpoint : string
Anthropic's OpenAI-compatible endpoint.DeepSeekEndpoint : string
DeepSeek.GeminiEndpoint : string
Google's OpenAI-compatible Gemini endpoint.GroqEndpoint : string
Groq.MistralEndpoint : string
Mistral.OpenAiEndpoint : string
OpenAI.OpenRouterEndpoint : string
OpenRouter, which fronts many models behind one key.
WebDataStudioResource
class
WebDataStudio — a browser-based database studio — running as a container resource. Exposes an HTTP endpoint for the studio, and carries the connections that were attached to it so several databases can share one instance.
Konstruktoren
WebDataStudioResource(string name)
WebDataStudio — a browser-based database studio — running as a container resource. Exposes an HTTP endpoint for the studio, and carries the connections that were attached to it so several databases can share one instance.
Eigenschaften
Accounts : IReadOnlyList<StudioAccount> { get; }
The accounts configured withWithLoginandWithUser, in the order they were added. Passwords are not here: they go to the container and nowhere else.ArchivePath : string { get; }
Where kept results are written, fromWithArchives. Null means the default beside the application database.AssistantModel : string { get; }
The model the optional assistance uses, when it was configured withWithAssistant. Null means the studio has no assistance at all: no button, no calls.AuditDays : int? { get; }
How many days the studio keeps its record of who did what. Null is the studio's own default of 90; zero meansWithoutAuditTrailturned it off.ConnectionNames : IReadOnlyList<string> { get; }
Names of the connections attached to this studio, in the order they were added. These are the labels the studio shows in its explorer, and the suffixes of itsWDS_CONN_*variables.MaskedColumns : IReadOnlyCollection<string> { get; }
Columns masked on top of the studio's own word list, fromWithMaskedColumns.McpAllowsWrite : bool { get; }
Whether the MCP endpoint may change data, through a preview and its hash.McpHasKey : bool { get; }
Whether the MCP endpoint was given a key. A studio with accounts refuses to serve MCP without one, so this is what the app host warns about.McpPath : string { get; }
Path the studio serves MCP on, whenWithMcpEndpointwas called. Null means the studio is not an MCP server.McpTools : IReadOnlyCollection<string> { get; }
The tools the MCP endpoint is narrowed to, fromWithMcpTools. Empty means all.SavedQueriesPath : string { get; }Schedule : IReadOnlyList<ScheduledStudioQuery> { get; }
The scheduled queries, fromWithScheduledQueries.SchemaSnapshotPath : string { get; }
Where schema snapshots are written, fromWithSchemaSnapshots. Null means none are.SeedScriptPath : string { get; }
Seed script or folder, fromWithSeedScript.SharingEnabled : bool { get; }
Whether results can be shared as links, fromWithSharedResults.SharingIsPublic : bool { get; }
Whether such a link opens without signing in.SignInAuthority : string { get; }
The identity provider people sign in through, when one was configured withWithSingleSignOn. Null means the studio signs people in itself, or not at all.TelemetryServiceName : string { get; }
The name the studio reports as in traces and metrics, fromWithOpenTelemetry. Null when it reports nothing.Theme : string { get; }
The theme the studio starts in, as the studio's own id (ocean,aspire, …). Null leaves the studio's default. A person who picks another theme keeps their choice.Title : string { get; }
The name the studio shows in its header and browser tab. Defaults to the resource name, so three studios in one stack are told apart at a glance;WithTitleoverrides it andWithTitle(null)leaves the studio unnamed.UnmaskedColumns : IReadOnlyCollection<string> { get; }
Columns the studio leaves alone, fromWithUnmaskedColumns.Username : string { get; }
Login name of the first account, when one was configured. Null means anonymous access.
Felder
DefaultImage : string
The published WebDataStudio image.DefaultResourceName : string
Resource name used when nothing else is asked for, and the key for sharing one studio.DefaultTag : string
Default image tag.DefaultTargetPort : int
Port the studio listens on inside the container.HttpEndpointName : string
Name of the HTTP endpoint serving the studio.
WebDataStudioSafetyExtensions
static class
The studio masks columns whose names say they hold a secret — password, api_key, iban and the like — before the values leave the server. These calls correct that guess for a schema the word list reads wrong, from the place the rest of the configuration lives.
WebDataStudioScheduleExtensions
static class
Scheduled queries, written as a file the studio reads. The file is generated into the app host's output and mounted read-only, so the schedule lives in your app host next to everything else rather than in a volume somebody has to remember.
WebDataStudioShippedExtensions
static class
The rest of what a deployment can bring with it: connections that are not resources, the masking baseline, dashboards, editor snippets, and the preferences a studio starts with.
WebDataStudioSignInExtensions
static class
Signing in to the studio with the identity provider the organisation already has, and keeping a record of what was done through it. WithLogin and WithUser put accounts in the container's environment: fine for one team, wrong for a company that already decides who works there somewhere else. These calls point the studio at that decision instead — Entra, Keycloak, Auth0, Okta, anything speaking OpenID Connect — and the studio never sees a password.
WebDataStudioStorageExtensions
static class
Object storage as a connection: a bucket, a container or a folder, browsable in the studio's tree and queryable through DuckDB — a Parquet file in a bucket is a table that happens to live somewhere else.
WebDataStudioUrlExtensions
static class
A database that is a file rather than a server, and links that open one.
Nextended.Aspire.Hosting.WebDataStudio.Resources
WebDataStudioTheme
enum
The theme a studio comes up in. The description of each value is the id the studio itself uses, so the two lists cannot drift apart silently: WithTheme(WebDataStudioTheme.Ocean) sets ocean, and WithTheme(string) stays available for a theme this enum does not know yet.
Werte
AspireDashboard
The Aspire dashboard's violet on near-black — the one to pick inside Aspire.Blazor
Blazor purple on white.Dev
Dense and plain, for the machine you work on all day.Dracula
Dracula.GitHubDark
GitHub's dark palette.GitHubLight
GitHub's light palette.Hologram
Cyan on deep teal.Kiosk
Light, calm and large, for a screen nobody sits in front of.LinkHub
For a studio that is mostly a page of links.Monokai
Monokai.NeonGlow
Magenta neon on near-black.Nightlife
Hot pink on aubergine.Nord
Nord.Obsidian
Near-black with very little colour — the quiet one.Ocean
The studio's own dark theme, and its default.OneDark
One Dark, as in the editor.SolarizedDark
Solarized, dark.SolarizedLight
Solarized, light.Stage
High contrast and large type, for a screen somebody is presenting from.Synthwave
Synthwave pink and violet.Terminal
Green on black, monospaced everywhere, no rounded corners.value__
Projects
Nextended_Aspire_Hosting_WebDataStudio
class
Metadata for the Aspire AppHost project.
Eigenschaften
ProjectPath : string { get; }
The path to the Aspire Host project.