Skip to content

fix: align CLI HelpText defaults and descriptions with JSON schema (Group 2)#3417

Open
souvikghosh04 wants to merge 6 commits intomainfrom
Usr/sogh/grp2-schema-cli-mismatch
Open

fix: align CLI HelpText defaults and descriptions with JSON schema (Group 2)#3417
souvikghosh04 wants to merge 6 commits intomainfrom
Usr/sogh/grp2-schema-cli-mismatch

Conversation

@souvikghosh04
Copy link
Copy Markdown
Contributor

@souvikghosh04 souvikghosh04 commented Apr 7, 2026

Summary

Fixes 14 issues where CLI option --help text showed incorrect default values, wrong descriptions, or enum mismatches compared to the JSON schema (dab.draft.schema.json) and C# runtime defaults.

Issues Addressed

2a. Default Value Mismatches (8 issues)

# Property Before After Resolution
#3347 runtime.mcp.dml-tools.read-records CLI: true, Schema: false Both: true Schema changed false?true to match C# runtime
#3348 runtime.mcp.dml-tools.create-record CLI: true, Schema: false Both: true Schema changed false?true to match C# runtime
#3349 runtime.mcp.dml-tools.describe-entities CLI: true, Schema: false Both: true Schema changed false?true to match C# runtime
#3350 runtime.graphql.multiple-mutations.create.enabled CLI: true, Schema: false CLI: false HelpText corrected to match schema
#3351 runtime.host.mode CLI: Development, Schema: production CLI: production HelpText corrected to match schema
#3352 data-source.options.set-session-context CLI: "(default)" text No default Removed misleading text
#3353 runtime.rest.request-body-strict init: false, Schema: true init: true HelpText corrected to match schema
#3354 runtime.mcp.dml-tools.aggregate-records Schema: .enabled=true, top-level=false Both: true Schema changed false?true to match C# runtime

2b. Description/Display Bugs (3 issues)

# Property Fix
#3355 --otel-service-name Changed description from "Headers for Open Telemetry" to "Service name for Open Telemetry"
#3356 dab add-telemetry options Removed duplicate (Default: X) from HelpText where Default= attribute already displays the value
#3357 runtime.graphql.depth-limit Changed description from "infinity"/"-1" to "Default: null (no limit)"

2c. Enum Mismatches (3 issues)

# Property Fix
#3358 --database-type (init) Removed dwsql not in schema
#3359 --database-type (configure) Already fixed in PR #3409
#3360 --database-type (configure) Changed to lowercase enum values

Cross-group overlaps resolved

Files Changed

File Changes
src/Cli/Commands/ConfigureOptions.cs 5 HelpText corrections (host.mode, multiple-mutations, set-session-context, depth-limit, database-type)
src/Cli/Commands/InitOptions.cs 2 HelpText corrections (request-body-strict, database-type)
src/Cli/Commands/AddTelemetryOptions.cs 4 HelpText/description corrections
schemas/dab.draft.schema.json DML tool defaults changed false?true (8 locations) to match C# runtime (DmlToolsConfig.DEFAULT_ENABLED = true)

Testing

  • ConfigureOptionsTests: 78 passed, 0 failed
  • EndToEndTests: 138 passed, 0 failed, 3 skipped
  • Build: 0 warnings, 0 errors

Fixes 14 issues where CLI option help text showed incorrect default
values or descriptions that didn't match the JSON schema:

ConfigureOptions.cs:
- DML tool defaults: true -> false (7 tools: #3347-#3353)
- multiple-mutations.create.enabled default: true -> false (#3354)
- host.mode default: Development -> production (#3355)
- set-session-context: removed misleading '(default)' text (#3356)
- depth-limit default: infinity -> null (no limit) (#3357)
- database-type: use lowercase values, add cosmosdb_postgresql (#3358)

InitOptions.cs:
- rest.request-body-strict default: false -> true (#3360)
- database-type: remove dwsql (not in schema) (#3358)

AddTelemetryOptions.cs:
- Remove duplicate '(Default: X)' from HelpText where Default= attribute
  already displays the value (#3356)
- Fix otel-service-name description from 'Headers' to 'Service name'

dab.draft.schema.json:
- aggregate-records object form .enabled default: true -> false to match
  top-level default (#3347)
@souvikghosh04 souvikghosh04 self-assigned this Apr 8, 2026
@souvikghosh04 souvikghosh04 added this to the April 2026 milestone Apr 8, 2026
@souvikghosh04 souvikghosh04 linked an issue Apr 8, 2026 that may be closed by this pull request
19 tasks
@souvikghosh04 souvikghosh04 moved this from Todo to In Progress in Data API builder Apr 8, 2026
@souvikghosh04 souvikghosh04 added bug Something isn't working cli assign-for-review labels Apr 8, 2026
@souvikghosh04 souvikghosh04 marked this pull request as ready for review April 14, 2026 09:51
Copilot AI review requested due to automatic review settings April 14, 2026 09:51
@souvikghosh04 souvikghosh04 moved this from In Progress to Review In Progress in Data API builder Apr 14, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Aligns CLI --help output with the JSON schema and runtime defaults by correcting default values, descriptions, and enum/value lists.

Changes:

  • Updated CLI option HelpText defaults/descriptions for init, configure, and add-telemetry commands.
  • Corrected allowed/enum value lists (notably database type values/casing).
  • Updated JSON schema defaults for MCP DML tools to reflect runtime behavior.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
src/Cli/Commands/InitOptions.cs Adjusts --database-type supported values list and updates HelpText default for rest.request-body-strict.
src/Cli/Commands/ConfigureOptions.cs Fixes HelpText for database type values/casing, removes misleading default text, and corrects GraphQL/host-mode defaults/description.
src/Cli/Commands/AddTelemetryOptions.cs Removes duplicated default text (when Default= is present) and fixes OTEL service-name description.
schemas/dab.draft.schema.json Changes MCP DML tool defaults to true to match runtime defaults.

Comment thread src/Cli/Commands/ConfigureOptions.cs Outdated
Comment thread src/Cli/Commands/InitOptions.cs Outdated
Comment thread src/Cli/Commands/ConfigureOptions.cs Outdated
Comment thread src/Cli/Commands/AddTelemetryOptions.cs Outdated
…ve hardcoded default, clarify otel-protocol

- depth-limit: clarify allowed values as '-1 (no limit) or 1..2147483647'
  instead of contradictory range + -1 instruction
- host.mode: use 'Default: Production' (title-case) to match the enum
  values shown in the same HelpText
- rest.request-body-strict: remove hardcoded '(Default: true)' from
  HelpText since no Default= attribute is set on the option
- otel-protocol: use 'grpc, httpprotobuf' instead of 'grpc/httpprotobuf'
  to avoid reading as a single token
@Aniruddh25 Aniruddh25 added the 2.0 label Apr 15, 2026
Copy link
Copy Markdown
Contributor

@RubenCerna2079 RubenCerna2079 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still missing some bugs that need to be fixed from #3432, let me know if you plan to solve those on a different PR.

Comment thread schemas/dab.draft.schema.json

// When true, DAB rejects extraneous/unmapped fields in the REST request body (strict mode). When false, extraneous fields are allowed and ignored.
[Option("rest.request-body-strict", Required = false, HelpText = "(Default: false) When true, rejects extraneous/unmapped fields in the REST request body. When false, allows and ignores them.")]
[Option("rest.request-body-strict", Required = false, HelpText = "When true, rejects extraneous/unmapped fields in the REST request body. When false, allows and ignores them.")]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this default to anything specifically?

public string? DataSourceUserDelegatedAuthDatabaseAudience { get; }

[Option("runtime.graphql.depth-limit", Required = false, HelpText = "Max allowed depth of the nested query. Allowed values: (0,2147483647] inclusive. Default is infinity. Use -1 to remove limit.")]
[Option("runtime.graphql.depth-limit", Required = false, HelpText = "Max allowed depth of a nested query. Allowed values: -1 (no limit) or 1..2147483647. Default: null (no limit).")]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not following why we say default is null if the value for no limit is -1

}

[Option("database-type", Required = true, HelpText = "Type of database to connect. Supported values: mssql, cosmosdb_nosql, cosmosdb_postgresql, mysql, postgresql, dwsql")]
[Option("database-type", Required = true, HelpText = "Type of database to connect. Supported values: mssql, cosmosdb_nosql, cosmosdb_postgresql, mysql, postgresql")]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am confused as to why we need to remove this type if in the documentation it says that we support it. And I thought we already supported this. Maybe I am just not aware of how this type is used.
https://learn.microsoft.com/en-us/azure/data-api-builder/configuration/data-source#data-source-1:~:text=2016-,dwsql,-Azure%20Synapse%20Analytics

public bool? RuntimeGraphQLAllowIntrospection { get; }

[Option("runtime.graphql.multiple-mutations.create.enabled", Required = false, HelpText = "Enable/Disable multiple-mutation create operations on DAB's generated GraphQL schema. Default: true (boolean).")]
[Option("runtime.graphql.multiple-mutations.create.enabled", Required = false, HelpText = "Enable/Disable multiple-mutation create operations on DAB's generated GraphQL schema. Default: false (boolean).")]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see some places where we still write the default value in the HelpText but we change it in others so that it is in the Default parameter. I think all of them should be in one place for consistency.

public CompressionLevel? RuntimeCompressionLevel { get; }

[Option("runtime.host.mode", Required = false, HelpText = "Set the host running mode of DAB in Development or Production. Default: Development.")]
[Option("runtime.host.mode", Required = false, HelpText = "Set the host running mode of DAB in Development or Production. Default: Production.")]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as previous comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2.0 bug Something isn't working cli

Projects

Status: Review In Progress

Development

Successfully merging this pull request may close these issues.

Schema/CLI Mismatch: Default Values & Descriptions (Group 2)

5 participants