diff --git a/csharp/rtl/Constants.cs b/csharp/rtl/Constants.cs index 8261874e1..57937e041 100644 --- a/csharp/rtl/Constants.cs +++ b/csharp/rtl/Constants.cs @@ -61,7 +61,7 @@ public struct Constants public const string DefaultApiVersion = "4.0"; public const string AgentPrefix = "CS-SDK"; - public const string LookerVersion = "26.10"; + public const string LookerVersion = "26.12"; public const string Bearer = "Bearer"; public const string LookerAppiId = "x-looker-appid"; diff --git a/csharp/sdk/4.0/methods.cs b/csharp/sdk/4.0/methods.cs index ec3f76f41..56030aae3 100644 --- a/csharp/sdk/4.0/methods.cs +++ b/csharp/sdk/4.0/methods.cs @@ -21,7 +21,7 @@ /// SOFTWARE. /// -/// 512 API methods +/// 518 API methods #nullable enable using System; @@ -2519,6 +2519,7 @@ public async Task> mobile_settings( /// - onboarding_enabled /// - privatelabel_configuration /// - revoke_certification_on_edits + /// - automated_mfa_enabled /// - timezone /// - host_url /// - email_domain_allowlist @@ -2563,6 +2564,7 @@ public async Task> get_setting( /// - onboarding_enabled /// - privatelabel_configuration /// - revoke_certification_on_edits + /// - automated_mfa_enabled /// - timezone /// - host_url /// - email_domain_allowlist @@ -7667,6 +7669,59 @@ public async Task> tag_ref( { "tag_message", tag_message }},body,options); } + /// ### Initiate Git Diagnosis Suite + /// + /// POST /projects/{project_id}/git_diagnostic_report -> GitDiagnosticReport + /// + /// GitDiagnosticReport GitDiagnosticReport (application/json) + /// + /// Looker Project ID + public async Task> create_git_diagnostic_report( + string project_id, + WriteGitDiagnosticReport body, + ITransportSettings? options = null) +{ + project_id = SdkUtils.EncodeParam(project_id); + return await AuthRequest(HttpMethod.Post, $"/projects/{project_id}/git_diagnostic_report", null,body,options); + } + + /// ### Retrieve Live Git Diagnostic Suite Execution Status + /// + /// GET /projects/{project_id}/git_diagnostic_report/{report_id} -> GitDiagnosticReport + /// + /// GitDiagnosticReport GitDiagnosticReport (application/json) + /// + /// Looker Project ID + /// Report ID + public async Task> get_git_diagnostic_report( + string project_id, + string report_id, + ITransportSettings? options = null) +{ + project_id = SdkUtils.EncodeParam(project_id); + report_id = SdkUtils.EncodeParam(report_id); + return await AuthRequest(HttpMethod.Get, $"/projects/{project_id}/git_diagnostic_report/{report_id}", null,null,options); + } + + /// ### Repair Git Configuration Issues + /// + /// POST /projects/{project_id}/git_diagnostic_report/{report_id}/repair -> GitDiagnosticReport + /// + /// GitDiagnosticReport GitDiagnosticReport (application/json) + /// + /// Looker Project ID + /// Report ID + public async Task> repair_git_diagnostic_report( + string project_id, + string report_id, + WriteGitDiagnosticReport body, + ITransportSettings? options = null) +{ + project_id = SdkUtils.EncodeParam(project_id); + report_id = SdkUtils.EncodeParam(report_id); + return await AuthRequest(HttpMethod.Post, $"/projects/{project_id}/git_diagnostic_report/{report_id}/repair", null,body,options); + } + /// ### Configure Repository Credential for a remote dependency /// /// Admin required. @@ -9734,6 +9789,21 @@ public async Task> get_self_service_model_allow { "google_sheets", google_sheets }},null,options); } + /// ### Get Generated LookML for a Self Service Model + /// + /// GET /self_service_models/{model_name}/lookml -> string + /// + /// string Self service lookml (application/json) + /// + /// Name of self service model + public async Task> get_self_service_model_lookml( + string model_name, + ITransportSettings? options = null) +{ + model_name = SdkUtils.EncodeParam(model_name); + return await AuthRequest(HttpMethod.Get, $"/self_service_models/{model_name}/lookml", null,null,options); + } + /// ### Update certification for a Self Service Explore /// /// PATCH /self_service_models/{model_name}/certification -> Certification @@ -10002,6 +10072,8 @@ public async Task> search_themes( /// ### Get the default theme /// + /// This endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead. + /// /// Returns the active theme object set as the default. /// /// The **default** theme name can be set in the UI on the Admin|Theme UI page @@ -10013,6 +10085,7 @@ public async Task> search_themes( /// Theme Theme (application/json) /// /// Timestamp representing the target datetime for the active period. Defaults to 'now' + [Obsolete("Deprecated")] public async Task> default_theme( DateTime? ts = null, ITransportSettings? options = null) @@ -10023,6 +10096,8 @@ public async Task> default_theme( /// ### Set the global default theme by theme name /// + /// This endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead. + /// /// Only Admin users can call this function. /// /// Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. @@ -10038,6 +10113,7 @@ public async Task> default_theme( /// Theme Theme (application/json) /// /// Name of theme to set as default + [Obsolete("Deprecated")] public async Task> set_default_theme( string name, ITransportSettings? options = null) @@ -10046,6 +10122,60 @@ public async Task> set_default_theme( { "name", name }},null,options); } + /// ### Get the default theme + /// + /// Returns the active theme object set as the default. + /// + /// The **default** theme name can be set in the UI on the Admin|Theme UI page + /// + /// The optional `ts` parameter can specify a different timestamp than "now." If specified, it returns the default theme at the time indicated. + /// + /// The optional `theme_type` parameter can specify the theme type to select for. + /// + /// GET /themes/default_theme -> Theme + /// + /// Theme Theme (application/json) + /// + /// Timestamp representing the target datetime for the active period. Defaults to 'now' + /// Theme type. + public async Task> default_theme_by_type( + string theme_type, + DateTime? ts = null, + ITransportSettings? options = null) +{ + return await AuthRequest(HttpMethod.Get, "/themes/default_theme", new Values { + { "ts", ts }, + { "theme_type", theme_type }},null,options); + } + + /// ### Set the global default theme by theme name + /// + /// Only Admin users can call this function. + /// + /// Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. + /// + /// [Create Theme](#!/Theme/create) has detailed information on rules for default and active themes + /// + /// Returns the new specified default theme object. + /// + /// The optional `theme_type` parameter can specify the theme type to select for. + /// + /// PUT /themes/default_theme -> Theme + /// + /// Theme Theme (application/json) + /// + /// Name of theme to set as default + /// Theme type. + public async Task> set_default_theme_by_type( + string name, + string theme_type, + ITransportSettings? options = null) +{ + return await AuthRequest(HttpMethod.Put, "/themes/default_theme", new Values { + { "name", name }, + { "theme_type", theme_type }},null,options); + } + /// ### Get active themes /// /// Returns an array of active themes. @@ -10062,16 +10192,19 @@ public async Task> set_default_theme( /// /// Name of theme /// Timestamp representing the target datetime for the active period. Defaults to 'now' + /// Theme type. /// Requested fields. public async Task> active_themes( string? name = null, DateTime? ts = null, + string? theme_type = null, string? fields = null, ITransportSettings? options = null) { return await AuthRequest(HttpMethod.Get, "/themes/active", new Values { { "name", name }, { "ts", ts }, + { "theme_type", theme_type }, { "fields", fields }},null,options); } diff --git a/csharp/sdk/4.0/models.cs b/csharp/sdk/4.0/models.cs index d0f1ee672..4a9b4de28 100644 --- a/csharp/sdk/4.0/models.cs +++ b/csharp/sdk/4.0/models.cs @@ -21,7 +21,7 @@ /// SOFTWARE. /// -/// 458 API models: 361 Spec, 0 Request, 71 Write, 26 Enum +/// 461 API models: 363 Spec, 0 Request, 72 Write, 26 Enum #nullable enable using System; @@ -3423,6 +3423,54 @@ public class GitConnectionTestResult : SdkModel public string? status { get; set; } = null; } +public class GitDiagnosticIssue : SdkModel +{ + /// Operations the current user is able to perform on this object (read-only) + public StringDictionary? can { get; set; } = null; + /// Unique ID of the diagnostic issue. (read-only) + public string? id { get; set; } = null; + /// Parent diagnostic report ID. (read-only) + public string? report_id { get; set; } = null; + /// Target Looker Project ID. (read-only) + public string? project_id { get; set; } = null; + /// Environment scope (developer/production). (read-only) + public string? project_type { get; set; } = null; + /// Git diagnostic issue category. (read-only) + public string? issue_type { get; set; } = null; + /// Version schema. (read-only) + public string? issue_version { get; set; } = null; + /// Current execution status. (read-only) + public string? state { get; set; } = null; + /// Creation timestamp. (read-only) + public DateTime? created_at { get; set; } = null; + /// Last update timestamp. (read-only) + public DateTime? updated_at { get; set; } = null; +} + +public class GitDiagnosticReport : SdkModel +{ + /// Operations the current user is able to perform on this object (read-only) + public StringDictionary? can { get; set; } = null; + /// Unique ID of the git diagnostic report. (read-only) + public string? id { get; set; } = null; + /// Target Looker Project ID. (read-only) + public string? project_id { get; set; } = null; + /// ID of the user initiating the diagnosis. (read-only) + public string? user_id { get; set; } = null; + /// Raw lifecycle state. (read-only) + public string? state { get; set; } = null; + /// Status derived from state. (read-only) + public string? status { get; set; } = null; + /// Creation time. (read-only) + public DateTime? created_at { get; set; } = null; + /// Update time. (read-only) + public DateTime? updated_at { get; set; } = null; + /// Project structure type. + public string? project_type { get; set; } = null; + /// Diagnostic issues associated with this report. (read-only) + public GitDiagnosticIssue[]? issues { get; set; } = null; +} + public class GitStatus : SdkModel { /// Git action: add, delete, etc (read-only) @@ -3457,6 +3505,20 @@ public class GoldenQuery : SdkModel public DateTime? created_at { get; set; } = null; /// Time when the question was last updated (read-only) public DateTime? last_updated_at { get; set; } = null; + /// The explore name of the golden query (read-only) + public string? explore { get; set; } = null; + /// The LookML model name of the golden query (read-only) + public string? model { get; set; } = null; + /// Fields of the associated Looker Query (read-only) + public string[]? fields { get; set; } = null; + /// Filters of the associated Looker Query (read-only) + public StringDictionary? filters { get; set; } = null; + /// Sorts of the associated Looker Query (read-only) + public string[]? sorts { get; set; } = null; + /// Limit of the associated Looker Query (read-only) + public string? limit { get; set; } = null; + /// Client ID of the associated Looker Query (read-only) + public string? client_id { get; set; } = null; } public class Group : SdkModel @@ -4448,6 +4510,8 @@ public class LookmlModelExploreField : SdkModel public Align? align { get; set; } /// An array of custom timeframes available for this field for filtering, if applicable. (read-only) public string[]? available_custom_timeframes { get; set; } = null; + /// A map of timeframe keys to their localized labels. (read-only) + public StringDictionary? timeframe_labels { get; set; } = null; /// Whether it's possible to filter on this field. (read-only) public bool? can_filter { get; set; } = null; /// Field category Valid values are: "parameter", "filter", "measure", "dimension". (read-only) @@ -6245,6 +6309,8 @@ public class ScheduledPlan : SdkModel public bool? run_once { get; set; } = null; /// Whether links back to Looker should be included in this ScheduledPlan public bool? include_links { get; set; } = null; + /// Whether to include a dashboard summary in the scheduled email + public bool? include_dashboard_summary { get; set; } = null; /// Custom url domain for the scheduled entity public string? custom_url_base { get; set; } = null; /// Custom url path and parameters for the scheduled entity @@ -6419,6 +6485,8 @@ public class SelfServiceModelUploadData : SdkModel public string? drive_url { get; set; } = null; /// User ID of the uploaded data owner (read-only) public string? owner_id { get; set; } = null; + /// GUID of the visual canvas (read-only) + public string? canvas_guid { get; set; } = null; } public class ServiceAccount : SdkModel @@ -6546,11 +6614,13 @@ public class Setting : SdkModel public string? content_certification_documentation_link { get; set; } = null; /// Allow content certification to be revoked on edits. public bool? revoke_certification_on_edits { get; set; } = null; + /// Automatically enable Multi-Factor Authentication for users. + public bool? automated_mfa_enabled { get; set; } = null; /// Allow content certification. public bool? is_content_certification_enabled { get; set; } = null; /// Allow auto certification of lookml content. public bool? auto_certify_lookml_content { get; set; } = null; - /// Toggle CA agent observability + /// Toggle Conversational Analytics Agent Token usage public bool? ca_agent_observability { get; set; } = null; public McpTools? mcp_tools { get; set; } } @@ -8261,8 +8331,16 @@ public class WriteGitBranch : SdkModel public string? @ref { get; set; } = null; } +/// Dynamic writeable type for GitDiagnosticReport removes: +/// can, id, project_id, user_id, state, status, created_at, updated_at, issues +public class WriteGitDiagnosticReport : SdkModel +{ + /// Project structure type. + public string? project_type { get; set; } = null; +} + /// Dynamic writeable type for GoldenQuery removes: -/// can, id, query_id, created_by_user_id, last_updated_by_user_id, created_at, last_updated_at +/// can, id, query_id, created_by_user_id, last_updated_by_user_id, created_at, last_updated_at, explore, model, fields, filters, sorts, limit, client_id public class WriteGoldenQuery : SdkModel { /// Variations of the golden question text @@ -9100,6 +9178,8 @@ public class WriteScheduledPlan : SdkModel public bool? run_once { get; set; } = null; /// Whether links back to Looker should be included in this ScheduledPlan public bool? include_links { get; set; } = null; + /// Whether to include a dashboard summary in the scheduled email + public bool? include_dashboard_summary { get; set; } = null; /// Custom url domain for the scheduled entity public string? custom_url_base { get; set; } = null; /// Custom url path and parameters for the scheduled entity @@ -9206,11 +9286,13 @@ public class WriteSetting : SdkModel public string? content_certification_documentation_link { get; set; } = null; /// Allow content certification to be revoked on edits. public bool? revoke_certification_on_edits { get; set; } = null; + /// Automatically enable Multi-Factor Authentication for users. + public bool? automated_mfa_enabled { get; set; } = null; /// Allow content certification. public bool? is_content_certification_enabled { get; set; } = null; /// Allow auto certification of lookml content. public bool? auto_certify_lookml_content { get; set; } = null; - /// Toggle CA agent observability + /// Toggle Conversational Analytics Agent Token usage public bool? ca_agent_observability { get; set; } = null; /// Dynamic writeable type for McpTools public WriteMcpTools? mcp_tools { get; set; } diff --git a/go/sdk/v4/methods.go b/go/sdk/v4/methods.go index 61dcfb6b5..dad6e7a95 100644 --- a/go/sdk/v4/methods.go +++ b/go/sdk/v4/methods.go @@ -26,7 +26,7 @@ SOFTWARE. /* -512 API methods +518 API methods */ // NOTE: Do not edit this file generated by Looker SDK Codegen for API v4 @@ -2131,6 +2131,7 @@ func (l *LookerSDK) MobileSettings( // - onboarding_enabled // - privatelabel_configuration // - revoke_certification_on_edits +// - automated_mfa_enabled // - timezone // - host_url // - email_domain_allowlist @@ -2172,6 +2173,7 @@ func (l *LookerSDK) GetSetting( // - onboarding_enabled // - privatelabel_configuration // - revoke_certification_on_edits +// - automated_mfa_enabled // - timezone // - host_url // - email_domain_allowlist @@ -5858,6 +5860,51 @@ func (l *LookerSDK) TagRef(request RequestTagRef, } +// ### Initiate Git Diagnosis Suite +// +// POST /projects/{project_id}/git_diagnostic_report -> GitDiagnosticReport +func (l *LookerSDK) CreateGitDiagnosticReport( + projectId string, + body WriteGitDiagnosticReport, + options *rtl.ApiSettings) (GitDiagnosticReport, error) { + projectId = url.PathEscape(projectId) + var result GitDiagnosticReport + err := l.AuthSession.Do(&result, "POST", "/4.0", fmt.Sprintf("/projects/%v/git_diagnostic_report", projectId), nil, body, options) + return result, err + +} + +// ### Retrieve Live Git Diagnostic Suite Execution Status +// +// GET /projects/{project_id}/git_diagnostic_report/{report_id} -> GitDiagnosticReport +func (l *LookerSDK) GetGitDiagnosticReport( + projectId string, + reportId string, + options *rtl.ApiSettings) (GitDiagnosticReport, error) { + projectId = url.PathEscape(projectId) + reportId = url.PathEscape(reportId) + var result GitDiagnosticReport + err := l.AuthSession.Do(&result, "GET", "/4.0", fmt.Sprintf("/projects/%v/git_diagnostic_report/%v", projectId, reportId), nil, nil, options) + return result, err + +} + +// ### Repair Git Configuration Issues +// +// POST /projects/{project_id}/git_diagnostic_report/{report_id}/repair -> GitDiagnosticReport +func (l *LookerSDK) RepairGitDiagnosticReport( + projectId string, + reportId string, + body WriteGitDiagnosticReport, + options *rtl.ApiSettings) (GitDiagnosticReport, error) { + projectId = url.PathEscape(projectId) + reportId = url.PathEscape(reportId) + var result GitDiagnosticReport + err := l.AuthSession.Do(&result, "POST", "/4.0", fmt.Sprintf("/projects/%v/git_diagnostic_report/%v/repair", projectId, reportId), nil, body, options) + return result, err + +} + // ### Configure Repository Credential for a remote dependency // // Admin required. @@ -7345,6 +7392,19 @@ func (l *LookerSDK) GetSelfServiceModelAllowedConnections( } +// ### Get Generated LookML for a Self Service Model +// +// GET /self_service_models/{model_name}/lookml -> string +func (l *LookerSDK) GetSelfServiceModelLookml( + modelName string, + options *rtl.ApiSettings) (string, error) { + modelName = url.PathEscape(modelName) + var result string + err := l.AuthSession.Do(&result, "GET", "/4.0", fmt.Sprintf("/self_service_models/%v/lookml", modelName), nil, nil, options) + return result, err + +} + // ### Update certification for a Self Service Explore // // PATCH /self_service_models/{model_name}/certification -> Certification @@ -7563,6 +7623,8 @@ func (l *LookerSDK) SearchThemes(request RequestSearchThemes, // ### Get the default theme // +// This endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead. +// // Returns the active theme object set as the default. // // The **default** theme name can be set in the UI on the Admin|Theme UI page @@ -7570,8 +7632,10 @@ func (l *LookerSDK) SearchThemes(request RequestSearchThemes, // The optional `ts` parameter can specify a different timestamp than "now." If specified, it returns the default theme at the time indicated. // // GET /themes/default -> Theme +// +// Deprecated: This method is deprecated. func (l *LookerSDK) DefaultTheme( - ts time.Time, + ts *time.Time, options *rtl.ApiSettings) (Theme, error) { var result Theme err := l.AuthSession.Do(&result, "GET", "/4.0", "/themes/default", map[string]interface{}{"ts": ts}, nil, options) @@ -7581,6 +7645,8 @@ func (l *LookerSDK) DefaultTheme( // ### Set the global default theme by theme name // +// This endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead. +// // Only Admin users can call this function. // // Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. @@ -7592,6 +7658,8 @@ func (l *LookerSDK) DefaultTheme( // **Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or https://console.cloud.google.com/support/cases/ to update your license for this feature. // // PUT /themes/default -> Theme +// +// Deprecated: This method is deprecated. func (l *LookerSDK) SetDefaultTheme( name string, options *rtl.ApiSettings) (Theme, error) { @@ -7601,6 +7669,50 @@ func (l *LookerSDK) SetDefaultTheme( } +// ### Get the default theme +// +// Returns the active theme object set as the default. +// +// The **default** theme name can be set in the UI on the Admin|Theme UI page +// +// The optional `ts` parameter can specify a different timestamp than "now." If specified, it returns the default theme at the time indicated. +// +// The optional `theme_type` parameter can specify the theme type to select for. +// +// GET /themes/default_theme -> Theme +func (l *LookerSDK) DefaultThemeByType( + themeType string, + ts *time.Time, + options *rtl.ApiSettings) (Theme, error) { + var result Theme + err := l.AuthSession.Do(&result, "GET", "/4.0", "/themes/default_theme", map[string]interface{}{"ts": ts, "theme_type": themeType}, nil, options) + return result, err + +} + +// ### Set the global default theme by theme name +// +// Only Admin users can call this function. +// +// Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. +// +// [Create Theme](#!/Theme/create) has detailed information on rules for default and active themes +// +// Returns the new specified default theme object. +// +// The optional `theme_type` parameter can specify the theme type to select for. +// +// PUT /themes/default_theme -> Theme +func (l *LookerSDK) SetDefaultThemeByType( + name string, + themeType string, + options *rtl.ApiSettings) (Theme, error) { + var result Theme + err := l.AuthSession.Do(&result, "PUT", "/4.0", "/themes/default_theme", map[string]interface{}{"name": name, "theme_type": themeType}, nil, options) + return result, err + +} + // ### Get active themes // // Returns an array of active themes. @@ -7615,7 +7727,7 @@ func (l *LookerSDK) SetDefaultTheme( func (l *LookerSDK) ActiveThemes(request RequestActiveThemes, options *rtl.ApiSettings) ([]Theme, error) { var result []Theme - err := l.AuthSession.Do(&result, "GET", "/4.0", "/themes/active", map[string]interface{}{"name": request.Name, "ts": request.Ts, "fields": request.Fields}, nil, options) + err := l.AuthSession.Do(&result, "GET", "/4.0", "/themes/active", map[string]interface{}{"name": request.Name, "ts": request.Ts, "theme_type": request.ThemeType, "fields": request.Fields}, nil, options) return result, err } @@ -7630,7 +7742,7 @@ func (l *LookerSDK) ActiveThemes(request RequestActiveThemes, // GET /themes/theme_or_default -> Theme func (l *LookerSDK) ThemeOrDefault( name string, - ts time.Time, + ts *time.Time, options *rtl.ApiSettings) (Theme, error) { var result Theme err := l.AuthSession.Do(&result, "GET", "/4.0", "/themes/theme_or_default", map[string]interface{}{"name": name, "ts": ts}, nil, options) diff --git a/go/sdk/v4/models.go b/go/sdk/v4/models.go index 3b63739d9..f07c0909a 100644 --- a/go/sdk/v4/models.go +++ b/go/sdk/v4/models.go @@ -26,7 +26,7 @@ SOFTWARE. /* -533 API models: 361 Spec, 76 Request, 70 Write, 26 Enum +536 API models: 363 Spec, 76 Request, 71 Write, 26 Enum */ // NOTE: Do not edit this file generated by Looker SDK Codegen for API v4 @@ -1950,6 +1950,32 @@ type GitConnectionTestResult struct { Status *string `json:"status,omitempty"` // Either 'pass' or 'fail' } +type GitDiagnosticIssue struct { + Can *map[string]bool `json:"can,omitempty"` // Operations the current user is able to perform on this object + Id *string `json:"id,omitempty"` // Unique ID of the diagnostic issue. + ReportId *string `json:"report_id,omitempty"` // Parent diagnostic report ID. + ProjectId *string `json:"project_id,omitempty"` // Target Looker Project ID. + ProjectType *string `json:"project_type,omitempty"` // Environment scope (developer/production). + IssueType *string `json:"issue_type,omitempty"` // Git diagnostic issue category. + IssueVersion *string `json:"issue_version,omitempty"` // Version schema. + State *string `json:"state,omitempty"` // Current execution status. + CreatedAt *time.Time `json:"created_at,omitempty"` // Creation timestamp. + UpdatedAt *time.Time `json:"updated_at,omitempty"` // Last update timestamp. +} + +type GitDiagnosticReport struct { + Can *map[string]bool `json:"can,omitempty"` // Operations the current user is able to perform on this object + Id *string `json:"id,omitempty"` // Unique ID of the git diagnostic report. + ProjectId *string `json:"project_id,omitempty"` // Target Looker Project ID. + UserId *string `json:"user_id,omitempty"` // ID of the user initiating the diagnosis. + State *string `json:"state,omitempty"` // Raw lifecycle state. + Status *string `json:"status,omitempty"` // Status derived from state. + CreatedAt *time.Time `json:"created_at,omitempty"` // Creation time. + UpdatedAt *time.Time `json:"updated_at,omitempty"` // Update time. + ProjectType *string `json:"project_type,omitempty"` // Project structure type. + Issues *[]GitDiagnosticIssue `json:"issues,omitempty"` // Diagnostic issues associated with this report. +} + type GitStatus struct { Action *string `json:"action,omitempty"` // Git action: add, delete, etc Conflict *bool `json:"conflict,omitempty"` // When true, changes to the local file conflict with the remote repository @@ -1958,16 +1984,23 @@ type GitStatus struct { } type GoldenQuery struct { - Can *map[string]bool `json:"can,omitempty"` // Operations the current user is able to perform on this object - Id *int64 `json:"id,omitempty"` // Unique identifier for the golden question - QueryId *int64 `json:"query_id,omitempty"` // ID of the associated Looker Query resolved from the answer - Questions *[]string `json:"questions,omitempty"` // Variations of the golden question text - Answer *string `json:"answer,omitempty"` // The Explore URL representing the answer to the question - IsActive *bool `json:"is_active,omitempty"` // Whether this golden question should be utilized by the agent - CreatedByUserId *int64 `json:"created_by_user_id,omitempty"` // ID of the user who created the question - LastUpdatedByUserId *int64 `json:"last_updated_by_user_id,omitempty"` // ID of the user who last updated the question - CreatedAt *time.Time `json:"created_at,omitempty"` // Time when the question was created - LastUpdatedAt *time.Time `json:"last_updated_at,omitempty"` // Time when the question was last updated + Can *map[string]bool `json:"can,omitempty"` // Operations the current user is able to perform on this object + Id *int64 `json:"id,omitempty"` // Unique identifier for the golden question + QueryId *int64 `json:"query_id,omitempty"` // ID of the associated Looker Query resolved from the answer + Questions *[]string `json:"questions,omitempty"` // Variations of the golden question text + Answer *string `json:"answer,omitempty"` // The Explore URL representing the answer to the question + IsActive *bool `json:"is_active,omitempty"` // Whether this golden question should be utilized by the agent + CreatedByUserId *int64 `json:"created_by_user_id,omitempty"` // ID of the user who created the question + LastUpdatedByUserId *int64 `json:"last_updated_by_user_id,omitempty"` // ID of the user who last updated the question + CreatedAt *time.Time `json:"created_at,omitempty"` // Time when the question was created + LastUpdatedAt *time.Time `json:"last_updated_at,omitempty"` // Time when the question was last updated + Explore *string `json:"explore,omitempty"` // The explore name of the golden query + Model *string `json:"model,omitempty"` // The LookML model name of the golden query + Fields *[]string `json:"fields,omitempty"` // Fields of the associated Looker Query + Filters *map[string]interface{} `json:"filters,omitempty"` // Filters of the associated Looker Query + Sorts *[]string `json:"sorts,omitempty"` // Sorts of the associated Looker Query + Limit *string `json:"limit,omitempty"` // Limit of the associated Looker Query + ClientId *string `json:"client_id,omitempty"` // Client ID of the associated Looker Query } type Group struct { @@ -2523,6 +2556,7 @@ type LookmlModelExploreError struct { type LookmlModelExploreField struct { Align *Align `json:"align,omitempty"` // The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: "left", "right". AvailableCustomTimeframes *[]string `json:"available_custom_timeframes,omitempty"` // An array of custom timeframes available for this field for filtering, if applicable. + TimeframeLabels *map[string]interface{} `json:"timeframe_labels,omitempty"` // A map of timeframe keys to their localized labels. CanFilter *bool `json:"can_filter,omitempty"` // Whether it's possible to filter on this field. Category *Category `json:"category,omitempty"` // Field category Valid values are: "parameter", "filter", "measure", "dimension". DefaultFilterValue *string `json:"default_filter_value,omitempty"` // The default value that this field uses when filtering. Null if there is no default value. @@ -3312,9 +3346,10 @@ type RepositoryCredential struct { // Dynamically generated request type for active_themes type RequestActiveThemes struct { - Name *string `json:"name,omitempty"` // Name of theme - Ts *time.Time `json:"ts,omitempty"` // Timestamp representing the target datetime for the active period. Defaults to 'now' - Fields *string `json:"fields,omitempty"` // Requested fields. + Name *string `json:"name,omitempty"` // Name of theme + Ts *time.Time `json:"ts,omitempty"` // Timestamp representing the target datetime for the active period. Defaults to 'now' + ThemeType *string `json:"theme_type,omitempty"` // Theme type. + Fields *string `json:"fields,omitempty"` // Requested fields. } // Dynamically generated request type for alert_notifications @@ -4396,6 +4431,7 @@ type ScheduledPlan struct { ScheduledPlanDestination *[]ScheduledPlanDestination `json:"scheduled_plan_destination,omitempty"` // Scheduled plan destinations RunOnce *bool `json:"run_once,omitempty"` // Whether the plan in question should only be run once (usually for testing) IncludeLinks *bool `json:"include_links,omitempty"` // Whether links back to Looker should be included in this ScheduledPlan + IncludeDashboardSummary *bool `json:"include_dashboard_summary,omitempty"` // Whether to include a dashboard summary in the scheduled email CustomUrlBase *string `json:"custom_url_base,omitempty"` // Custom url domain for the scheduled entity CustomUrlParams *string `json:"custom_url_params,omitempty"` // Custom url path and parameters for the scheduled entity CustomUrlLabel *string `json:"custom_url_label,omitempty"` // Custom url label for the scheduled entity @@ -4495,6 +4531,7 @@ type SelfServiceModelUploadData struct { UploadType *string `json:"upload_type,omitempty"` // Type of the upload (e.g. 'csv', 'sheet') DriveUrl *string `json:"drive_url,omitempty"` // Drive URL OwnerId *string `json:"owner_id,omitempty"` // User ID of the uploaded data owner + CanvasGuid *string `json:"canvas_guid,omitempty"` // GUID of the visual canvas } type ServiceAccount struct { @@ -4565,9 +4602,10 @@ type Setting struct { ManagedCertificateUri *[]string `json:"managed_certificate_uri,omitempty"` // Array of URIs pointing to the location of a root certificate in Secret Manager ContentCertificationDocumentationLink *string `json:"content_certification_documentation_link,omitempty"` // Link to content certification documentation. RevokeCertificationOnEdits *bool `json:"revoke_certification_on_edits,omitempty"` // Allow content certification to be revoked on edits. + AutomatedMfaEnabled *bool `json:"automated_mfa_enabled,omitempty"` // Automatically enable Multi-Factor Authentication for users. IsContentCertificationEnabled *bool `json:"is_content_certification_enabled,omitempty"` // Allow content certification. AutoCertifyLookmlContent *bool `json:"auto_certify_lookml_content,omitempty"` // Allow auto certification of lookml content. - CaAgentObservability *bool `json:"ca_agent_observability,omitempty"` // Toggle CA agent observability + CaAgentObservability *bool `json:"ca_agent_observability,omitempty"` // Toggle Conversational Analytics Agent Token usage McpTools *McpTools `json:"mcp_tools,omitempty"` } @@ -5541,8 +5579,14 @@ type WriteGitBranch struct { Ref *string `json:"ref,omitempty"` // The resolved ref of this branch. Updating `ref` results in `git reset --hard ``. } +// Dynamic writeable type for GitDiagnosticReport removes: +// can, id, project_id, user_id, state, status, created_at, updated_at, issues +type WriteGitDiagnosticReport struct { + ProjectType *string `json:"project_type,omitempty"` // Project structure type. +} + // Dynamic writeable type for GoldenQuery removes: -// can, id, query_id, created_by_user_id, last_updated_by_user_id, created_at, last_updated_at +// can, id, query_id, created_by_user_id, last_updated_by_user_id, created_at, last_updated_at, explore, model, fields, filters, sorts, limit, client_id type WriteGoldenQuery struct { Questions *[]string `json:"questions,omitempty"` // Variations of the golden question text Answer *string `json:"answer,omitempty"` // The Explore URL representing the answer to the question @@ -5992,6 +6036,7 @@ type WriteScheduledPlan struct { ScheduledPlanDestination *[]ScheduledPlanDestination `json:"scheduled_plan_destination,omitempty"` // Scheduled plan destinations RunOnce *bool `json:"run_once,omitempty"` // Whether the plan in question should only be run once (usually for testing) IncludeLinks *bool `json:"include_links,omitempty"` // Whether links back to Looker should be included in this ScheduledPlan + IncludeDashboardSummary *bool `json:"include_dashboard_summary,omitempty"` // Whether to include a dashboard summary in the scheduled email CustomUrlBase *string `json:"custom_url_base,omitempty"` // Custom url domain for the scheduled entity CustomUrlParams *string `json:"custom_url_params,omitempty"` // Custom url path and parameters for the scheduled entity CustomUrlLabel *string `json:"custom_url_label,omitempty"` // Custom url label for the scheduled entity @@ -6051,9 +6096,10 @@ type WriteSetting struct { ManagedCertificateUri *[]string `json:"managed_certificate_uri,omitempty"` // Array of URIs pointing to the location of a root certificate in Secret Manager ContentCertificationDocumentationLink *string `json:"content_certification_documentation_link,omitempty"` // Link to content certification documentation. RevokeCertificationOnEdits *bool `json:"revoke_certification_on_edits,omitempty"` // Allow content certification to be revoked on edits. + AutomatedMfaEnabled *bool `json:"automated_mfa_enabled,omitempty"` // Automatically enable Multi-Factor Authentication for users. IsContentCertificationEnabled *bool `json:"is_content_certification_enabled,omitempty"` // Allow content certification. AutoCertifyLookmlContent *bool `json:"auto_certify_lookml_content,omitempty"` // Allow auto certification of lookml content. - CaAgentObservability *bool `json:"ca_agent_observability,omitempty"` // Toggle CA agent observability + CaAgentObservability *bool `json:"ca_agent_observability,omitempty"` // Toggle Conversational Analytics Agent Token usage McpTools *WriteMcpTools `json:"mcp_tools,omitempty"` // Dynamic writeable type for McpTools } diff --git a/kotlin/src/main/com/looker/sdk/4.0/methods.kt b/kotlin/src/main/com/looker/sdk/4.0/methods.kt index 0a1b2f877..174de3890 100644 --- a/kotlin/src/main/com/looker/sdk/4.0/methods.kt +++ b/kotlin/src/main/com/looker/sdk/4.0/methods.kt @@ -25,7 +25,7 @@ */ /** - * 512 API methods + * 518 API methods */ // NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0 @@ -2516,6 +2516,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -2561,6 +2562,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -7870,6 +7872,58 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { ) } + /** + * ### Initiate Git Diagnosis Suite + * + * @param {String} project_id Looker Project ID + * @param {WriteGitDiagnosticReport} body + * + * POST /projects/{project_id}/git_diagnostic_report -> GitDiagnosticReport + */ + fun create_git_diagnostic_report( + project_id: String, + body: WriteGitDiagnosticReport, + ): SDKResponse { + val path_project_id = encodeParam(project_id) + return this.post("/projects/${path_project_id}/git_diagnostic_report", mapOf(), body) + } + + /** + * ### Retrieve Live Git Diagnostic Suite Execution Status + * + * @param {String} project_id Looker Project ID + * @param {String} report_id Report ID + * + * GET /projects/{project_id}/git_diagnostic_report/{report_id} -> GitDiagnosticReport + */ + fun get_git_diagnostic_report( + project_id: String, + report_id: String, + ): SDKResponse { + val path_project_id = encodeParam(project_id) + val path_report_id = encodeParam(report_id) + return this.get("/projects/${path_project_id}/git_diagnostic_report/${path_report_id}", mapOf()) + } + + /** + * ### Repair Git Configuration Issues + * + * @param {String} project_id Looker Project ID + * @param {String} report_id Report ID + * @param {WriteGitDiagnosticReport} body + * + * POST /projects/{project_id}/git_diagnostic_report/{report_id}/repair -> GitDiagnosticReport + */ + fun repair_git_diagnostic_report( + project_id: String, + report_id: String, + body: WriteGitDiagnosticReport, + ): SDKResponse { + val path_project_id = encodeParam(project_id) + val path_report_id = encodeParam(report_id) + return this.post("/projects/${path_project_id}/git_diagnostic_report/${path_report_id}/repair", mapOf(), body) + } + /** * ### Configure Repository Credential for a remote dependency * @@ -9978,6 +10032,20 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { ) } + /** + * ### Get Generated LookML for a Self Service Model + * + * @param {String} model_name Name of self service model + * + * GET /self_service_models/{model_name}/lookml -> String + */ + fun get_self_service_model_lookml( + model_name: String, + ): SDKResponse { + val path_model_name = encodeParam(model_name) + return this.get("/self_service_models/${path_model_name}/lookml", mapOf()) + } + /** * ### Update certification for a Self Service Explore * @@ -10246,6 +10314,8 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { /** * ### Get the default theme * + * This endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead. + * * Returns the active theme object set as the default. * * The **default** theme name can be set in the UI on the Admin|Theme UI page @@ -10256,7 +10326,9 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * * GET /themes/default -> Theme */ - @JvmOverloads fun default_theme( + @Deprecated(message = "Deprecated method") + @JvmOverloads + fun default_theme( ts: Date? = null, ): SDKResponse { return this.get( @@ -10268,6 +10340,8 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { /** * ### Set the global default theme by theme name * + * This endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead. + * * Only Admin users can call this function. * * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. @@ -10282,6 +10356,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * * PUT /themes/default -> Theme */ + @Deprecated(message = "Deprecated method") fun set_default_theme( name: String, ): SDKResponse { @@ -10291,6 +10366,66 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { ) } + /** + * ### Get the default theme + * + * Returns the active theme object set as the default. + * + * The **default** theme name can be set in the UI on the Admin|Theme UI page + * + * The optional `ts` parameter can specify a different timestamp than "now." If specified, it returns the default theme at the time indicated. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * @param {String} theme_type Theme type. + * @param {Date} ts Timestamp representing the target datetime for the active period. Defaults to 'now' + * + * GET /themes/default_theme -> Theme + */ + @JvmOverloads fun default_theme_by_type( + theme_type: String, + ts: Date? = null, + ): SDKResponse { + return this.get( + "/themes/default_theme", + mapOf( + "ts" to ts, + "theme_type" to theme_type, + ), + ) + } + + /** + * ### Set the global default theme by theme name + * + * Only Admin users can call this function. + * + * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. + * + * [Create Theme](#!/Theme/create) has detailed information on rules for default and active themes + * + * Returns the new specified default theme object. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * @param {String} name Name of theme to set as default + * @param {String} theme_type Theme type. + * + * PUT /themes/default_theme -> Theme + */ + fun set_default_theme_by_type( + name: String, + theme_type: String, + ): SDKResponse { + return this.put( + "/themes/default_theme", + mapOf( + "name" to name, + "theme_type" to theme_type, + ), + ) + } + /** * ### Get active themes * @@ -10304,6 +10439,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { * * @param {String} name Name of theme * @param {Date} ts Timestamp representing the target datetime for the active period. Defaults to 'now' + * @param {String} theme_type Theme type. * @param {String} fields Requested fields. * * GET /themes/active -> Array @@ -10311,6 +10447,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { @JvmOverloads fun active_themes( name: String? = null, ts: Date? = null, + theme_type: String? = null, fields: String? = null, ): SDKResponse { return this.get>( @@ -10318,6 +10455,7 @@ class LookerSDK(authSession: AuthSession) : APIMethods(authSession) { mapOf( "name" to name, "ts" to ts, + "theme_type" to theme_type, "fields" to fields, ), ) diff --git a/kotlin/src/main/com/looker/sdk/4.0/models.kt b/kotlin/src/main/com/looker/sdk/4.0/models.kt index ecd251745..698541a80 100644 --- a/kotlin/src/main/com/looker/sdk/4.0/models.kt +++ b/kotlin/src/main/com/looker/sdk/4.0/models.kt @@ -25,7 +25,7 @@ */ /** - * 458 API models: 361 Spec, 0 Request, 71 Write, 26 Enum + * 461 API models: 363 Spec, 0 Request, 72 Write, 26 Enum */ // NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0 @@ -3655,6 +3655,56 @@ data class GitConnectionTestResult( var status: String? = null, ) : Serializable +/** + * @property can Operations the current user is able to perform on this object (read-only) + * @property id Unique ID of the diagnostic issue. (read-only) + * @property report_id Parent diagnostic report ID. (read-only) + * @property project_id Target Looker Project ID. (read-only) + * @property project_type Environment scope (developer/production). (read-only) + * @property issue_type Git diagnostic issue category. (read-only) + * @property issue_version Version schema. (read-only) + * @property state Current execution status. (read-only) + * @property created_at Creation timestamp. (read-only) + * @property updated_at Last update timestamp. (read-only) + */ +data class GitDiagnosticIssue( + var can: Map? = null, + var id: String? = null, + var report_id: String? = null, + var project_id: String? = null, + var project_type: String? = null, + var issue_type: String? = null, + var issue_version: String? = null, + var state: String? = null, + var created_at: Date? = null, + var updated_at: Date? = null, +) : Serializable + +/** + * @property can Operations the current user is able to perform on this object (read-only) + * @property id Unique ID of the git diagnostic report. (read-only) + * @property project_id Target Looker Project ID. (read-only) + * @property user_id ID of the user initiating the diagnosis. (read-only) + * @property state Raw lifecycle state. (read-only) + * @property status Status derived from state. (read-only) + * @property created_at Creation time. (read-only) + * @property updated_at Update time. (read-only) + * @property project_type Project structure type. + * @property issues Diagnostic issues associated with this report. (read-only) + */ +data class GitDiagnosticReport( + var can: Map? = null, + var id: String? = null, + var project_id: String? = null, + var user_id: String? = null, + var state: String? = null, + var status: String? = null, + var created_at: Date? = null, + var updated_at: Date? = null, + var project_type: String? = null, + var issues: Array? = null, +) : Serializable + /** * @property action Git action: add, delete, etc (read-only) * @property conflict When true, changes to the local file conflict with the remote repository (read-only) @@ -3679,6 +3729,13 @@ data class GitStatus( * @property last_updated_by_user_id ID of the user who last updated the question (read-only) * @property created_at Time when the question was created (read-only) * @property last_updated_at Time when the question was last updated (read-only) + * @property explore The explore name of the golden query (read-only) + * @property model The LookML model name of the golden query (read-only) + * @property fields Fields of the associated Looker Query (read-only) + * @property filters Filters of the associated Looker Query (read-only) + * @property sorts Sorts of the associated Looker Query (read-only) + * @property limit Limit of the associated Looker Query (read-only) + * @property client_id Client ID of the associated Looker Query (read-only) */ data class GoldenQuery( var can: Map? = null, @@ -3691,6 +3748,13 @@ data class GoldenQuery( var last_updated_by_user_id: Long? = null, var created_at: Date? = null, var last_updated_at: Date? = null, + var explore: String? = null, + var model: String? = null, + var fields: Array? = null, + var filters: Map? = null, + var sorts: Array? = null, + var limit: String? = null, + var client_id: String? = null, ) : Serializable /** @@ -4743,6 +4807,7 @@ data class LookmlModelExploreError( /** * @property align The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: "left", "right". (read-only) * @property available_custom_timeframes An array of custom timeframes available for this field for filtering, if applicable. (read-only) + * @property timeframe_labels A map of timeframe keys to their localized labels. (read-only) * @property can_filter Whether it's possible to filter on this field. (read-only) * @property category Field category Valid values are: "parameter", "filter", "measure", "dimension". (read-only) * @property default_filter_value The default value that this field uses when filtering. Null if there is no default value. (read-only) @@ -4808,6 +4873,7 @@ data class LookmlModelExploreError( data class LookmlModelExploreField( var align: Align? = null, var available_custom_timeframes: Array? = null, + var timeframe_labels: Map? = null, var can_filter: Boolean? = null, var category: Category? = null, var default_filter_value: String? = null, @@ -6641,6 +6707,7 @@ data class SamlUserAttributeWrite( * @property scheduled_plan_destination Scheduled plan destinations * @property run_once Whether the plan in question should only be run once (usually for testing) * @property include_links Whether links back to Looker should be included in this ScheduledPlan + * @property include_dashboard_summary Whether to include a dashboard summary in the scheduled email * @property custom_url_base Custom url domain for the scheduled entity * @property custom_url_params Custom url path and parameters for the scheduled entity * @property custom_url_label Custom url label for the scheduled entity @@ -6683,6 +6750,7 @@ data class ScheduledPlan( var scheduled_plan_destination: Array? = null, var run_once: Boolean? = null, var include_links: Boolean? = null, + var include_dashboard_summary: Boolean? = null, var custom_url_base: String? = null, var custom_url_params: String? = null, var custom_url_label: String? = null, @@ -6843,11 +6911,13 @@ enum class SecretType : Serializable { * @property upload_type Type of the upload (e.g. 'csv', 'sheet') * @property drive_url Drive URL * @property owner_id User ID of the uploaded data owner (read-only) + * @property canvas_guid GUID of the visual canvas (read-only) */ data class SelfServiceModelUploadData( var upload_type: String? = null, var drive_url: String? = null, var owner_id: String? = null, + var canvas_guid: String? = null, ) : Serializable /** @@ -6955,9 +7025,10 @@ data class SessionConfig( * @property managed_certificate_uri Array of URIs pointing to the location of a root certificate in Secret Manager * @property content_certification_documentation_link Link to content certification documentation. * @property revoke_certification_on_edits Allow content certification to be revoked on edits. + * @property automated_mfa_enabled Automatically enable Multi-Factor Authentication for users. * @property is_content_certification_enabled Allow content certification. * @property auto_certify_lookml_content Allow auto certification of lookml content. - * @property ca_agent_observability Toggle CA agent observability + * @property ca_agent_observability Toggle Conversational Analytics Agent Token usage * @property mcp_tools */ data class Setting( @@ -6988,6 +7059,7 @@ data class Setting( var managed_certificate_uri: Array? = null, var content_certification_documentation_link: String? = null, var revoke_certification_on_edits: Boolean? = null, + var automated_mfa_enabled: Boolean? = null, var is_content_certification_enabled: Boolean? = null, var auto_certify_lookml_content: Boolean? = null, var ca_agent_observability: Boolean? = null, @@ -8769,9 +8841,19 @@ data class WriteGitBranch( var ref: String? = null, ) : Serializable +/** + * Dynamic writeable type for GitDiagnosticReport removes: + * can, id, project_id, user_id, state, status, created_at, updated_at, issues + * + * @property project_type Project structure type. + */ +data class WriteGitDiagnosticReport( + var project_type: String? = null, +) : Serializable + /** * Dynamic writeable type for GoldenQuery removes: - * can, id, query_id, created_by_user_id, last_updated_by_user_id, created_at, last_updated_at + * can, id, query_id, created_by_user_id, last_updated_by_user_id, created_at, last_updated_at, explore, model, fields, filters, sorts, limit, client_id * * @property questions Variations of the golden question text * @property answer The Explore URL representing the answer to the question @@ -9550,6 +9632,7 @@ data class WriteSamlConfig( * @property scheduled_plan_destination Scheduled plan destinations * @property run_once Whether the plan in question should only be run once (usually for testing) * @property include_links Whether links back to Looker should be included in this ScheduledPlan + * @property include_dashboard_summary Whether to include a dashboard summary in the scheduled email * @property custom_url_base Custom url domain for the scheduled entity * @property custom_url_params Custom url path and parameters for the scheduled entity * @property custom_url_label Custom url label for the scheduled entity @@ -9584,6 +9667,7 @@ data class WriteScheduledPlan( var scheduled_plan_destination: Array? = null, var run_once: Boolean? = null, var include_links: Boolean? = null, + var include_dashboard_summary: Boolean? = null, var custom_url_base: String? = null, var custom_url_params: String? = null, var custom_url_label: String? = null, @@ -9657,9 +9741,10 @@ data class WriteSessionConfig( * @property managed_certificate_uri Array of URIs pointing to the location of a root certificate in Secret Manager * @property content_certification_documentation_link Link to content certification documentation. * @property revoke_certification_on_edits Allow content certification to be revoked on edits. + * @property automated_mfa_enabled Automatically enable Multi-Factor Authentication for users. * @property is_content_certification_enabled Allow content certification. * @property auto_certify_lookml_content Allow auto certification of lookml content. - * @property ca_agent_observability Toggle CA agent observability + * @property ca_agent_observability Toggle Conversational Analytics Agent Token usage * @property mcp_tools Dynamic writeable type for McpTools */ data class WriteSetting( @@ -9685,6 +9770,7 @@ data class WriteSetting( var managed_certificate_uri: Array? = null, var content_certification_documentation_link: String? = null, var revoke_certification_on_edits: Boolean? = null, + var automated_mfa_enabled: Boolean? = null, var is_content_certification_enabled: Boolean? = null, var auto_certify_lookml_content: Boolean? = null, var ca_agent_observability: Boolean? = null, diff --git a/kotlin/src/main/com/looker/sdk/4.0/streams.kt b/kotlin/src/main/com/looker/sdk/4.0/streams.kt index 75192dd38..f1eebb866 100644 --- a/kotlin/src/main/com/looker/sdk/4.0/streams.kt +++ b/kotlin/src/main/com/looker/sdk/4.0/streams.kt @@ -25,7 +25,7 @@ */ /** - * 512 API methods + * 518 API methods */ // NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0 @@ -2514,6 +2514,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -2559,6 +2560,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -7868,6 +7870,58 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { ) } + /** + * ### Initiate Git Diagnosis Suite + * + * @param {String} project_id Looker Project ID + * @param {WriteGitDiagnosticReport} body + * + * POST /projects/{project_id}/git_diagnostic_report -> ByteArray + */ + fun create_git_diagnostic_report( + project_id: String, + body: WriteGitDiagnosticReport, + ): SDKResponse { + val path_project_id = encodeParam(project_id) + return this.post("/projects/${path_project_id}/git_diagnostic_report", mapOf(), body) + } + + /** + * ### Retrieve Live Git Diagnostic Suite Execution Status + * + * @param {String} project_id Looker Project ID + * @param {String} report_id Report ID + * + * GET /projects/{project_id}/git_diagnostic_report/{report_id} -> ByteArray + */ + fun get_git_diagnostic_report( + project_id: String, + report_id: String, + ): SDKResponse { + val path_project_id = encodeParam(project_id) + val path_report_id = encodeParam(report_id) + return this.get("/projects/${path_project_id}/git_diagnostic_report/${path_report_id}", mapOf()) + } + + /** + * ### Repair Git Configuration Issues + * + * @param {String} project_id Looker Project ID + * @param {String} report_id Report ID + * @param {WriteGitDiagnosticReport} body + * + * POST /projects/{project_id}/git_diagnostic_report/{report_id}/repair -> ByteArray + */ + fun repair_git_diagnostic_report( + project_id: String, + report_id: String, + body: WriteGitDiagnosticReport, + ): SDKResponse { + val path_project_id = encodeParam(project_id) + val path_report_id = encodeParam(report_id) + return this.post("/projects/${path_project_id}/git_diagnostic_report/${path_report_id}/repair", mapOf(), body) + } + /** * ### Configure Repository Credential for a remote dependency * @@ -9976,6 +10030,20 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { ) } + /** + * ### Get Generated LookML for a Self Service Model + * + * @param {String} model_name Name of self service model + * + * GET /self_service_models/{model_name}/lookml -> ByteArray + */ + fun get_self_service_model_lookml( + model_name: String, + ): SDKResponse { + val path_model_name = encodeParam(model_name) + return this.get("/self_service_models/${path_model_name}/lookml", mapOf()) + } + /** * ### Update certification for a Self Service Explore * @@ -10244,6 +10312,8 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { /** * ### Get the default theme * + * This endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead. + * * Returns the active theme object set as the default. * * The **default** theme name can be set in the UI on the Admin|Theme UI page @@ -10254,7 +10324,9 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * * GET /themes/default -> ByteArray */ - @JvmOverloads fun default_theme( + @Deprecated(message = "Deprecated method") + @JvmOverloads + fun default_theme( ts: Date? = null, ): SDKResponse { return this.get( @@ -10266,6 +10338,8 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { /** * ### Set the global default theme by theme name * + * This endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead. + * * Only Admin users can call this function. * * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. @@ -10280,6 +10354,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * * PUT /themes/default -> ByteArray */ + @Deprecated(message = "Deprecated method") fun set_default_theme( name: String, ): SDKResponse { @@ -10289,6 +10364,66 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { ) } + /** + * ### Get the default theme + * + * Returns the active theme object set as the default. + * + * The **default** theme name can be set in the UI on the Admin|Theme UI page + * + * The optional `ts` parameter can specify a different timestamp than "now." If specified, it returns the default theme at the time indicated. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * @param {String} theme_type Theme type. + * @param {Date} ts Timestamp representing the target datetime for the active period. Defaults to 'now' + * + * GET /themes/default_theme -> ByteArray + */ + @JvmOverloads fun default_theme_by_type( + theme_type: String, + ts: Date? = null, + ): SDKResponse { + return this.get( + "/themes/default_theme", + mapOf( + "ts" to ts, + "theme_type" to theme_type, + ), + ) + } + + /** + * ### Set the global default theme by theme name + * + * Only Admin users can call this function. + * + * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. + * + * [Create Theme](#!/Theme/create) has detailed information on rules for default and active themes + * + * Returns the new specified default theme object. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * @param {String} name Name of theme to set as default + * @param {String} theme_type Theme type. + * + * PUT /themes/default_theme -> ByteArray + */ + fun set_default_theme_by_type( + name: String, + theme_type: String, + ): SDKResponse { + return this.put( + "/themes/default_theme", + mapOf( + "name" to name, + "theme_type" to theme_type, + ), + ) + } + /** * ### Get active themes * @@ -10302,6 +10437,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { * * @param {String} name Name of theme * @param {Date} ts Timestamp representing the target datetime for the active period. Defaults to 'now' + * @param {String} theme_type Theme type. * @param {String} fields Requested fields. * * GET /themes/active -> ByteArray @@ -10309,6 +10445,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { @JvmOverloads fun active_themes( name: String? = null, ts: Date? = null, + theme_type: String? = null, fields: String? = null, ): SDKResponse { return this.get( @@ -10316,6 +10453,7 @@ class LookerSDKStream(authSession: AuthSession) : APIMethods(authSession) { mapOf( "name" to name, "ts" to ts, + "theme_type" to theme_type, "fields" to fields, ), ) diff --git a/kotlin/src/main/com/looker/sdk/Constants.kt b/kotlin/src/main/com/looker/sdk/Constants.kt index 21ec78e85..c4c714d3a 100644 --- a/kotlin/src/main/com/looker/sdk/Constants.kt +++ b/kotlin/src/main/com/looker/sdk/Constants.kt @@ -28,7 +28,7 @@ package com.looker.sdk const val ENVIRONMENT_PREFIX = "LOOKERSDK" const val SDK_TAG = "KT-SDK" -const val LOOKER_VERSION = "26.10" +const val LOOKER_VERSION = "26.12" const val API_VERSION = "4.0" const val AGENT_TAG = "$SDK_TAG $LOOKER_VERSION" const val LOOKER_APPID = "x-looker-appid" diff --git a/packages/sdk-codegen/src/go.gen.spec.ts b/packages/sdk-codegen/src/go.gen.spec.ts index 91fa9914b..79c60fe6f 100644 --- a/packages/sdk-codegen/src/go.gen.spec.ts +++ b/packages/sdk-codegen/src/go.gen.spec.ts @@ -129,4 +129,13 @@ type HyphenType struct { expect(actual).toEqual(expected); }); }); + + describe('methods', () => { + it('handles optional date-time parameters as pointers', () => { + const method = apiTestModel.methods.theme_or_default; + expect(method).toBeDefined(); + const actual = gen.declareMethod(indent, method); + expect(actual).toContain('ts *time.Time'); + }); + }); }); diff --git a/packages/sdk-codegen/src/go.gen.ts b/packages/sdk-codegen/src/go.gen.ts index 492e644b7..2b93aa13b 100644 --- a/packages/sdk-codegen/src/go.gen.ts +++ b/packages/sdk-codegen/src/go.gen.ts @@ -444,8 +444,8 @@ ${goImport} any: { default: mt, name: 'interface{}' }, boolean: { default: mt, name: 'bool' }, byte: { default: mt, name: 'byte' }, - date: { default: mt, name: 'time.Time' }, - datetime: { default: mt, name: 'time.Time' }, + date: { default: '', name: 'time.Time' }, + datetime: { default: '', name: 'time.Time' }, double: { default: mt, name: 'float64' }, float: { default: mt, name: 'float32' }, int32: { default: mt, name: 'int32' }, diff --git a/packages/sdk/src/4.0/funcs.ts b/packages/sdk/src/4.0/funcs.ts index f0bdd0356..91ec3b3bb 100644 --- a/packages/sdk/src/4.0/funcs.ts +++ b/packages/sdk/src/4.0/funcs.ts @@ -25,7 +25,7 @@ */ /** - * 512 API methods + * 518 API methods */ import type { @@ -132,6 +132,7 @@ import type { IGitBranch, IGitConnectionTest, IGitConnectionTestResult, + IGitDiagnosticReport, IGoldenQuery, IGroup, IGroupHierarchy, @@ -327,6 +328,7 @@ import type { IWriteEmbedSecret, IWriteExternalOauthApplication, IWriteGitBranch, + IWriteGitDiagnosticReport, IWriteGoldenQuery, IWriteGroup, IWriteIntegration, @@ -3765,6 +3767,7 @@ export const mobile_settings = async ( * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -3817,6 +3820,7 @@ export const get_setting = async ( * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -10320,6 +10324,88 @@ export const tag_ref = async ( ); }; +/** + * ### Initiate Git Diagnosis Suite + * + * POST /projects/{project_id}/git_diagnostic_report -> IGitDiagnosticReport + * + * @param sdk IAPIMethods implementation + * @param project_id Looker Project ID + * @param body Partial + * @param options one-time API call overrides + * + */ +export const create_git_diagnostic_report = async ( + sdk: IAPIMethods, + project_id: string, + body: Partial, + options?: Partial +): Promise> => { + project_id = encodeParam(project_id); + return sdk.post( + `/projects/${project_id}/git_diagnostic_report`, + null, + body, + options + ); +}; + +/** + * ### Retrieve Live Git Diagnostic Suite Execution Status + * + * GET /projects/{project_id}/git_diagnostic_report/{report_id} -> IGitDiagnosticReport + * + * @param sdk IAPIMethods implementation + * @param project_id Looker Project ID + * @param report_id Report ID + * @param options one-time API call overrides + * + */ +export const get_git_diagnostic_report = async ( + sdk: IAPIMethods, + project_id: string, + report_id: string, + options?: Partial +): Promise> => { + project_id = encodeParam(project_id); + report_id = encodeParam(report_id); + return sdk.get( + `/projects/${project_id}/git_diagnostic_report/${report_id}`, + null, + null, + options + ); +}; + +/** + * ### Repair Git Configuration Issues + * + * POST /projects/{project_id}/git_diagnostic_report/{report_id}/repair -> IGitDiagnosticReport + * + * @param sdk IAPIMethods implementation + * @param project_id Looker Project ID + * @param report_id Report ID + * @param body Partial + * @param options one-time API call overrides + * + */ +export const repair_git_diagnostic_report = async ( + sdk: IAPIMethods, + project_id: string, + report_id: string, + body: Partial, + options?: Partial +): Promise> => { + project_id = encodeParam(project_id); + report_id = encodeParam(report_id); + return sdk.post( + `/projects/${project_id}/git_diagnostic_report/${report_id}/repair`, + null, + body, + options + ); +}; + /** * ### Configure Repository Credential for a remote dependency * @@ -12695,6 +12781,30 @@ export const get_self_service_model_allowed_connections = async ( ); }; +/** + * ### Get Generated LookML for a Self Service Model + * + * GET /self_service_models/{model_name}/lookml -> string + * + * @param sdk IAPIMethods implementation + * @param model_name Name of self service model + * @param options one-time API call overrides + * + */ +export const get_self_service_model_lookml = async ( + sdk: IAPIMethods, + model_name: string, + options?: Partial +): Promise> => { + model_name = encodeParam(model_name); + return sdk.get( + `/self_service_models/${model_name}/lookml`, + null, + null, + options + ); +}; + /** * ### Update certification for a Self Service Explore * @@ -13017,6 +13127,8 @@ export const search_themes = async ( /** * ### Get the default theme * + * This endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead. + * * Returns the active theme object set as the default. * * The **default** theme name can be set in the UI on the Admin|Theme UI page @@ -13025,6 +13137,8 @@ export const search_themes = async ( * * GET /themes/default -> ITheme * + * @deprecated + * * @param sdk IAPIMethods implementation * @param ts Timestamp representing the target datetime for the active period. Defaults to 'now' * @param options one-time API call overrides @@ -13041,6 +13155,8 @@ export const default_theme = async ( /** * ### Set the global default theme by theme name * + * This endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead. + * * Only Admin users can call this function. * * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. @@ -13053,6 +13169,8 @@ export const default_theme = async ( * * PUT /themes/default -> ITheme * + * @deprecated + * * @param sdk IAPIMethods implementation * @param name Name of theme to set as default * @param options one-time API call overrides @@ -13071,6 +13189,74 @@ export const set_default_theme = async ( ); }; +/** + * ### Get the default theme + * + * Returns the active theme object set as the default. + * + * The **default** theme name can be set in the UI on the Admin|Theme UI page + * + * The optional `ts` parameter can specify a different timestamp than "now." If specified, it returns the default theme at the time indicated. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * GET /themes/default_theme -> ITheme + * + * @param sdk IAPIMethods implementation + * @param theme_type Theme type. + * @param ts Timestamp representing the target datetime for the active period. Defaults to 'now' + * @param options one-time API call overrides + * + */ +export const default_theme_by_type = async ( + sdk: IAPIMethods, + theme_type: string, + ts?: Date, + options?: Partial +): Promise> => { + return sdk.get( + '/themes/default_theme', + { ts, theme_type }, + null, + options + ); +}; + +/** + * ### Set the global default theme by theme name + * + * Only Admin users can call this function. + * + * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. + * + * [Create Theme](#!/Theme/create) has detailed information on rules for default and active themes + * + * Returns the new specified default theme object. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * PUT /themes/default_theme -> ITheme + * + * @param sdk IAPIMethods implementation + * @param name Name of theme to set as default + * @param theme_type Theme type. + * @param options one-time API call overrides + * + */ +export const set_default_theme_by_type = async ( + sdk: IAPIMethods, + name: string, + theme_type: string, + options?: Partial +): Promise> => { + return sdk.put( + '/themes/default_theme', + { name, theme_type }, + null, + options + ); +}; + /** * ### Get active themes * @@ -13093,10 +13279,15 @@ export const active_themes = async ( sdk: IAPIMethods, request: IRequestActiveThemes, options?: Partial -): Promise> => { - return sdk.get( +): Promise> => { + return sdk.get( '/themes/active', - { name: request.name, ts: request.ts, fields: request.fields }, + { + name: request.name, + ts: request.ts, + theme_type: request.theme_type, + fields: request.fields, + }, null, options ); diff --git a/packages/sdk/src/4.0/methods.ts b/packages/sdk/src/4.0/methods.ts index 0f71a2336..aeb084fb5 100644 --- a/packages/sdk/src/4.0/methods.ts +++ b/packages/sdk/src/4.0/methods.ts @@ -25,7 +25,7 @@ */ /** - * 512 API methods + * 518 API methods */ import type { @@ -130,6 +130,7 @@ import type { IGitBranch, IGitConnectionTest, IGitConnectionTestResult, + IGitDiagnosticReport, IGoldenQuery, IGroup, IGroupHierarchy, @@ -325,6 +326,7 @@ import type { IWriteEmbedSecret, IWriteExternalOauthApplication, IWriteGitBranch, + IWriteGitDiagnosticReport, IWriteGoldenQuery, IWriteGroup, IWriteIntegration, @@ -3547,6 +3549,7 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -3597,6 +3600,7 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -9695,6 +9699,82 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { ); } + /** + * ### Initiate Git Diagnosis Suite + * + * POST /projects/{project_id}/git_diagnostic_report -> IGitDiagnosticReport + * + * @param project_id Looker Project ID + * @param body Partial + * @param options one-time API call overrides + * + */ + async create_git_diagnostic_report( + project_id: string, + body: Partial, + options?: Partial + ): Promise> { + project_id = encodeParam(project_id); + return this.post( + `/projects/${project_id}/git_diagnostic_report`, + null, + body, + options + ); + } + + /** + * ### Retrieve Live Git Diagnostic Suite Execution Status + * + * GET /projects/{project_id}/git_diagnostic_report/{report_id} -> IGitDiagnosticReport + * + * @param project_id Looker Project ID + * @param report_id Report ID + * @param options one-time API call overrides + * + */ + async get_git_diagnostic_report( + project_id: string, + report_id: string, + options?: Partial + ): Promise> { + project_id = encodeParam(project_id); + report_id = encodeParam(report_id); + return this.get( + `/projects/${project_id}/git_diagnostic_report/${report_id}`, + null, + null, + options + ); + } + + /** + * ### Repair Git Configuration Issues + * + * POST /projects/{project_id}/git_diagnostic_report/{report_id}/repair -> IGitDiagnosticReport + * + * @param project_id Looker Project ID + * @param report_id Report ID + * @param body Partial + * @param options one-time API call overrides + * + */ + async repair_git_diagnostic_report( + project_id: string, + report_id: string, + body: Partial, + options?: Partial + ): Promise> { + project_id = encodeParam(project_id); + report_id = encodeParam(report_id); + return this.post( + `/projects/${project_id}/git_diagnostic_report/${report_id}/repair`, + null, + body, + options + ); + } + /** * ### Configure Repository Credential for a remote dependency * @@ -11952,6 +12032,28 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { ); } + /** + * ### Get Generated LookML for a Self Service Model + * + * GET /self_service_models/{model_name}/lookml -> string + * + * @param model_name Name of self service model + * @param options one-time API call overrides + * + */ + async get_self_service_model_lookml( + model_name: string, + options?: Partial + ): Promise> { + model_name = encodeParam(model_name); + return this.get( + `/self_service_models/${model_name}/lookml`, + null, + null, + options + ); + } + /** * ### Update certification for a Self Service Explore * @@ -12256,6 +12358,8 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { /** * ### Get the default theme * + * This endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead. + * * Returns the active theme object set as the default. * * The **default** theme name can be set in the UI on the Admin|Theme UI page @@ -12264,6 +12368,8 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * * GET /themes/default -> ITheme * + * @deprecated + * * @param ts Timestamp representing the target datetime for the active period. Defaults to 'now' * @param options one-time API call overrides * @@ -12278,6 +12384,8 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { /** * ### Set the global default theme by theme name * + * This endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead. + * * Only Admin users can call this function. * * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. @@ -12290,6 +12398,8 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { * * PUT /themes/default -> ITheme * + * @deprecated + * * @param name Name of theme to set as default * @param options one-time API call overrides * @@ -12306,6 +12416,70 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { ); } + /** + * ### Get the default theme + * + * Returns the active theme object set as the default. + * + * The **default** theme name can be set in the UI on the Admin|Theme UI page + * + * The optional `ts` parameter can specify a different timestamp than "now." If specified, it returns the default theme at the time indicated. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * GET /themes/default_theme -> ITheme + * + * @param theme_type Theme type. + * @param ts Timestamp representing the target datetime for the active period. Defaults to 'now' + * @param options one-time API call overrides + * + */ + async default_theme_by_type( + theme_type: string, + ts?: Date, + options?: Partial + ): Promise> { + return this.get( + '/themes/default_theme', + { ts, theme_type }, + null, + options + ); + } + + /** + * ### Set the global default theme by theme name + * + * Only Admin users can call this function. + * + * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. + * + * [Create Theme](#!/Theme/create) has detailed information on rules for default and active themes + * + * Returns the new specified default theme object. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * PUT /themes/default_theme -> ITheme + * + * @param name Name of theme to set as default + * @param theme_type Theme type. + * @param options one-time API call overrides + * + */ + async set_default_theme_by_type( + name: string, + theme_type: string, + options?: Partial + ): Promise> { + return this.put( + '/themes/default_theme', + { name, theme_type }, + null, + options + ); + } + /** * ### Get active themes * @@ -12326,10 +12500,15 @@ export class Looker40SDK extends APIMethods implements ILooker40SDK { async active_themes( request: IRequestActiveThemes, options?: Partial - ): Promise> { - return this.get( + ): Promise> { + return this.get( '/themes/active', - { name: request.name, ts: request.ts, fields: request.fields }, + { + name: request.name, + ts: request.ts, + theme_type: request.theme_type, + fields: request.fields, + }, null, options ); diff --git a/packages/sdk/src/4.0/methodsInterface.ts b/packages/sdk/src/4.0/methodsInterface.ts index 44d87efe3..1efbea712 100644 --- a/packages/sdk/src/4.0/methodsInterface.ts +++ b/packages/sdk/src/4.0/methodsInterface.ts @@ -25,7 +25,7 @@ */ /** - * 512 API methods + * 518 API methods */ import type { @@ -127,6 +127,7 @@ import type { IGitBranch, IGitConnectionTest, IGitConnectionTestResult, + IGitDiagnosticReport, IGoldenQuery, IGroup, IGroupHierarchy, @@ -322,6 +323,7 @@ import type { IWriteEmbedSecret, IWriteExternalOauthApplication, IWriteGitBranch, + IWriteGitDiagnosticReport, IWriteGoldenQuery, IWriteGroup, IWriteIntegration, @@ -2653,6 +2655,7 @@ export interface ILooker40SDK extends IAPIMethods { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -2696,6 +2699,7 @@ export interface ILooker40SDK extends IAPIMethods { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -6834,6 +6838,56 @@ export interface ILooker40SDK extends IAPIMethods { options?: Partial ): Promise>; + /** + * ### Initiate Git Diagnosis Suite + * + * POST /projects/{project_id}/git_diagnostic_report -> IGitDiagnosticReport + * + * @param project_id Looker Project ID + * @param body Partial + * @param options one-time API call overrides + * + */ + create_git_diagnostic_report( + project_id: string, + body: Partial, + options?: Partial + ): Promise>; + + /** + * ### Retrieve Live Git Diagnostic Suite Execution Status + * + * GET /projects/{project_id}/git_diagnostic_report/{report_id} -> IGitDiagnosticReport + * + * @param project_id Looker Project ID + * @param report_id Report ID + * @param options one-time API call overrides + * + */ + get_git_diagnostic_report( + project_id: string, + report_id: string, + options?: Partial + ): Promise>; + + /** + * ### Repair Git Configuration Issues + * + * POST /projects/{project_id}/git_diagnostic_report/{report_id}/repair -> IGitDiagnosticReport + * + * @param project_id Looker Project ID + * @param report_id Report ID + * @param body Partial + * @param options one-time API call overrides + * + */ + repair_git_diagnostic_report( + project_id: string, + report_id: string, + body: Partial, + options?: Partial + ): Promise>; + /** * ### Configure Repository Credential for a remote dependency * @@ -8464,6 +8518,20 @@ export interface ILooker40SDK extends IAPIMethods { options?: Partial ): Promise>; + /** + * ### Get Generated LookML for a Self Service Model + * + * GET /self_service_models/{model_name}/lookml -> string + * + * @param model_name Name of self service model + * @param options one-time API call overrides + * + */ + get_self_service_model_lookml( + model_name: string, + options?: Partial + ): Promise>; + /** * ### Update certification for a Self Service Explore * @@ -8702,6 +8770,8 @@ export interface ILooker40SDK extends IAPIMethods { /** * ### Get the default theme * + * This endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead. + * * Returns the active theme object set as the default. * * The **default** theme name can be set in the UI on the Admin|Theme UI page @@ -8710,6 +8780,8 @@ export interface ILooker40SDK extends IAPIMethods { * * GET /themes/default -> ITheme * + * @deprecated + * * @param ts Timestamp representing the target datetime for the active period. Defaults to 'now' * @param options one-time API call overrides * @@ -8722,6 +8794,8 @@ export interface ILooker40SDK extends IAPIMethods { /** * ### Set the global default theme by theme name * + * This endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead. + * * Only Admin users can call this function. * * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. @@ -8734,6 +8808,8 @@ export interface ILooker40SDK extends IAPIMethods { * * PUT /themes/default -> ITheme * + * @deprecated + * * @param name Name of theme to set as default * @param options one-time API call overrides * @@ -8743,6 +8819,56 @@ export interface ILooker40SDK extends IAPIMethods { options?: Partial ): Promise>; + /** + * ### Get the default theme + * + * Returns the active theme object set as the default. + * + * The **default** theme name can be set in the UI on the Admin|Theme UI page + * + * The optional `ts` parameter can specify a different timestamp than "now." If specified, it returns the default theme at the time indicated. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * GET /themes/default_theme -> ITheme + * + * @param theme_type Theme type. + * @param ts Timestamp representing the target datetime for the active period. Defaults to 'now' + * @param options one-time API call overrides + * + */ + default_theme_by_type( + theme_type: string, + ts?: Date, + options?: Partial + ): Promise>; + + /** + * ### Set the global default theme by theme name + * + * Only Admin users can call this function. + * + * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. + * + * [Create Theme](#!/Theme/create) has detailed information on rules for default and active themes + * + * Returns the new specified default theme object. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * PUT /themes/default_theme -> ITheme + * + * @param name Name of theme to set as default + * @param theme_type Theme type. + * @param options one-time API call overrides + * + */ + set_default_theme_by_type( + name: string, + theme_type: string, + options?: Partial + ): Promise>; + /** * ### Get active themes * @@ -8763,7 +8889,7 @@ export interface ILooker40SDK extends IAPIMethods { active_themes( request: IRequestActiveThemes, options?: Partial - ): Promise>; + ): Promise>; /** * ### Get the named theme if it's active. Otherwise, return the default theme diff --git a/packages/sdk/src/4.0/models.ts b/packages/sdk/src/4.0/models.ts index be6eeb089..f51927ab7 100644 --- a/packages/sdk/src/4.0/models.ts +++ b/packages/sdk/src/4.0/models.ts @@ -25,7 +25,7 @@ */ /** - * 534 API models: 361 Spec, 76 Request, 71 Write, 26 Enum + * 537 API models: 363 Spec, 76 Request, 72 Write, 26 Enum */ import type { IDictionary, DelimArray } from '@looker/sdk-rtl'; @@ -5696,6 +5696,92 @@ export interface IGitConnectionTestResult { status?: string | null; } +export interface IGitDiagnosticIssue { + /** + * Operations the current user is able to perform on this object (read-only) + */ + can?: IDictionary; + /** + * Unique ID of the diagnostic issue. (read-only) + */ + id?: string; + /** + * Parent diagnostic report ID. (read-only) + */ + report_id?: string | null; + /** + * Target Looker Project ID. (read-only) + */ + project_id?: string | null; + /** + * Environment scope (developer/production). (read-only) + */ + project_type?: string | null; + /** + * Git diagnostic issue category. (read-only) + */ + issue_type?: string | null; + /** + * Version schema. (read-only) + */ + issue_version?: string | null; + /** + * Current execution status. (read-only) + */ + state?: string | null; + /** + * Creation timestamp. (read-only) + */ + created_at?: Date | null; + /** + * Last update timestamp. (read-only) + */ + updated_at?: Date | null; +} + +export interface IGitDiagnosticReport { + /** + * Operations the current user is able to perform on this object (read-only) + */ + can?: IDictionary; + /** + * Unique ID of the git diagnostic report. (read-only) + */ + id?: string; + /** + * Target Looker Project ID. (read-only) + */ + project_id?: string | null; + /** + * ID of the user initiating the diagnosis. (read-only) + */ + user_id?: string | null; + /** + * Raw lifecycle state. (read-only) + */ + state?: string | null; + /** + * Status derived from state. (read-only) + */ + status?: string | null; + /** + * Creation time. (read-only) + */ + created_at?: Date | null; + /** + * Update time. (read-only) + */ + updated_at?: Date | null; + /** + * Project structure type. + */ + project_type?: string | null; + /** + * Diagnostic issues associated with this report. (read-only) + */ + issues?: IGitDiagnosticIssue[] | null; +} + export interface IGitStatus { /** * Git action: add, delete, etc (read-only) @@ -5756,6 +5842,34 @@ export interface IGoldenQuery { * Time when the question was last updated (read-only) */ last_updated_at?: Date | null; + /** + * The explore name of the golden query (read-only) + */ + explore?: string | null; + /** + * The LookML model name of the golden query (read-only) + */ + model?: string | null; + /** + * Fields of the associated Looker Query (read-only) + */ + fields?: string[] | null; + /** + * Filters of the associated Looker Query (read-only) + */ + filters?: IDictionary | null; + /** + * Sorts of the associated Looker Query (read-only) + */ + sorts?: string[] | null; + /** + * Limit of the associated Looker Query (read-only) + */ + limit?: string | null; + /** + * Client ID of the associated Looker Query (read-only) + */ + client_id?: string | null; } export interface IGroup { @@ -7452,6 +7566,10 @@ export interface ILookmlModelExploreField { * An array of custom timeframes available for this field for filtering, if applicable. (read-only) */ available_custom_timeframes?: string[] | null; + /** + * A map of timeframe keys to their localized labels. (read-only) + */ + timeframe_labels?: IDictionary | null; /** * Whether it's possible to filter on this field. (read-only) */ @@ -9802,6 +9920,10 @@ export interface IRequestActiveThemes { * Timestamp representing the target datetime for the active period. Defaults to 'now' */ ts?: Date | null; + /** + * Theme type. + */ + theme_type?: string | null; /** * Requested fields. */ @@ -13119,6 +13241,10 @@ export interface IScheduledPlan { * Whether links back to Looker should be included in this ScheduledPlan */ include_links?: boolean; + /** + * Whether to include a dashboard summary in the scheduled email + */ + include_dashboard_summary?: boolean; /** * Custom url domain for the scheduled entity */ @@ -13404,6 +13530,10 @@ export interface ISelfServiceModelUploadData { * User ID of the uploaded data owner (read-only) */ owner_id?: string | null; + /** + * GUID of the visual canvas (read-only) + */ + canvas_guid?: string | null; } export interface IServiceAccount { @@ -13633,6 +13763,10 @@ export interface ISetting { * Allow content certification to be revoked on edits. */ revoke_certification_on_edits?: boolean; + /** + * Automatically enable Multi-Factor Authentication for users. + */ + automated_mfa_enabled?: boolean; /** * Allow content certification. */ @@ -13642,7 +13776,7 @@ export interface ISetting { */ auto_certify_lookml_content?: boolean; /** - * Toggle CA agent observability + * Toggle Conversational Analytics Agent Token usage */ ca_agent_observability?: boolean; mcp_tools?: IMcpTools; @@ -16409,9 +16543,20 @@ export interface IWriteGitBranch { ref?: string | null; } +/** + * Dynamic writeable type for GitDiagnosticReport removes: + * can, id, project_id, user_id, state, status, created_at, updated_at, issues + */ +export interface IWriteGitDiagnosticReport { + /** + * Project structure type. + */ + project_type?: string | null; +} + /** * Dynamic writeable type for GoldenQuery removes: - * can, id, query_id, created_by_user_id, last_updated_by_user_id, created_at, last_updated_at + * can, id, query_id, created_by_user_id, last_updated_by_user_id, created_at, last_updated_at, explore, model, fields, filters, sorts, limit, client_id */ export interface IWriteGoldenQuery { /** @@ -17708,6 +17853,10 @@ export interface IWriteScheduledPlan { * Whether links back to Looker should be included in this ScheduledPlan */ include_links?: boolean; + /** + * Whether to include a dashboard summary in the scheduled email + */ + include_dashboard_summary?: boolean; /** * Custom url domain for the scheduled entity */ @@ -17893,6 +18042,10 @@ export interface IWriteSetting { * Allow content certification to be revoked on edits. */ revoke_certification_on_edits?: boolean; + /** + * Automatically enable Multi-Factor Authentication for users. + */ + automated_mfa_enabled?: boolean; /** * Allow content certification. */ @@ -17902,7 +18055,7 @@ export interface IWriteSetting { */ auto_certify_lookml_content?: boolean; /** - * Toggle CA agent observability + * Toggle Conversational Analytics Agent Token usage */ ca_agent_observability?: boolean; /** diff --git a/packages/sdk/src/4.0/streams.ts b/packages/sdk/src/4.0/streams.ts index 6a39545ce..5a1725196 100644 --- a/packages/sdk/src/4.0/streams.ts +++ b/packages/sdk/src/4.0/streams.ts @@ -25,7 +25,7 @@ */ /** - * 512 API methods + * 518 API methods */ import type { @@ -128,6 +128,7 @@ import type { IGitBranch, IGitConnectionTest, IGitConnectionTestResult, + IGitDiagnosticReport, IGoldenQuery, IGroup, IGroupHierarchy, @@ -323,6 +324,7 @@ import type { IWriteEmbedSecret, IWriteExternalOauthApplication, IWriteGitBranch, + IWriteGitDiagnosticReport, IWriteGoldenQuery, IWriteGroup, IWriteIntegration, @@ -4039,6 +4041,7 @@ export class Looker40SDKStream extends APIMethods { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -4093,6 +4096,7 @@ export class Looker40SDKStream extends APIMethods { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -11078,6 +11082,94 @@ export class Looker40SDKStream extends APIMethods { ); } + /** + * ### Initiate Git Diagnosis Suite + * + * POST /projects/{project_id}/git_diagnostic_report -> IGitDiagnosticReport + * + * @param callback streaming output function + * @param project_id Looker Project ID + * @param body Partial + * @param options one-time API call overrides + * + */ + async create_git_diagnostic_report( + callback: (response: Response) => Promise, + project_id: string, + body: Partial, + options?: Partial + ) { + project_id = encodeParam(project_id); + return this.authStream( + callback, + 'POST', + `/projects/${project_id}/git_diagnostic_report`, + null, + body, + options + ); + } + + /** + * ### Retrieve Live Git Diagnostic Suite Execution Status + * + * GET /projects/{project_id}/git_diagnostic_report/{report_id} -> IGitDiagnosticReport + * + * @param callback streaming output function + * @param project_id Looker Project ID + * @param report_id Report ID + * @param options one-time API call overrides + * + */ + async get_git_diagnostic_report( + callback: (response: Response) => Promise, + project_id: string, + report_id: string, + options?: Partial + ) { + project_id = encodeParam(project_id); + report_id = encodeParam(report_id); + return this.authStream( + callback, + 'GET', + `/projects/${project_id}/git_diagnostic_report/${report_id}`, + null, + null, + options + ); + } + + /** + * ### Repair Git Configuration Issues + * + * POST /projects/{project_id}/git_diagnostic_report/{report_id}/repair -> IGitDiagnosticReport + * + * @param callback streaming output function + * @param project_id Looker Project ID + * @param report_id Report ID + * @param body Partial + * @param options one-time API call overrides + * + */ + async repair_git_diagnostic_report( + callback: (response: Response) => Promise, + project_id: string, + report_id: string, + body: Partial, + options?: Partial + ) { + project_id = encodeParam(project_id); + report_id = encodeParam(report_id); + return this.authStream( + callback, + 'POST', + `/projects/${project_id}/git_diagnostic_report/${report_id}/repair`, + null, + body, + options + ); + } + /** * ### Configure Repository Credential for a remote dependency * @@ -13601,6 +13693,32 @@ export class Looker40SDKStream extends APIMethods { ); } + /** + * ### Get Generated LookML for a Self Service Model + * + * GET /self_service_models/{model_name}/lookml -> string + * + * @param callback streaming output function + * @param model_name Name of self service model + * @param options one-time API call overrides + * + */ + async get_self_service_model_lookml( + callback: (response: Response) => Promise, + model_name: string, + options?: Partial + ) { + model_name = encodeParam(model_name); + return this.authStream( + callback, + 'GET', + `/self_service_models/${model_name}/lookml`, + null, + null, + options + ); + } + /** * ### Update certification for a Self Service Explore * @@ -13951,6 +14069,8 @@ export class Looker40SDKStream extends APIMethods { /** * ### Get the default theme * + * This endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead. + * * Returns the active theme object set as the default. * * The **default** theme name can be set in the UI on the Admin|Theme UI page @@ -13959,6 +14079,8 @@ export class Looker40SDKStream extends APIMethods { * * GET /themes/default -> ITheme * + * @deprecated + * * @param callback streaming output function * @param ts Timestamp representing the target datetime for the active period. Defaults to 'now' * @param options one-time API call overrides @@ -13982,6 +14104,8 @@ export class Looker40SDKStream extends APIMethods { /** * ### Set the global default theme by theme name * + * This endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead. + * * Only Admin users can call this function. * * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. @@ -13994,6 +14118,8 @@ export class Looker40SDKStream extends APIMethods { * * PUT /themes/default -> ITheme * + * @deprecated + * * @param callback streaming output function * @param name Name of theme to set as default * @param options one-time API call overrides @@ -14014,6 +14140,78 @@ export class Looker40SDKStream extends APIMethods { ); } + /** + * ### Get the default theme + * + * Returns the active theme object set as the default. + * + * The **default** theme name can be set in the UI on the Admin|Theme UI page + * + * The optional `ts` parameter can specify a different timestamp than "now." If specified, it returns the default theme at the time indicated. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * GET /themes/default_theme -> ITheme + * + * @param callback streaming output function + * @param theme_type Theme type. + * @param ts Timestamp representing the target datetime for the active period. Defaults to 'now' + * @param options one-time API call overrides + * + */ + async default_theme_by_type( + callback: (response: Response) => Promise, + theme_type: string, + ts?: Date, + options?: Partial + ) { + return this.authStream( + callback, + 'GET', + '/themes/default_theme', + { ts, theme_type }, + null, + options + ); + } + + /** + * ### Set the global default theme by theme name + * + * Only Admin users can call this function. + * + * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. + * + * [Create Theme](#!/Theme/create) has detailed information on rules for default and active themes + * + * Returns the new specified default theme object. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * PUT /themes/default_theme -> ITheme + * + * @param callback streaming output function + * @param name Name of theme to set as default + * @param theme_type Theme type. + * @param options one-time API call overrides + * + */ + async set_default_theme_by_type( + callback: (response: Response) => Promise, + name: string, + theme_type: string, + options?: Partial + ) { + return this.authStream( + callback, + 'PUT', + '/themes/default_theme', + { name, theme_type }, + null, + options + ); + } + /** * ### Get active themes * @@ -14041,7 +14239,12 @@ export class Looker40SDKStream extends APIMethods { callback, 'GET', '/themes/active', - { name: request.name, ts: request.ts, fields: request.fields }, + { + name: request.name, + ts: request.ts, + theme_type: request.theme_type, + fields: request.fields, + }, null, options ); diff --git a/packages/sdk/src/constants.ts b/packages/sdk/src/constants.ts index e619d3f32..676c84d47 100644 --- a/packages/sdk/src/constants.ts +++ b/packages/sdk/src/constants.ts @@ -24,5 +24,5 @@ */ -export const sdkVersion = '26.10'; +export const sdkVersion = '26.12'; export const environmentPrefix = 'LOOKERSDK'; diff --git a/python/looker_sdk/sdk/api40/methods.py b/python/looker_sdk/sdk/api40/methods.py index 4036ffea2..22e8aa95b 100644 --- a/python/looker_sdk/sdk/api40/methods.py +++ b/python/looker_sdk/sdk/api40/methods.py @@ -21,7 +21,7 @@ # SOFTWARE. # -# 512 API methods +# 518 API methods # NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0 @@ -34,9 +34,10 @@ from looker_sdk.rtl import model from looker_sdk.rtl import transport + class Looker40SDK(api_methods.APIMethods): - #region Alert: Alert + # region Alert: Alert # Follow an alert. # @@ -54,8 +55,8 @@ def follow_alert( self.post( path=f"/alerts/{alert_id}/follow", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -75,8 +76,8 @@ def unfollow_alert( self.delete( path=f"/alerts/{alert_id}/follow", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -113,9 +114,20 @@ def search_alerts( self.get( path="/alerts/search", structure=Sequence[mdls.Alert], - query_params={"limit": limit, "offset": offset, "group_by": group_by, "fields": fields, "disabled": disabled, "frequency": frequency, "condition_met": condition_met, "last_run_start": last_run_start, "last_run_end": last_run_end, "all_owners": all_owners}, - transport_options=transport_options - ) + query_params={ + "limit": limit, + "offset": offset, + "group_by": group_by, + "fields": fields, + "disabled": disabled, + "frequency": frequency, + "condition_met": condition_met, + "last_run_start": last_run_start, + "last_run_end": last_run_end, + "all_owners": all_owners, + }, + transport_options=transport_options, + ), ) return response @@ -135,8 +147,8 @@ def get_alert( self.get( path=f"/alerts/{alert_id}", structure=mdls.Alert, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -160,8 +172,8 @@ def update_alert( path=f"/alerts/{alert_id}", structure=mdls.Alert, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -185,8 +197,8 @@ def update_alert_field( path=f"/alerts/{alert_id}", structure=mdls.Alert, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -206,8 +218,8 @@ def delete_alert( self.delete( path=f"/alerts/{alert_id}", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -260,8 +272,8 @@ def create_alert( path="/alerts", structure=mdls.Alert, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -284,8 +296,8 @@ def enqueue_alert( path=f"/alerts/{alert_id}/enqueue", structure=None, query_params={"force": force}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -308,8 +320,8 @@ def alert_notifications( path="/alert_notifications", structure=Sequence[mdls.AlertNotifications], query_params={"limit": limit, "offset": offset}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -330,14 +342,14 @@ def read_alert_notification( self.patch( path=f"/alert_notifications/{alert_notification_id}", structure=mdls.AlertNotifications, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region ApiAuth: API Authentication + # region ApiAuth: API Authentication # ### Present client credentials to obtain an authorization token # @@ -383,9 +395,11 @@ def login( self.post( path="/login", structure=mdls.AccessToken, - body=model.URLSearchParams({"client_id": client_id, "client_secret": client_secret}), - transport_options=transport_options - ) + body=model.URLSearchParams( + {"client_id": client_id, "client_secret": client_secret} + ), + transport_options=transport_options, + ), ) return response @@ -420,14 +434,16 @@ def login_user( ) -> mdls.AccessToken: """Login user""" user_id = self.encode_path_param(user_id) - warnings.warn("login_user behavior changed significantly in 21.4.0. See https://git.io/JOtH1") + warnings.warn( + "login_user behavior changed significantly in 21.4.0. See https://git.io/JOtH1" + ) response = cast( mdls.AccessToken, self.post( path=f"/login/{user_id}", structure=mdls.AccessToken, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -442,16 +458,14 @@ def logout( response = cast( str, self.delete( - path="/logout", - structure=str, - transport_options=transport_options - ) + path="/logout", structure=str, transport_options=transport_options + ), ) return response - #endregion + # endregion - #region Artifact: Artifact Storage + # region Artifact: Artifact Storage # Get the maximum configured size of the entire artifact store, and the currently used storage in bytes. # @@ -471,8 +485,8 @@ def artifact_usage( path="/artifact/usage", structure=mdls.ArtifactUsage, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -498,8 +512,8 @@ def artifact_namespaces( path="/artifact/namespaces", structure=Sequence[mdls.ArtifactNamespace], query_params={"fields": fields, "limit": limit, "offset": offset}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -526,8 +540,8 @@ def artifact_value( path=f"/artifact/{namespace}/value", structure=str, query_params={"key": key}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -549,8 +563,8 @@ def purge_artifacts( self.delete( path=f"/artifact/{namespace}/purge", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -602,9 +616,18 @@ def search_artifacts( self.get( path=f"/artifact/{namespace}/search", structure=Sequence[mdls.Artifact], - query_params={"fields": fields, "key": key, "user_ids": user_ids, "min_size": min_size, "max_size": max_size, "limit": limit, "offset": offset, "tally": tally}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "key": key, + "user_ids": user_ids, + "min_size": min_size, + "max_size": max_size, + "limit": limit, + "offset": offset, + "tally": tally, + }, + transport_options=transport_options, + ), ) return response @@ -638,9 +661,15 @@ def artifact( self.get( path=f"/artifact/{namespace}", structure=Sequence[mdls.Artifact], - query_params={"key": key, "fields": fields, "limit": limit, "offset": offset, "tally": tally}, - transport_options=transport_options - ) + query_params={ + "key": key, + "fields": fields, + "limit": limit, + "offset": offset, + "tally": tally, + }, + transport_options=transport_options, + ), ) return response @@ -667,8 +696,8 @@ def delete_artifact( path=f"/artifact/{namespace}", structure=None, query_params={"key": key}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -718,14 +747,14 @@ def update_artifacts( structure=Sequence[mdls.Artifact], query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Auth: Manage User Authentication Configuration + # region Auth: Manage User Authentication Configuration # ### Create an embed secret using the specified information. # @@ -746,8 +775,8 @@ def create_embed_secret( path="/embed_config/secrets", structure=mdls.EmbedSecret, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -769,8 +798,8 @@ def delete_embed_secret( self.delete( path=f"/embed_config/secrets/{embed_secret_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -832,8 +861,8 @@ def create_sso_embed_url( path="/embed/sso_url", structure=mdls.EmbedUrlResponse, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -876,8 +905,8 @@ def create_embed_url_as_me( path="/embed/token_url/me", structure=mdls.EmbedUrlResponse, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -897,8 +926,8 @@ def validate_embed_url( path="/embed/sso/validate", structure=mdls.EmbedUrlResponse, query_params={"url": url}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -948,8 +977,8 @@ def acquire_embed_cookieless_session( path="/embed/cookieless_session/acquire", structure=mdls.EmbedCookielessSessionAcquireResponse, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -975,8 +1004,8 @@ def delete_embed_cookieless_session( self.delete( path=f"/embed/cookieless_session/{session_reference_token}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1010,8 +1039,8 @@ def generate_tokens_for_cookieless_session( path="/embed/cookieless_session/generate_tokens", structure=mdls.EmbedCookielessSessionGenerateTokensResponse, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1045,8 +1074,8 @@ def ldap_config( self.get( path="/ldap_config", structure=mdls.LDAPConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1077,8 +1106,8 @@ def update_ldap_config( path="/ldap_config", structure=mdls.LDAPConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1116,8 +1145,8 @@ def test_ldap_config_connection( path="/ldap_config/test_connection", structure=mdls.LDAPConfigTestResult, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1157,8 +1186,8 @@ def test_ldap_config_auth( path="/ldap_config/test_auth", structure=mdls.LDAPConfigTestResult, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1187,8 +1216,8 @@ def test_ldap_config_user_info( path="/ldap_config/test_user_info", structure=mdls.LDAPConfigTestResult, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1217,8 +1246,8 @@ def test_ldap_config_user_auth( path="/ldap_config/test_user_auth", structure=mdls.LDAPConfigTestResult, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1238,8 +1267,8 @@ def register_mobile_device( path="/mobile/device", structure=mdls.MobileToken, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1259,8 +1288,8 @@ def update_mobile_device_registration( self.patch( path=f"/mobile/device/{device_id}", structure=mdls.MobileToken, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1280,8 +1309,8 @@ def deregister_mobile_device( self.delete( path=f"/mobile/device/{device_id}", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1307,8 +1336,8 @@ def all_oauth_client_apps( path="/oauth_client_apps", structure=Sequence[mdls.OauthClientApp], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1333,8 +1362,8 @@ def oauth_client_app( path=f"/oauth_client_apps/{client_guid}", structure=mdls.OauthClientApp, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1364,8 +1393,8 @@ def register_oauth_client_app( structure=mdls.OauthClientApp, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1392,8 +1421,8 @@ def update_oauth_client_app( structure=mdls.OauthClientApp, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1421,8 +1450,8 @@ def delete_oauth_client_app( self.delete( path=f"/oauth_client_apps/{client_guid}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1445,8 +1474,8 @@ def invalidate_tokens( self.delete( path=f"/oauth_client_apps/{client_guid}/tokens", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1478,8 +1507,8 @@ def activate_app_user( path=f"/oauth_client_apps/{client_guid}/users/{user_id}", structure=str, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1514,8 +1543,8 @@ def deactivate_app_user( path=f"/oauth_client_apps/{client_guid}/users/{user_id}", structure=str, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1545,8 +1574,8 @@ def oidc_config( self.get( path="/oidc_config", structure=mdls.OIDCConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1575,8 +1604,8 @@ def update_oidc_config( path="/oidc_config", structure=mdls.OIDCConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1598,8 +1627,8 @@ def oidc_test_config( self.get( path=f"/oidc_test_configs/{test_slug}", structure=mdls.OIDCConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1621,8 +1650,8 @@ def delete_oidc_test_config( self.delete( path=f"/oidc_test_configs/{test_slug}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1643,8 +1672,8 @@ def create_oidc_test_config( path="/oidc_test_configs", structure=mdls.OIDCConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1663,8 +1692,8 @@ def password_config( self.get( path="/password_config", structure=mdls.PasswordConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1685,8 +1714,8 @@ def update_password_config( path="/password_config", structure=mdls.PasswordConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1705,8 +1734,8 @@ def force_password_reset_at_next_login_for_all_users( self.put( path="/password_config/force_password_reset_at_next_login_for_all_users", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1736,8 +1765,8 @@ def saml_config( self.get( path="/saml_config", structure=mdls.SamlConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1766,8 +1795,8 @@ def update_saml_config( path="/saml_config", structure=mdls.SamlConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1789,8 +1818,8 @@ def saml_test_config( self.get( path=f"/saml_test_configs/{test_slug}", structure=mdls.SamlConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1812,8 +1841,8 @@ def delete_saml_test_config( self.delete( path=f"/saml_test_configs/{test_slug}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1834,8 +1863,8 @@ def create_saml_test_config( path="/saml_test_configs", structure=mdls.SamlConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1856,8 +1885,8 @@ def parse_saml_idp_metadata( path="/parse_saml_idp_metadata", structure=mdls.SamlMetadataParseResult, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1880,8 +1909,8 @@ def fetch_and_parse_saml_idp_metadata( path="/fetch_and_parse_saml_idp_metadata", structure=mdls.SamlMetadataParseResult, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1898,8 +1927,8 @@ def session_config( self.get( path="/session_config", structure=mdls.SessionConfig, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1918,8 +1947,8 @@ def update_session_config( path="/session_config", structure=mdls.SessionConfig, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1943,8 +1972,8 @@ def get_support_access_allowlist_entries( path="/support_access/allowlist", structure=Sequence[mdls.SupportAccessAllowlistEntry], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1967,8 +1996,8 @@ def add_support_access_allowlist_entries( path="/support_access/allowlist", structure=Sequence[mdls.SupportAccessAllowlistEntry], body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -1992,8 +2021,8 @@ def delete_support_access_allowlist_entry( self.delete( path=f"/support_access/allowlist/{entry_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2016,8 +2045,8 @@ def enable_support_access( path="/support_access/enable", structure=mdls.SupportAccessStatus, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2038,8 +2067,8 @@ def disable_support_access( self.put( path="/support_access/disable", structure=mdls.SupportAccessStatus, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2060,8 +2089,8 @@ def support_access_status( self.get( path="/support_access/status", structure=mdls.SupportAccessStatus, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2081,8 +2110,8 @@ def all_user_login_lockouts( path="/user_login_lockouts", structure=Sequence[mdls.UserLoginLockout], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2121,9 +2150,21 @@ def search_user_login_lockouts( self.get( path="/user_login_lockouts/search", structure=Sequence[mdls.UserLoginLockout], - query_params={"fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "auth_type": auth_type, "full_name": full_name, "email": email, "remote_id": remote_id, "filter_or": filter_or}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "limit": limit, + "offset": offset, + "sorts": sorts, + "auth_type": auth_type, + "full_name": full_name, + "email": email, + "remote_id": remote_id, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -2143,14 +2184,14 @@ def delete_user_login_lockout( self.delete( path=f"/user_login_lockout/{key}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Board: Manage Boards + # region Board: Manage Boards # ### Get information about all boards. # @@ -2168,8 +2209,8 @@ def all_boards( path="/boards", structure=Sequence[mdls.Board], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2191,8 +2232,8 @@ def create_board( structure=mdls.Board, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2258,9 +2299,24 @@ def search_boards( self.get( path="/boards/search", structure=Sequence[mdls.Board], - query_params={"title": title, "created_at": created_at, "first_name": first_name, "last_name": last_name, "fields": fields, "favorited": favorited, "creator_id": creator_id, "sorts": sorts, "page": page, "per_page": per_page, "offset": offset, "limit": limit, "filter_or": filter_or, "permission": permission}, - transport_options=transport_options - ) + query_params={ + "title": title, + "created_at": created_at, + "first_name": first_name, + "last_name": last_name, + "fields": fields, + "favorited": favorited, + "creator_id": creator_id, + "sorts": sorts, + "page": page, + "per_page": per_page, + "offset": offset, + "limit": limit, + "filter_or": filter_or, + "permission": permission, + }, + transport_options=transport_options, + ), ) return response @@ -2283,8 +2339,8 @@ def board( path=f"/boards/{board_id}", structure=mdls.Board, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2309,8 +2365,8 @@ def update_board( structure=mdls.Board, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2330,8 +2386,8 @@ def delete_board( self.delete( path=f"/boards/{board_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2354,9 +2410,13 @@ def all_board_items( self.get( path="/board_items", structure=Sequence[mdls.BoardItem], - query_params={"fields": fields, "sorts": sorts, "board_section_id": board_section_id}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "sorts": sorts, + "board_section_id": board_section_id, + }, + transport_options=transport_options, + ), ) return response @@ -2378,8 +2438,8 @@ def create_board_item( structure=mdls.BoardItem, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2402,8 +2462,8 @@ def board_item( path=f"/board_items/{board_item_id}", structure=mdls.BoardItem, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2428,8 +2488,8 @@ def update_board_item( structure=mdls.BoardItem, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2449,8 +2509,8 @@ def delete_board_item( self.delete( path=f"/board_items/{board_item_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2472,8 +2532,8 @@ def all_board_sections( path="/board_sections", structure=Sequence[mdls.BoardSection], query_params={"fields": fields, "sorts": sorts}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2495,8 +2555,8 @@ def create_board_section( structure=mdls.BoardSection, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2519,8 +2579,8 @@ def board_section( path=f"/board_sections/{board_section_id}", structure=mdls.BoardSection, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2545,8 +2605,8 @@ def update_board_section( structure=mdls.BoardSection, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2566,14 +2626,14 @@ def delete_board_section( self.delete( path=f"/board_sections/{board_section_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region ColorCollection: Manage Color Collections + # region ColorCollection: Manage Color Collections # ### Get an array of all existing Color Collections # Get a **single** color collection by id with [ColorCollection](#!/ColorCollection/color_collection) @@ -2598,8 +2658,8 @@ def all_color_collections( path="/color_collections", structure=Sequence[mdls.ColorCollection], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2626,8 +2686,8 @@ def create_color_collection( path="/color_collections", structure=mdls.ColorCollection, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2652,8 +2712,8 @@ def color_collections_custom( path="/color_collections/custom", structure=Sequence[mdls.ColorCollection], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2678,8 +2738,8 @@ def color_collections_standard( path="/color_collections/standard", structure=Sequence[mdls.ColorCollection], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2700,8 +2760,8 @@ def default_color_collection( self.get( path="/color_collections/default", structure=mdls.ColorCollection, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2724,8 +2784,8 @@ def set_default_color_collection( path="/color_collections/default", structure=mdls.ColorCollection, query_params={"collection_id": collection_id}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2757,8 +2817,8 @@ def color_collection( path=f"/color_collections/{collection_id}", structure=mdls.ColorCollection, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2781,8 +2841,8 @@ def update_color_collection( path=f"/color_collections/{collection_id}", structure=mdls.ColorCollection, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2809,14 +2869,14 @@ def delete_color_collection( self.delete( path=f"/color_collections/{collection_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Config: Manage General Configuration + # region Config: Manage General Configuration # Get the current Cloud Storage Configuration. # @@ -2831,8 +2891,8 @@ def cloud_storage_configuration( self.get( path="/cloud_storage", structure=mdls.BackupConfiguration, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2851,8 +2911,8 @@ def update_cloud_storage_configuration( path="/cloud_storage", structure=mdls.BackupConfiguration, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2869,8 +2929,8 @@ def custom_welcome_email( self.get( path="/custom_welcome_email", structure=mdls.CustomWelcomeEmail, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2892,8 +2952,8 @@ def update_custom_welcome_email( structure=mdls.CustomWelcomeEmail, query_params={"send_test_welcome_email": send_test_welcome_email}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2905,15 +2965,15 @@ def update_custom_welcome_email_test( body: mdls.WelcomeEmailTest, transport_options: Optional[transport.TransportOptions] = None, ) -> mdls.WelcomeEmailTest: - """Send a test welcome email to the currently logged in user with the supplied content """ + """Send a test welcome email to the currently logged in user with the supplied content""" response = cast( mdls.WelcomeEmailTest, self.put( path="/custom_welcome_email_test", structure=mdls.WelcomeEmailTest, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2930,8 +2990,8 @@ def digest_emails_enabled( self.get( path="/digest_emails_enabled", structure=mdls.DigestEmails, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2950,8 +3010,8 @@ def update_digest_emails_enabled( path="/digest_emails_enabled", structure=mdls.DigestEmails, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2970,8 +3030,8 @@ def create_digest_email_send( self.post( path="/digest_email_send", structure=mdls.DigestEmailSend, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -2992,8 +3052,8 @@ def public_egress_ip_addresses( self.get( path="/public_egress_ip_addresses", structure=mdls.EgressIpAddresses, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3010,8 +3070,8 @@ def internal_help_resources_content( self.get( path="/internal_help_resources_content", structure=mdls.InternalHelpResourcesContent, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3030,8 +3090,8 @@ def update_internal_help_resources_content( path="/internal_help_resources_content", structure=mdls.InternalHelpResourcesContent, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3048,8 +3108,8 @@ def internal_help_resources( self.get( path="/internal_help_resources_enabled", structure=mdls.InternalHelpResources, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3068,8 +3128,8 @@ def update_internal_help_resources( path="/internal_help_resources", structure=mdls.InternalHelpResources, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3088,8 +3148,8 @@ def all_legacy_features( self.get( path="/legacy_features", structure=Sequence[mdls.LegacyFeature], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3111,8 +3171,8 @@ def legacy_feature( self.get( path=f"/legacy_features/{legacy_feature_id}", structure=mdls.LegacyFeature, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3136,8 +3196,8 @@ def update_legacy_feature( path=f"/legacy_features/{legacy_feature_id}", structure=mdls.LegacyFeature, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3154,8 +3214,8 @@ def all_locales( self.get( path="/locales", structure=Sequence[mdls.Locale], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3172,8 +3232,8 @@ def mobile_settings( self.get( path="/mobile/settings", structure=mdls.MobileSettings, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3200,6 +3260,7 @@ def mobile_settings( # - onboarding_enabled # - privatelabel_configuration # - revoke_certification_on_edits + # - automated_mfa_enabled # - timezone # - host_url # - email_domain_allowlist @@ -3222,8 +3283,8 @@ def get_setting( path="/setting", structure=mdls.Setting, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3250,6 +3311,7 @@ def get_setting( # - onboarding_enabled # - privatelabel_configuration # - revoke_certification_on_edits + # - automated_mfa_enabled # - timezone # - host_url # - email_domain_allowlist @@ -3278,8 +3340,8 @@ def set_setting( structure=mdls.Setting, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3300,8 +3362,8 @@ def set_smtp_settings( path="/smtp_settings", structure=None, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3321,8 +3383,8 @@ def smtp_status( path="/smtp_status", structure=mdls.SmtpStatus, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3339,8 +3401,8 @@ def all_timezones( self.get( path="/timezones", structure=Sequence[mdls.Timezone], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3360,8 +3422,8 @@ def versions( path="/versions", structure=mdls.ApiVersion, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3386,8 +3448,8 @@ def api_spec( self.get( path=f"/api_spec/{api_version}/{specification}", structure=Any, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3411,8 +3473,8 @@ def whitelabel_configuration( path="/whitelabel_configuration", structure=mdls.WhitelabelConfiguration, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3433,14 +3495,14 @@ def update_whitelabel_configuration( path="/whitelabel_configuration", structure=mdls.WhitelabelConfiguration, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Connection: Manage Database Connections + # region Connection: Manage Database Connections # ### Get information about all connections. # @@ -3458,8 +3520,8 @@ def all_connections( path="/connections", structure=Sequence[mdls.DBConnection], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3478,8 +3540,8 @@ def create_connection( path="/connections", structure=mdls.DBConnection, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3502,8 +3564,8 @@ def connection( path=f"/connections/{connection_name}", structure=mdls.DBConnection, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3525,8 +3587,8 @@ def update_connection( path=f"/connections/{connection_name}", structure=mdls.DBConnection, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3546,8 +3608,8 @@ def delete_connection( self.delete( path=f"/connections/{connection_name}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3570,8 +3632,8 @@ def delete_connection_override( self.delete( path=f"/connections/{connection_name}/connection_override/{override_context}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3601,8 +3663,8 @@ def test_connection( path=f"/connections/{connection_name}/test", structure=Sequence[mdls.DBConnectionTestResult], query_params={"tests": tests}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3631,8 +3693,8 @@ def test_connection_config( structure=Sequence[mdls.DBConnectionTestResult], query_params={"tests": tests}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3652,8 +3714,8 @@ def all_dialect_infos( path="/dialect_info", structure=Sequence[mdls.DialectInfo], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3677,8 +3739,8 @@ def all_external_oauth_applications( path="/external_oauth_applications", structure=Sequence[mdls.ExternalOauthApplication], query_params={"name": name, "client_id": client_id}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3699,8 +3761,8 @@ def create_external_oauth_application( path="/external_oauth_applications", structure=mdls.ExternalOauthApplication, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3724,8 +3786,8 @@ def update_external_oauth_application( path=f"/external_oauth_applications/{client_id}", structure=mdls.ExternalOauthApplication, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3747,8 +3809,8 @@ def delete_external_oauth_application( self.delete( path=f"/external_oauth_applications/{client_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3767,8 +3829,8 @@ def create_oauth_application_user_state( path="/external_oauth_applications/user_state", structure=mdls.CreateOAuthApplicationUserStateResponse, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3788,8 +3850,8 @@ def all_ssh_servers( path="/ssh_servers", structure=Sequence[mdls.SshServer], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3808,8 +3870,8 @@ def create_ssh_server( path="/ssh_servers", structure=mdls.SshServer, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3829,8 +3891,8 @@ def ssh_server( self.get( path=f"/ssh_server/{ssh_server_id}", structure=mdls.SshServer, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3852,8 +3914,8 @@ def update_ssh_server( path=f"/ssh_server/{ssh_server_id}", structure=mdls.SshServer, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3873,8 +3935,8 @@ def delete_ssh_server( self.delete( path=f"/ssh_server/{ssh_server_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3894,8 +3956,8 @@ def test_ssh_server( self.get( path=f"/ssh_server/{ssh_server_id}/test", structure=mdls.SshServer, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3915,8 +3977,8 @@ def all_ssh_tunnels( path="/ssh_tunnels", structure=Sequence[mdls.SshTunnel], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3935,8 +3997,8 @@ def create_ssh_tunnel( path="/ssh_tunnels", structure=mdls.SshTunnel, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3956,8 +4018,8 @@ def ssh_tunnel( self.get( path=f"/ssh_tunnel/{ssh_tunnel_id}", structure=mdls.SshTunnel, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -3979,8 +4041,8 @@ def update_ssh_tunnel( path=f"/ssh_tunnel/{ssh_tunnel_id}", structure=mdls.SshTunnel, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4000,8 +4062,8 @@ def delete_ssh_tunnel( self.delete( path=f"/ssh_tunnel/{ssh_tunnel_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4021,8 +4083,8 @@ def test_ssh_tunnel( self.get( path=f"/ssh_tunnel/{ssh_tunnel_id}/test", structure=mdls.SshTunnel, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4041,14 +4103,14 @@ def ssh_public_key( self.get( path="/ssh_public_key", structure=mdls.SshPublicKey, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Content: Manage Content + # region Content: Manage Content # ### Search Favorite Content # @@ -4110,9 +4172,23 @@ def search_content_favorites( self.get( path="/content_favorite/search", structure=Sequence[mdls.ContentFavorite], - query_params={"id": id, "user_id": user_id, "content_metadata_id": content_metadata_id, "dashboard_id": dashboard_id, "look_id": look_id, "board_id": board_id, "lookml_dashboard_id": lookml_dashboard_id, "include_board_items": include_board_items, "limit": limit, "offset": offset, "sorts": sorts, "fields": fields, "filter_or": filter_or}, - transport_options=transport_options - ) + query_params={ + "id": id, + "user_id": user_id, + "content_metadata_id": content_metadata_id, + "dashboard_id": dashboard_id, + "look_id": look_id, + "board_id": board_id, + "lookml_dashboard_id": lookml_dashboard_id, + "include_board_items": include_board_items, + "limit": limit, + "offset": offset, + "sorts": sorts, + "fields": fields, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -4135,8 +4211,8 @@ def content_favorite( path=f"/content_favorite/{content_favorite_id}", structure=mdls.ContentFavorite, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4156,8 +4232,8 @@ def delete_content_favorite( self.delete( path=f"/content_favorite/{content_favorite_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4176,8 +4252,8 @@ def create_content_favorite( path="/content_favorite", structure=mdls.ContentFavorite, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4199,8 +4275,8 @@ def all_content_metadatas( path="/content_metadata", structure=Sequence[mdls.ContentMeta], query_params={"parent_id": parent_id, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4223,8 +4299,8 @@ def content_metadata( path=f"/content_metadata/{content_metadata_id}", structure=mdls.ContentMeta, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4246,8 +4322,8 @@ def update_content_metadata( path=f"/content_metadata/{content_metadata_id}", structure=mdls.ContentMeta, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4268,9 +4344,12 @@ def all_content_metadata_accesses( self.get( path="/content_metadata_access", structure=Sequence[mdls.ContentMetaGroupUser], - query_params={"content_metadata_id": content_metadata_id, "fields": fields}, - transport_options=transport_options - ) + query_params={ + "content_metadata_id": content_metadata_id, + "fields": fields, + }, + transport_options=transport_options, + ), ) return response @@ -4291,10 +4370,12 @@ def create_content_metadata_access( self.post( path="/content_metadata_access", structure=mdls.ContentMetaGroupUser, - query_params={"send_boards_notification_email": send_boards_notification_email}, + query_params={ + "send_boards_notification_email": send_boards_notification_email + }, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4317,8 +4398,8 @@ def update_content_metadata_access( path=f"/content_metadata_access/{content_metadata_access_id}", structure=mdls.ContentMetaGroupUser, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4338,8 +4419,8 @@ def delete_content_metadata_access( self.delete( path=f"/content_metadata_access/{content_metadata_access_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4379,9 +4460,16 @@ def search_content( self.get( path=f"/content/{terms}", structure=Sequence[mdls.ContentSearch], - query_params={"fields": fields, "types": types, "limit": limit, "offset": offset, "page": page, "per_page": per_page}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "types": types, + "limit": limit, + "offset": offset, + "page": page, + "per_page": per_page, + }, + transport_options=transport_options, + ), ) return response @@ -4415,9 +4503,17 @@ def content_summary( self.get( path="/content_summary", structure=Sequence[mdls.ContentSummary], - query_params={"fields": fields, "limit": limit, "offset": offset, "target_group_id": target_group_id, "target_user_id": target_user_id, "target_content_type": target_content_type, "sorts": sorts}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "limit": limit, + "offset": offset, + "target_group_id": target_group_id, + "target_user_id": target_user_id, + "target_content_type": target_content_type, + "sorts": sorts, + }, + transport_options=transport_options, + ), ) return response @@ -4453,9 +4549,15 @@ def content_thumbnail( self.get( path=f"/content_thumbnail/{type}/{resource_id}", structure=Union[str, bytes], # type: ignore - query_params={"reload": reload, "theme": theme, "format": format, "width": width, "height": height}, - transport_options=transport_options - ) + query_params={ + "reload": reload, + "theme": theme, + "format": format, + "width": width, + "height": height, + }, + transport_options=transport_options, + ), ) return response @@ -4481,9 +4583,13 @@ def content_validation( self.get( path="/content_validation", structure=mdls.ContentValidation, - query_params={"fields": fields, "project_names": project_names, "space_ids": space_ids}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "project_names": project_names, + "space_ids": space_ids, + }, + transport_options=transport_options, + ), ) return response @@ -4547,9 +4653,23 @@ def search_content_views( self.get( path="/content_view/search", structure=Sequence[mdls.ContentView], - query_params={"view_count": view_count, "group_id": group_id, "look_id": look_id, "dashboard_id": dashboard_id, "content_metadata_id": content_metadata_id, "start_of_week_date": start_of_week_date, "all_time": all_time, "user_id": user_id, "fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or}, - transport_options=transport_options - ) + query_params={ + "view_count": view_count, + "group_id": group_id, + "look_id": look_id, + "dashboard_id": dashboard_id, + "content_metadata_id": content_metadata_id, + "start_of_week_date": start_of_week_date, + "all_time": all_time, + "user_id": user_id, + "fields": fields, + "limit": limit, + "offset": offset, + "sorts": sorts, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -4580,14 +4700,14 @@ def vector_thumbnail( path=f"/vector_thumbnail/{type}/{resource_id}", structure=str, query_params={"reload": reload}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region ConversationalAnalytics: Manage Conversations, Agents and Messages + # region ConversationalAnalytics: Manage Conversations, Agents and Messages # ### Search Agents # @@ -4634,9 +4754,23 @@ def search_agents( self.get( path="/agents/search", structure=Sequence[mdls.Agent], - query_params={"id": id, "name": name, "description": description, "created_by_user_id": created_by_user_id, "fields": fields, "limit": limit, "category": category, "offset": offset, "sorts": sorts, "filter_or": filter_or, "not_owned_by": not_owned_by, "deleted": deleted, "primary_agent_id": primary_agent_id}, - transport_options=transport_options - ) + query_params={ + "id": id, + "name": name, + "description": description, + "created_by_user_id": created_by_user_id, + "fields": fields, + "limit": limit, + "category": category, + "offset": offset, + "sorts": sorts, + "filter_or": filter_or, + "not_owned_by": not_owned_by, + "deleted": deleted, + "primary_agent_id": primary_agent_id, + }, + transport_options=transport_options, + ), ) return response @@ -4661,8 +4795,8 @@ def create_agent( structure=mdls.Agent, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4686,8 +4820,8 @@ def delete_agent( path="/agents", structure=str, query_params={"id": id, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4712,8 +4846,8 @@ def get_agent( path=f"/agents/{agent_id}", structure=mdls.Agent, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4740,8 +4874,8 @@ def update_agent( structure=mdls.Agent, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4766,8 +4900,8 @@ def all_conversation_messages( path=f"/conversations/{conversation_id}/messages", structure=Sequence[mdls.ConversationMessage], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4798,8 +4932,8 @@ def create_conversation_message( structure=Sequence[mdls.ConversationMessage], query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4826,8 +4960,8 @@ def delete_conversation_message( path=f"/conversations/{conversation_id}/messages", structure=str, query_params={"id": id, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4855,8 +4989,8 @@ def get_conversation_message( path=f"/conversations/{conversation_id}/messages/{message_id}", structure=mdls.ConversationMessage, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4886,8 +5020,8 @@ def update_conversation_message( structure=mdls.ConversationMessage, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4931,9 +5065,20 @@ def search_conversations( self.get( path="/conversations/search", structure=Sequence[mdls.Conversation], - query_params={"id": id, "name": name, "agent_id": agent_id, "fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or, "category": category, "deleted": deleted}, - transport_options=transport_options - ) + query_params={ + "id": id, + "name": name, + "agent_id": agent_id, + "fields": fields, + "limit": limit, + "offset": offset, + "sorts": sorts, + "filter_or": filter_or, + "category": category, + "deleted": deleted, + }, + transport_options=transport_options, + ), ) return response @@ -4958,8 +5103,8 @@ def create_conversation( structure=mdls.Conversation, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -4983,8 +5128,8 @@ def delete_conversation( path="/conversations", structure=str, query_params={"id": id, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5009,8 +5154,8 @@ def get_conversation( path=f"/conversations/{conversation_id}", structure=mdls.Conversation, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5037,8 +5182,8 @@ def update_conversation( structure=mdls.Conversation, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5058,8 +5203,8 @@ def conversational_analytics_chat( path="/conversational_analytics/chat", structure=Sequence[mdls.ChatMessage], body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5080,8 +5225,8 @@ def create_golden_query( path="/golden_queries", structure=mdls.GoldenQuery, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5104,8 +5249,8 @@ def update_golden_query( path=f"/golden_queries/{golden_query_id}", structure=mdls.GoldenQuery, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5126,14 +5271,14 @@ def delete_golden_query( self.delete( path=f"/golden_queries/{golden_query_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Dashboard: Manage Dashboards + # region Dashboard: Manage Dashboards # ### Get information about all active dashboards. # @@ -5157,8 +5302,8 @@ def all_dashboards( path="/dashboards", structure=Sequence[mdls.DashboardBase], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5190,8 +5335,8 @@ def create_dashboard( path="/dashboards", structure=mdls.Dashboard, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5277,9 +5422,30 @@ def search_dashboards( self.get( path="/dashboards/search", structure=Sequence[mdls.Dashboard], - query_params={"id": id, "slug": slug, "title": title, "description": description, "content_favorite_id": content_favorite_id, "folder_id": folder_id, "deleted": deleted, "user_id": user_id, "view_count": view_count, "content_metadata_id": content_metadata_id, "curate": curate, "last_viewed_at": last_viewed_at, "fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or, "not_owned_by": not_owned_by}, - transport_options=transport_options - ) + query_params={ + "id": id, + "slug": slug, + "title": title, + "description": description, + "content_favorite_id": content_favorite_id, + "folder_id": folder_id, + "deleted": deleted, + "user_id": user_id, + "view_count": view_count, + "content_metadata_id": content_metadata_id, + "curate": curate, + "last_viewed_at": last_viewed_at, + "fields": fields, + "page": page, + "per_page": per_page, + "limit": limit, + "offset": offset, + "sorts": sorts, + "filter_or": filter_or, + "not_owned_by": not_owned_by, + }, + transport_options=transport_options, + ), ) return response @@ -5318,8 +5484,8 @@ def import_lookml_dashboard( structure=mdls.Dashboard, query_params={"raw_locale": raw_locale}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5354,8 +5520,8 @@ def sync_lookml_dashboard( path=f"/dashboards/{lookml_dashboard_id}/sync", structure=Sequence[int], query_params={"raw_locale": raw_locale, "dashboard_ids": dashboard_ids}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5384,8 +5550,8 @@ def dashboard( path=f"/dashboards/{dashboard_id}", structure=mdls.Dashboard, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5416,8 +5582,8 @@ def update_dashboard( path=f"/dashboards/{dashboard_id}", structure=mdls.Dashboard, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5443,8 +5609,8 @@ def delete_dashboard( self.delete( path=f"/dashboards/{dashboard_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5466,8 +5632,8 @@ def dashboard_aggregate_table_lookml( self.get( path=f"/dashboards/aggregate_table_lookml/{dashboard_id}", structure=mdls.DashboardAggregateTableLookml, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5527,9 +5693,17 @@ def search_lookml_dashboards( self.get( path="/dashboards/lookml/search", structure=mdls.DashboardLookml, - query_params={"folder_id": folder_id, "title": title, "content_favorite_id": content_favorite_id, "fields": fields, "limit": limit, "offset": offset, "sorts": sorts}, - transport_options=transport_options - ) + query_params={ + "folder_id": folder_id, + "title": title, + "content_favorite_id": content_favorite_id, + "fields": fields, + "limit": limit, + "offset": offset, + "sorts": sorts, + }, + transport_options=transport_options, + ), ) return response @@ -5551,8 +5725,8 @@ def dashboard_lookml( self.get( path=f"/dashboards/lookml/{dashboard_id}", structure=mdls.DashboardLookml, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5580,8 +5754,8 @@ def move_dashboard( path=f"/dashboards/{dashboard_id}/move", structure=mdls.Dashboard, query_params={"folder_id": folder_id}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5614,8 +5788,8 @@ def import_dashboard_from_lookml( path="/dashboards/lookml", structure=mdls.Dashboard, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5634,8 +5808,8 @@ def create_dashboard_from_lookml( path="/dashboards/from_lookml", structure=mdls.Dashboard, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5666,8 +5840,8 @@ def copy_dashboard( path=f"/dashboards/{dashboard_id}/copy", structure=mdls.Dashboard, query_params={"folder_id": folder_id}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5689,8 +5863,8 @@ def update_dashboard_certification( path=f"/dashboards/{dashboard_id}/certification", structure=mdls.Dashboard, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5712,8 +5886,8 @@ def update_lookml_certification( path=f"/dashboards/lookml/{dashboard_id}/certification", structure=mdls.Dashboard, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5767,9 +5941,17 @@ def search_dashboard_elements( self.get( path="/dashboard_elements/search", structure=Sequence[mdls.DashboardElement], - query_params={"dashboard_id": dashboard_id, "look_id": look_id, "title": title, "deleted": deleted, "fields": fields, "filter_or": filter_or, "sorts": sorts}, - transport_options=transport_options - ) + query_params={ + "dashboard_id": dashboard_id, + "look_id": look_id, + "title": title, + "deleted": deleted, + "fields": fields, + "filter_or": filter_or, + "sorts": sorts, + }, + transport_options=transport_options, + ), ) return response @@ -5792,8 +5974,8 @@ def dashboard_element( path=f"/dashboard_elements/{dashboard_element_id}", structure=mdls.DashboardElement, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5818,8 +6000,8 @@ def update_dashboard_element( structure=mdls.DashboardElement, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5839,8 +6021,8 @@ def delete_dashboard_element( self.delete( path=f"/dashboard_elements/{dashboard_element_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5863,8 +6045,8 @@ def dashboard_dashboard_elements( path=f"/dashboards/{dashboard_id}/dashboard_elements", structure=Sequence[mdls.DashboardElement], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5888,8 +6070,8 @@ def create_dashboard_element( structure=mdls.DashboardElement, query_params={"fields": fields, "apply_filters": apply_filters}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5912,8 +6094,8 @@ def dashboard_filter( path=f"/dashboard_filters/{dashboard_filter_id}", structure=mdls.DashboardFilter, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5938,8 +6120,8 @@ def update_dashboard_filter( structure=mdls.DashboardFilter, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5959,8 +6141,8 @@ def delete_dashboard_filter( self.delete( path=f"/dashboard_filters/{dashboard_filter_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -5983,8 +6165,8 @@ def dashboard_dashboard_filters( path=f"/dashboards/{dashboard_id}/dashboard_filters", structure=Sequence[mdls.DashboardFilter], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6006,8 +6188,8 @@ def create_dashboard_filter( structure=mdls.DashboardFilter, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6023,15 +6205,17 @@ def dashboard_layout_component( transport_options: Optional[transport.TransportOptions] = None, ) -> mdls.DashboardLayoutComponent: """Get DashboardLayoutComponent""" - dashboard_layout_component_id = self.encode_path_param(dashboard_layout_component_id) + dashboard_layout_component_id = self.encode_path_param( + dashboard_layout_component_id + ) response = cast( mdls.DashboardLayoutComponent, self.get( path=f"/dashboard_layout_components/{dashboard_layout_component_id}", structure=mdls.DashboardLayoutComponent, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6048,7 +6232,9 @@ def update_dashboard_layout_component( transport_options: Optional[transport.TransportOptions] = None, ) -> mdls.DashboardLayoutComponent: """Update DashboardLayoutComponent""" - dashboard_layout_component_id = self.encode_path_param(dashboard_layout_component_id) + dashboard_layout_component_id = self.encode_path_param( + dashboard_layout_component_id + ) response = cast( mdls.DashboardLayoutComponent, self.patch( @@ -6056,8 +6242,8 @@ def update_dashboard_layout_component( structure=mdls.DashboardLayoutComponent, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6080,8 +6266,8 @@ def dashboard_layout_dashboard_layout_components( path=f"/dashboard_layouts/{dashboard_layout_id}/dashboard_layout_components", structure=Sequence[mdls.DashboardLayoutComponent], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6104,8 +6290,8 @@ def dashboard_layout( path=f"/dashboard_layouts/{dashboard_layout_id}", structure=mdls.DashboardLayout, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6130,8 +6316,8 @@ def update_dashboard_layout( structure=mdls.DashboardLayout, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6151,8 +6337,8 @@ def delete_dashboard_layout( self.delete( path=f"/dashboard_layouts/{dashboard_layout_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6175,8 +6361,8 @@ def dashboard_dashboard_layouts( path=f"/dashboards/{dashboard_id}/dashboard_layouts", structure=Sequence[mdls.DashboardLayout], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6198,8 +6384,8 @@ def create_dashboard_layout( structure=mdls.DashboardLayout, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6220,8 +6406,8 @@ def dashboard_filter_state( self.get( path=f"/dashboard_filter_state/{guid}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6241,14 +6427,14 @@ def create_dashboard_filter_state( path="/dashboard_filter_state", structure=mdls.Dashboard, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region DataAction: Run Data Actions + # region DataAction: Run Data Actions # Perform a data action. The data action object can be obtained from query results, and used to perform an arbitrary action. # @@ -6265,8 +6451,8 @@ def perform_data_action( path="/data_actions", structure=mdls.DataActionResponse, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6285,14 +6471,14 @@ def fetch_remote_data_action_form( path="/data_actions/form", structure=mdls.DataActionForm, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Datagroup: Manage Datagroups + # region Datagroup: Manage Datagroups # ### Get information about all datagroups. # @@ -6307,8 +6493,8 @@ def all_datagroups( self.get( path="/datagroups", structure=Sequence[mdls.Datagroup], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6328,8 +6514,8 @@ def datagroup( self.get( path=f"/datagroups/{datagroup_id}", structure=mdls.Datagroup, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6351,14 +6537,14 @@ def update_datagroup( path=f"/datagroups/{datagroup_id}", structure=mdls.Datagroup, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region DerivedTable: View Derived Table graphs + # region DerivedTable: View Derived Table graphs # ### Discover information about derived tables # @@ -6381,8 +6567,8 @@ def graph_derived_tables_for_model( path=f"/derived_table/graph/model/{model}", structure=mdls.DependencyGraph, query_params={"format": format, "color": color}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6407,8 +6593,8 @@ def graph_derived_tables_for_view( path=f"/derived_table/graph/view/{view}", structure=mdls.DependencyGraph, query_params={"models": models, "workspace": workspace}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6439,9 +6625,14 @@ def start_pdt_build( self.get( path=f"/derived_table/{model_name}/{view_name}/start", structure=mdls.MaterializePDT, - query_params={"force_rebuild": force_rebuild, "force_full_incremental": force_full_incremental, "workspace": workspace, "source": source}, - transport_options=transport_options - ) + query_params={ + "force_rebuild": force_rebuild, + "force_full_incremental": force_full_incremental, + "workspace": workspace, + "source": source, + }, + transport_options=transport_options, + ), ) return response @@ -6461,8 +6652,8 @@ def check_pdt_build( self.get( path=f"/derived_table/{materialization_id}/status", structure=mdls.MaterializePDT, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6485,14 +6676,14 @@ def stop_pdt_build( path=f"/derived_table/{materialization_id}/stop", structure=mdls.MaterializePDT, query_params={"source": source}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Folder: Manage Folders + # region Folder: Manage Folders # Search for folders by creator id, parent id, name, etc # @@ -6533,9 +6724,23 @@ def search_folders( self.get( path="/folders/search", structure=Sequence[mdls.Folder], - query_params={"fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "name": name, "id": id, "parent_id": parent_id, "creator_id": creator_id, "filter_or": filter_or, "is_shared_root": is_shared_root, "is_users_root": is_users_root}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "limit": limit, + "offset": offset, + "sorts": sorts, + "name": name, + "id": id, + "parent_id": parent_id, + "creator_id": creator_id, + "filter_or": filter_or, + "is_shared_root": is_shared_root, + "is_users_root": is_users_root, + }, + transport_options=transport_options, + ), ) return response @@ -6558,8 +6763,8 @@ def folder( path=f"/folders/{folder_id}", structure=mdls.Folder, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6581,8 +6786,8 @@ def update_folder( path=f"/folders/{folder_id}", structure=mdls.Folder, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6603,8 +6808,8 @@ def delete_folder( self.delete( path=f"/folders/{folder_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6626,8 +6831,8 @@ def all_folders( path="/folders", structure=Sequence[mdls.FolderBase], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6649,8 +6854,8 @@ def create_folder( path="/folders", structure=mdls.Folder, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6682,9 +6887,16 @@ def folder_children( self.get( path=f"/folders/{folder_id}/children", structure=Sequence[mdls.Folder], - query_params={"fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "limit": limit, + "offset": offset, + "sorts": sorts, + }, + transport_options=transport_options, + ), ) return response @@ -6711,8 +6923,8 @@ def folder_children_search( path=f"/folders/{folder_id}/children/search", structure=Sequence[mdls.Folder], query_params={"fields": fields, "sorts": sorts, "name": name}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6735,8 +6947,8 @@ def folder_parent( path=f"/folders/{folder_id}/parent", structure=mdls.Folder, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6759,8 +6971,8 @@ def folder_ancestors( path=f"/folders/{folder_id}/ancestors", structure=Sequence[mdls.Folder], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6784,8 +6996,8 @@ def folder_looks( path=f"/folders/{folder_id}/looks", structure=Sequence[mdls.LookWithQuery], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6808,14 +7020,14 @@ def folder_dashboards( path=f"/folders/{folder_id}/dashboards", structure=Sequence[mdls.Dashboard], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Group: Manage Groups + # region Group: Manage Groups # ### Get information about all groups. # @@ -6848,9 +7060,19 @@ def all_groups( self.get( path="/groups", structure=Sequence[mdls.Group], - query_params={"fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "ids": ids, "content_metadata_id": content_metadata_id, "can_add_to_content_metadata": can_add_to_content_metadata}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "limit": limit, + "offset": offset, + "sorts": sorts, + "ids": ids, + "content_metadata_id": content_metadata_id, + "can_add_to_content_metadata": can_add_to_content_metadata, + }, + transport_options=transport_options, + ), ) return response @@ -6872,8 +7094,8 @@ def create_group( structure=mdls.Group, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -6933,9 +7155,20 @@ def search_groups( self.get( path="/groups/search", structure=Sequence[mdls.Group], - query_params={"fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed, "externally_orphaned": externally_orphaned}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "limit": limit, + "offset": offset, + "sorts": sorts, + "filter_or": filter_or, + "id": id, + "name": name, + "external_group_id": external_group_id, + "externally_managed": externally_managed, + "externally_orphaned": externally_orphaned, + }, + transport_options=transport_options, + ), ) return response @@ -6995,9 +7228,20 @@ def search_groups_with_roles( self.get( path="/groups/search/with_roles", structure=Sequence[mdls.GroupSearch], - query_params={"fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed, "externally_orphaned": externally_orphaned}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "limit": limit, + "offset": offset, + "sorts": sorts, + "filter_or": filter_or, + "id": id, + "name": name, + "external_group_id": external_group_id, + "externally_managed": externally_managed, + "externally_orphaned": externally_orphaned, + }, + transport_options=transport_options, + ), ) return response @@ -7058,9 +7302,20 @@ def search_groups_with_hierarchy( self.get( path="/groups/search/with_hierarchy", structure=Sequence[mdls.GroupHierarchy], - query_params={"fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or, "id": id, "name": name, "external_group_id": external_group_id, "externally_managed": externally_managed, "externally_orphaned": externally_orphaned}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "limit": limit, + "offset": offset, + "sorts": sorts, + "filter_or": filter_or, + "id": id, + "name": name, + "external_group_id": external_group_id, + "externally_managed": externally_managed, + "externally_orphaned": externally_orphaned, + }, + transport_options=transport_options, + ), ) return response @@ -7083,8 +7338,8 @@ def group( path=f"/groups/{group_id}", structure=mdls.Group, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7109,8 +7364,8 @@ def update_group( structure=mdls.Group, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7130,8 +7385,8 @@ def delete_group( self.delete( path=f"/groups/{group_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7154,8 +7409,8 @@ def all_group_groups( path=f"/groups/{group_id}/groups", structure=Sequence[mdls.Group], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7178,8 +7433,8 @@ def add_group_group( path=f"/groups/{group_id}/groups", structure=mdls.Group, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7211,9 +7466,16 @@ def all_group_users( self.get( path=f"/groups/{group_id}/users", structure=Sequence[mdls.User], - query_params={"fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "limit": limit, + "offset": offset, + "sorts": sorts, + }, + transport_options=transport_options, + ), ) return response @@ -7236,8 +7498,8 @@ def add_group_user( path=f"/groups/{group_id}/users", structure=mdls.User, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7260,8 +7522,8 @@ def delete_group_user( self.delete( path=f"/groups/{group_id}/users/{user_id}", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7284,8 +7546,8 @@ def delete_group_from_group( self.delete( path=f"/groups/{group_id}/groups/{deleting_group_id}", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7313,8 +7575,8 @@ def update_user_attribute_group_value( path=f"/groups/{group_id}/attribute_values/{user_attribute_id}", structure=mdls.UserAttributeGroupValue, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7337,14 +7599,14 @@ def delete_user_attribute_group_value( self.delete( path=f"/groups/{group_id}/attribute_values/{user_attribute_id}", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Homepage: Manage Homepage + # region Homepage: Manage Homepage # ### Get information about the primary homepage's sections. # @@ -7362,14 +7624,14 @@ def all_primary_homepage_sections( path="/primary_homepage_sections", structure=Sequence[mdls.HomepageSection], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Integration: Manage Integrations + # region Integration: Manage Integrations # ### Get information about all Integration Hubs. # @@ -7387,8 +7649,8 @@ def all_integration_hubs( path="/integration_hubs", structure=Sequence[mdls.IntegrationHub], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7412,8 +7674,8 @@ def create_integration_hub( structure=mdls.IntegrationHub, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7436,8 +7698,8 @@ def integration_hub( path=f"/integration_hubs/{integration_hub_id}", structure=mdls.IntegrationHub, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7464,8 +7726,8 @@ def update_integration_hub( structure=mdls.IntegrationHub, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7485,8 +7747,8 @@ def delete_integration_hub( self.delete( path=f"/integration_hubs/{integration_hub_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7509,8 +7771,8 @@ def get_integration_hub_health( path=f"/integration_hubs/{integration_hub_id}/health", structure=mdls.IntegrationHubHealthResult, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7530,8 +7792,8 @@ def accept_integration_hub_legal_agreement( self.post( path=f"/integration_hubs/{integration_hub_id}/accept_legal_agreement", structure=mdls.IntegrationHub, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7552,9 +7814,12 @@ def all_integrations( self.get( path="/integrations", structure=Sequence[mdls.Integration], - query_params={"fields": fields, "integration_hub_id": integration_hub_id}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "integration_hub_id": integration_hub_id, + }, + transport_options=transport_options, + ), ) return response @@ -7577,8 +7842,8 @@ def integration( path=f"/integrations/{integration_id}", structure=mdls.Integration, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7603,8 +7868,8 @@ def update_integration( structure=mdls.Integration, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7626,8 +7891,8 @@ def fetch_integration_form( path=f"/integrations/{integration_id}/form", structure=mdls.DataActionForm, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7647,14 +7912,14 @@ def test_integration( self.post( path=f"/integrations/{integration_id}/test", structure=mdls.IntegrationTestResult, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region KeyDriverAnalysis: Run Key Driver Analysis + # region KeyDriverAnalysis: Run Key Driver Analysis # ### Analyze Key Drivers # @@ -7680,14 +7945,14 @@ def run_key_driver_analysis( path="/internal/kda/analyze", structure=mdls.KdaResponsePayload, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Look: Run and Manage Looks + # region Look: Run and Manage Looks # ### Get information about all active Looks # @@ -7711,8 +7976,8 @@ def all_looks( path="/looks", structure=Sequence[mdls.Look], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7740,8 +8005,8 @@ def create_look( structure=mdls.LookWithQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7820,9 +8085,28 @@ def search_looks( self.get( path="/looks/search", structure=Sequence[mdls.Look], - query_params={"id": id, "title": title, "description": description, "content_favorite_id": content_favorite_id, "folder_id": folder_id, "user_id": user_id, "view_count": view_count, "deleted": deleted, "query_id": query_id, "curate": curate, "last_viewed_at": last_viewed_at, "fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "filter_or": filter_or}, - transport_options=transport_options - ) + query_params={ + "id": id, + "title": title, + "description": description, + "content_favorite_id": content_favorite_id, + "folder_id": folder_id, + "user_id": user_id, + "view_count": view_count, + "deleted": deleted, + "query_id": query_id, + "curate": curate, + "last_viewed_at": last_viewed_at, + "fields": fields, + "page": page, + "per_page": per_page, + "limit": limit, + "offset": offset, + "sorts": sorts, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -7847,8 +8131,8 @@ def look( path=f"/looks/{look_id}", structure=mdls.LookWithQuery, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7892,8 +8176,8 @@ def update_look( structure=mdls.LookWithQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7919,8 +8203,8 @@ def delete_look( self.delete( path=f"/looks/{look_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -7985,9 +8269,22 @@ def run_look( self.get( path=f"/looks/{look_id}/run/{result_format}", structure=Union[str, bytes], # type: ignore - query_params={"limit": limit, "apply_formatting": apply_formatting, "apply_vis": apply_vis, "cache": cache, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links, "force_production": force_production, "cache_only": cache_only, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts, "server_table_calcs": server_table_calcs}, - transport_options=transport_options - ) + query_params={ + "limit": limit, + "apply_formatting": apply_formatting, + "apply_vis": apply_vis, + "cache": cache, + "image_width": image_width, + "image_height": image_height, + "generate_drill_links": generate_drill_links, + "force_production": force_production, + "cache_only": cache_only, + "path_prefix": path_prefix, + "rebuild_pdts": rebuild_pdts, + "server_table_calcs": server_table_calcs, + }, + transport_options=transport_options, + ), ) return response @@ -8016,8 +8313,8 @@ def copy_look( path=f"/looks/{look_id}/copy", structure=mdls.LookWithQuery, query_params={"folder_id": folder_id}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8045,8 +8342,8 @@ def move_look( path=f"/looks/{look_id}/move", structure=mdls.LookWithQuery, query_params={"folder_id": folder_id}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8068,14 +8365,14 @@ def update_look_certification( path=f"/looks/{look_id}/certification", structure=mdls.Look, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region LookmlModel: Manage LookML Models + # region LookmlModel: Manage LookML Models # ### Get information about all lookml models. # @@ -8104,9 +8401,17 @@ def all_lookml_models( self.get( path="/lookml_models", structure=Sequence[mdls.LookmlModel], - query_params={"fields": fields, "limit": limit, "offset": offset, "exclude_empty": exclude_empty, "exclude_hidden": exclude_hidden, "include_internal": include_internal, "include_self_service": include_self_service}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "limit": limit, + "offset": offset, + "exclude_empty": exclude_empty, + "exclude_hidden": exclude_hidden, + "include_internal": include_internal, + "include_self_service": include_self_service, + }, + transport_options=transport_options, + ), ) return response @@ -8125,8 +8430,8 @@ def create_lookml_model( path="/lookml_models", structure=mdls.LookmlModel, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8149,8 +8454,8 @@ def lookml_model( path=f"/lookml_models/{lookml_model_name}", structure=mdls.LookmlModel, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8172,8 +8477,8 @@ def update_lookml_model( path=f"/lookml_models/{lookml_model_name}", structure=mdls.LookmlModel, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8193,8 +8498,8 @@ def delete_lookml_model( self.delete( path=f"/lookml_models/{lookml_model_name}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8221,15 +8526,18 @@ def lookml_model_explore( self.get( path=f"/lookml_models/{lookml_model_name}/explores/{explore_name}", structure=mdls.LookmlModelExplore, - query_params={"fields": fields, "add_drills_metadata": add_drills_metadata}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "add_drills_metadata": add_drills_metadata, + }, + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Metadata: Connection Metadata Features + # region Metadata: Connection Metadata Features # ### Field name suggestions for a model and view # @@ -8276,8 +8584,8 @@ def model_fieldname_suggestions( path=f"/models/{model_name}/views/{view_name}/fields/{field_name}/suggestions", structure=mdls.ModelFieldSuggestions, query_params={"term": term, "filters": filters}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8297,8 +8605,8 @@ def get_model( self.get( path=f"/models/{model_name}", structure=mdls.Model, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8326,8 +8634,8 @@ def connection_databases( self.get( path=f"/connections/{connection_name}/databases", structure=Sequence[str], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8352,8 +8660,8 @@ def connection_features( path=f"/connections/{connection_name}/features", structure=mdls.ConnectionFeatures, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8380,8 +8688,8 @@ def connection_schemas( path=f"/connections/{connection_name}/schemas", structure=Sequence[mdls.Schema], query_params={"database": database, "cache": cache, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8418,9 +8726,16 @@ def connection_tables( self.get( path=f"/connections/{connection_name}/tables", structure=Sequence[mdls.SchemaTables], - query_params={"database": database, "schema_name": schema_name, "cache": cache, "fields": fields, "table_filter": table_filter, "table_limit": table_limit}, - transport_options=transport_options - ) + query_params={ + "database": database, + "schema_name": schema_name, + "cache": cache, + "fields": fields, + "table_filter": table_filter, + "table_limit": table_limit, + }, + transport_options=transport_options, + ), ) return response @@ -8452,9 +8767,16 @@ def connection_columns( self.get( path=f"/connections/{connection_name}/columns", structure=Sequence[mdls.SchemaColumns], - query_params={"database": database, "schema_name": schema_name, "cache": cache, "table_limit": table_limit, "table_names": table_names, "fields": fields}, - transport_options=transport_options - ) + query_params={ + "database": database, + "schema_name": schema_name, + "cache": cache, + "table_limit": table_limit, + "table_names": table_names, + "fields": fields, + }, + transport_options=transport_options, + ), ) return response @@ -8481,8 +8803,8 @@ def connection_search_columns( path=f"/connections/{connection_name}/search_columns", structure=Sequence[mdls.ColumnSearch], query_params={"column_name": column_name, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8512,14 +8834,14 @@ def connection_cost_estimate( structure=mdls.CostEstimate, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Project: Manage Projects + # region Project: Manage Projects # ### Fetches a CI Run. # @@ -8545,8 +8867,8 @@ def get_ci_run( path=f"/projects/{project_id}/ci/runs/{run_id}", structure=mdls.ProjectRun, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8573,8 +8895,8 @@ def create_ci_run( structure=mdls.CreateCIRunResponse, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8599,8 +8921,8 @@ def create_continuous_integration_run( structure=mdls.CIRun, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8626,8 +8948,8 @@ def get_continuous_integration_run( path=f"/projects/{project_id}/continuous_integration/runs/{run_id}", structure=mdls.CIRun, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8656,8 +8978,8 @@ def lock_all( path=f"/projects/{project_id}/manifest/lock_all", structure=str, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8679,8 +9001,8 @@ def all_git_branches( self.get( path=f"/projects/{project_id}/git_branches", structure=Sequence[mdls.GitBranch], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8702,8 +9024,8 @@ def git_branch( self.get( path=f"/projects/{project_id}/git_branch", structure=mdls.GitBranch, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8733,8 +9055,8 @@ def update_git_branch( path=f"/projects/{project_id}/git_branch", structure=mdls.GitBranch, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8763,8 +9085,8 @@ def create_git_branch( path=f"/projects/{project_id}/git_branch", structure=mdls.GitBranch, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8789,8 +9111,8 @@ def find_git_branch( self.get( path=f"/projects/{project_id}/git_branch/{branch_name}", structure=mdls.GitBranch, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8815,8 +9137,8 @@ def delete_git_branch( self.delete( path=f"/projects/{project_id}/git_branch/{branch_name}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8849,8 +9171,8 @@ def deploy_ref_to_production( path=f"/projects/{project_id}/deploy_ref_to_production", structure=str, query_params={"branch": branch, "ref": ref}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8880,8 +9202,8 @@ def async_deploy_ref_to_production( path=f"/projects/{project_id}/async_deploy_ref_to_production", structure=mdls.AsyncDeployResponse, query_params={"branch": branch, "ref": ref}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8904,8 +9226,8 @@ def async_deploy_status( self.get( path=f"/projects/{project_id}/deploy_status/{deployment_id}", structure=mdls.DeployStatusResponse, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8936,8 +9258,8 @@ def deploy_to_production( self.post( path=f"/projects/{project_id}/deploy_to_production", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8959,8 +9281,8 @@ def reset_project_to_production( self.post( path=f"/projects/{project_id}/reset_to_production", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -8982,8 +9304,8 @@ def reset_project_to_remote( self.post( path=f"/projects/{project_id}/reset_to_remote", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9005,8 +9327,8 @@ def all_projects( path="/projects", structure=Sequence[mdls.Project], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9031,8 +9353,8 @@ def create_project( path="/projects", structure=mdls.Project, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9057,8 +9379,8 @@ def project( path=f"/projects/{project_id}", structure=mdls.Project, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9108,8 +9430,8 @@ def update_project( structure=mdls.Project, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9131,8 +9453,8 @@ def manifest( self.get( path=f"/projects/{project_id}/manifest", structure=mdls.Manifest, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9154,8 +9476,8 @@ def git_deploy_key( self.get( path=f"/projects/{project_id}/git/deploy_key", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9183,8 +9505,8 @@ def create_git_deploy_key( self.post( path=f"/projects/{project_id}/git/deploy_key", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9218,8 +9540,8 @@ def project_validation_results( path=f"/projects/{project_id}/validate", structure=mdls.ProjectValidationCache, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9250,8 +9572,8 @@ def validate_project( path=f"/projects/{project_id}/validate", structure=mdls.ProjectValidation, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9276,8 +9598,8 @@ def project_workspace( path=f"/projects/{project_id}/current_workspace", structure=mdls.ProjectWorkspace, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9302,8 +9624,8 @@ def all_project_files( path=f"/projects/{project_id}/files", structure=Sequence[mdls.ProjectFile], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9330,8 +9652,8 @@ def project_file( path=f"/projects/{project_id}/files/file", structure=mdls.ProjectFile, query_params={"file_id": file_id, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9360,8 +9682,8 @@ def all_git_connection_tests( path=f"/projects/{project_id}/git_connection_tests", structure=Sequence[mdls.GitConnectionTest], query_params={"remote_url": remote_url}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9394,9 +9716,12 @@ def run_git_connection_test( self.get( path=f"/projects/{project_id}/git_connection_tests/{test_id}", structure=mdls.GitConnectionTestResult, - query_params={"remote_url": remote_url, "use_production": use_production}, - transport_options=transport_options - ) + query_params={ + "remote_url": remote_url, + "use_production": use_production, + }, + transport_options=transport_options, + ), ) return response @@ -9423,8 +9748,8 @@ def all_lookml_tests( path=f"/projects/{project_id}/lookml_tests", structure=Sequence[mdls.LookmlTest], query_params={"file_id": file_id}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9453,8 +9778,8 @@ def run_lookml_test( path=f"/projects/{project_id}/lookml_tests/run", structure=Sequence[mdls.LookmlTestResult], query_params={"file_id": file_id, "test": test, "model": model}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9481,10 +9806,87 @@ def tag_ref( self.post( path=f"/projects/{project_id}/tag", structure=mdls.Project, - query_params={"commit_sha": commit_sha, "tag_name": tag_name, "tag_message": tag_message}, + query_params={ + "commit_sha": commit_sha, + "tag_name": tag_name, + "tag_message": tag_message, + }, + body=body, + transport_options=transport_options, + ), + ) + return response + + # ### Initiate Git Diagnosis Suite + # + # POST /projects/{project_id}/git_diagnostic_report -> mdls.GitDiagnosticReport + def create_git_diagnostic_report( + self, + # Looker Project ID + project_id: str, + body: mdls.WriteGitDiagnosticReport, + transport_options: Optional[transport.TransportOptions] = None, + ) -> mdls.GitDiagnosticReport: + """Initiate Git Diagnosis""" + project_id = self.encode_path_param(project_id) + response = cast( + mdls.GitDiagnosticReport, + self.post( + path=f"/projects/{project_id}/git_diagnostic_report", + structure=mdls.GitDiagnosticReport, + body=body, + transport_options=transport_options, + ), + ) + return response + + # ### Retrieve Live Git Diagnostic Suite Execution Status + # + # GET /projects/{project_id}/git_diagnostic_report/{report_id} -> mdls.GitDiagnosticReport + def get_git_diagnostic_report( + self, + # Looker Project ID + project_id: str, + # Report ID + report_id: str, + transport_options: Optional[transport.TransportOptions] = None, + ) -> mdls.GitDiagnosticReport: + """Get Live Git Diagnosis""" + project_id = self.encode_path_param(project_id) + report_id = self.encode_path_param(report_id) + response = cast( + mdls.GitDiagnosticReport, + self.get( + path=f"/projects/{project_id}/git_diagnostic_report/{report_id}", + structure=mdls.GitDiagnosticReport, + transport_options=transport_options, + ), + ) + return response + + # ### Repair Git Configuration Issues + # + # POST /projects/{project_id}/git_diagnostic_report/{report_id}/repair -> mdls.GitDiagnosticReport + def repair_git_diagnostic_report( + self, + # Looker Project ID + project_id: str, + # Report ID + report_id: str, + body: mdls.WriteGitDiagnosticReport, + transport_options: Optional[transport.TransportOptions] = None, + ) -> mdls.GitDiagnosticReport: + """Repair Git Configuration""" + project_id = self.encode_path_param(project_id) + report_id = self.encode_path_param(report_id) + response = cast( + mdls.GitDiagnosticReport, + self.post( + path=f"/projects/{project_id}/git_diagnostic_report/{report_id}/repair", + structure=mdls.GitDiagnosticReport, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9514,8 +9916,8 @@ def update_repository_credential( path=f"/projects/{root_project_id}/credential/{credential_id}", structure=mdls.RepositoryCredential, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9543,8 +9945,8 @@ def delete_repository_credential( self.delete( path=f"/projects/{root_project_id}/credential/{credential_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9566,14 +9968,14 @@ def get_all_repository_credentials( self.get( path=f"/projects/{root_project_id}/credentials", structure=Sequence[mdls.RepositoryCredential], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Query: Run and Manage Queries + # region Query: Run and Manage Queries # ### Create an async query task # @@ -9616,10 +10018,22 @@ def create_query_task( self.post( path="/query_tasks", structure=mdls.QueryTask, - query_params={"limit": limit, "apply_formatting": apply_formatting, "apply_vis": apply_vis, "cache": cache, "generate_drill_links": generate_drill_links, "force_production": force_production, "cache_only": cache_only, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts, "server_table_calcs": server_table_calcs, "fields": fields}, + query_params={ + "limit": limit, + "apply_formatting": apply_formatting, + "apply_vis": apply_vis, + "cache": cache, + "generate_drill_links": generate_drill_links, + "force_production": force_production, + "cache_only": cache_only, + "path_prefix": path_prefix, + "rebuild_pdts": rebuild_pdts, + "server_table_calcs": server_table_calcs, + "fields": fields, + }, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9645,8 +10059,8 @@ def query_task_multi_results( path="/query_tasks/multi_results", structure=MutableMapping[str, Any], query_params={"query_task_ids": query_task_ids}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9675,8 +10089,8 @@ def query_task( path=f"/query_tasks/{query_task_id}", structure=mdls.QueryTask, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9718,8 +10132,8 @@ def query_task_results( self.get( path=f"/query_tasks/{query_task_id}/results", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9758,8 +10172,8 @@ def query( path=f"/queries/{query_id}", structure=mdls.Query, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9798,8 +10212,8 @@ def query_for_slug( path=f"/queries/slug/{slug}", structure=mdls.Query, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9828,8 +10242,8 @@ def create_query( structure=mdls.Query, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -9897,9 +10311,22 @@ def run_query( self.get( path=f"/queries/{query_id}/run/{result_format}", structure=Union[str, bytes], # type: ignore - query_params={"limit": limit, "apply_formatting": apply_formatting, "apply_vis": apply_vis, "cache": cache, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links, "force_production": force_production, "cache_only": cache_only, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts, "server_table_calcs": server_table_calcs}, - transport_options=transport_options - ) + query_params={ + "limit": limit, + "apply_formatting": apply_formatting, + "apply_vis": apply_vis, + "cache": cache, + "image_width": image_width, + "image_height": image_height, + "generate_drill_links": generate_drill_links, + "force_production": force_production, + "cache_only": cache_only, + "path_prefix": path_prefix, + "rebuild_pdts": rebuild_pdts, + "server_table_calcs": server_table_calcs, + }, + transport_options=transport_options, + ), ) return response @@ -9994,10 +10421,23 @@ def run_inline_query( self.post( path=f"/queries/run/{result_format}", structure=Union[str, bytes], # type: ignore - query_params={"limit": limit, "apply_formatting": apply_formatting, "apply_vis": apply_vis, "cache": cache, "image_width": image_width, "image_height": image_height, "generate_drill_links": generate_drill_links, "force_production": force_production, "cache_only": cache_only, "path_prefix": path_prefix, "rebuild_pdts": rebuild_pdts, "server_table_calcs": server_table_calcs}, - body=body, - transport_options=transport_options - ) + query_params={ + "limit": limit, + "apply_formatting": apply_formatting, + "apply_vis": apply_vis, + "cache": cache, + "image_width": image_width, + "image_height": image_height, + "generate_drill_links": generate_drill_links, + "force_production": force_production, + "cache_only": cache_only, + "path_prefix": path_prefix, + "rebuild_pdts": rebuild_pdts, + "server_table_calcs": server_table_calcs, + }, + body=body, + transport_options=transport_options, + ), ) return response @@ -10075,8 +10515,8 @@ def run_url_encoded_query( self.get( path=f"/queries/models/{model_name}/views/{view_name}/run/{result_format}", structure=Union[str, bytes], # type: ignore - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10101,8 +10541,8 @@ def merge_query( path=f"/merge_queries/{merge_query_id}", structure=mdls.MergeQuery, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10140,8 +10580,8 @@ def create_merge_query( structure=mdls.MergeQuery, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10158,8 +10598,8 @@ def all_running_queries( self.get( path="/running_queries", structure=Sequence[mdls.RunningQueries], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10179,8 +10619,8 @@ def kill_query( self.delete( path=f"/running_queries/{query_task_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10201,8 +10641,8 @@ def create_sql_query( path="/sql_queries", structure=mdls.SqlQuery, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10222,8 +10662,8 @@ def sql_query( self.get( path=f"/sql_queries/{slug}", structure=mdls.SqlQuery, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10249,14 +10689,14 @@ def run_sql_query( path=f"/sql_queries/{slug}/run/{result_format}", structure=str, query_params={"download": download}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region RenderTask: Manage Render Tasks + # region RenderTask: Manage Render Tasks # ### Create a new task to render a look to an image. # @@ -10288,8 +10728,8 @@ def create_look_render_task( path=f"/render_tasks/looks/{look_id}/{result_format}", structure=mdls.RenderTask, query_params={"width": width, "height": height, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10323,8 +10763,8 @@ def create_query_render_task( path=f"/render_tasks/queries/{query_id}/{result_format}", structure=mdls.RenderTask, query_params={"width": width, "height": height, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10366,10 +10806,18 @@ def create_dashboard_render_task( self.post( path=f"/render_tasks/dashboards/{dashboard_id}/{result_format}", structure=mdls.RenderTask, - query_params={"width": width, "height": height, "fields": fields, "pdf_paper_size": pdf_paper_size, "pdf_landscape": pdf_landscape, "long_tables": long_tables, "theme": theme}, + query_params={ + "width": width, + "height": height, + "fields": fields, + "pdf_paper_size": pdf_paper_size, + "pdf_landscape": pdf_landscape, + "long_tables": long_tables, + "theme": theme, + }, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10396,8 +10844,8 @@ def render_task( path=f"/render_tasks/{render_task_id}", structure=mdls.RenderTask, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10433,8 +10881,8 @@ def render_task_results( self.get( path=f"/render_tasks/{render_task_id}/results", structure=bytes, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10468,14 +10916,14 @@ def create_dashboard_element_render_task( path=f"/render_tasks/dashboard_elements/{dashboard_element_id}/{result_format}", structure=mdls.RenderTask, query_params={"width": width, "height": height, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Report: Report + # region Report: Report # ### Search Reports # @@ -10531,15 +10979,25 @@ def search_reports( self.get( path="/reports/search", structure=Sequence[mdls.Report], - query_params={"folder_id": folder_id, "favorite": favorite, "recent": recent, "id": id, "title": title, "sorts": sorts, "limit": limit, "fields": fields, "next_page_token": next_page_token}, - transport_options=transport_options - ) + query_params={ + "folder_id": folder_id, + "favorite": favorite, + "recent": recent, + "id": id, + "title": title, + "sorts": sorts, + "limit": limit, + "fields": fields, + "next_page_token": next_page_token, + }, + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Role: Manage Roles + # region Role: Manage Roles # ### Search model sets # Returns all model set records that match the given search criteria. @@ -10595,9 +11053,20 @@ def search_model_sets( self.get( path="/model_sets/search", structure=Sequence[mdls.ModelSet], - query_params={"fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "name": name, "all_access": all_access, "built_in": built_in, "filter_or": filter_or, "models": models}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "limit": limit, + "offset": offset, + "sorts": sorts, + "id": id, + "name": name, + "all_access": all_access, + "built_in": built_in, + "filter_or": filter_or, + "models": models, + }, + transport_options=transport_options, + ), ) return response @@ -10620,8 +11089,8 @@ def model_set( path=f"/model_sets/{model_set_id}", structure=mdls.ModelSet, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10643,8 +11112,8 @@ def update_model_set( path=f"/model_sets/{model_set_id}", structure=mdls.ModelSet, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10664,8 +11133,8 @@ def delete_model_set( self.delete( path=f"/model_sets/{model_set_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10685,8 +11154,8 @@ def all_model_sets( path="/model_sets", structure=Sequence[mdls.ModelSet], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10705,8 +11174,8 @@ def create_model_set( path="/model_sets", structure=mdls.ModelSet, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10723,8 +11192,8 @@ def all_permissions( self.get( path="/permissions", structure=Sequence[mdls.Permission], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10782,9 +11251,20 @@ def search_permission_sets( self.get( path="/permission_sets/search", structure=Sequence[mdls.PermissionSet], - query_params={"fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "name": name, "all_access": all_access, "built_in": built_in, "filter_or": filter_or, "permissions": permissions}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "limit": limit, + "offset": offset, + "sorts": sorts, + "id": id, + "name": name, + "all_access": all_access, + "built_in": built_in, + "filter_or": filter_or, + "permissions": permissions, + }, + transport_options=transport_options, + ), ) return response @@ -10807,8 +11287,8 @@ def permission_set( path=f"/permission_sets/{permission_set_id}", structure=mdls.PermissionSet, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10831,8 +11311,8 @@ def update_permission_set( path=f"/permission_sets/{permission_set_id}", structure=mdls.PermissionSet, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10852,8 +11332,8 @@ def delete_permission_set( self.delete( path=f"/permission_sets/{permission_set_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10873,8 +11353,8 @@ def all_permission_sets( path="/permission_sets", structure=Sequence[mdls.PermissionSet], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10894,8 +11374,8 @@ def create_permission_set( path="/permission_sets", structure=mdls.PermissionSet, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -10918,9 +11398,13 @@ def all_roles( self.get( path="/roles", structure=Sequence[mdls.Role], - query_params={"fields": fields, "ids": ids, "get_all_support_roles": get_all_support_roles}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "ids": ids, + "get_all_support_roles": get_all_support_roles, + }, + transport_options=transport_options, + ), ) return response @@ -10939,8 +11423,8 @@ def create_role( path="/roles", structure=mdls.Role, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11000,9 +11484,20 @@ def search_roles( self.get( path="/roles/search", structure=Sequence[mdls.Role], - query_params={"fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "model_set_ids": model_set_ids, "permission_set_ids": permission_set_ids, "name": name, "built_in": built_in, "filter_or": filter_or}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "limit": limit, + "offset": offset, + "sorts": sorts, + "id": id, + "model_set_ids": model_set_ids, + "permission_set_ids": permission_set_ids, + "name": name, + "built_in": built_in, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -11059,9 +11554,18 @@ def search_roles_with_user_count( self.get( path="/roles/search/with_user_count", structure=Sequence[mdls.RoleSearch], - query_params={"fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "name": name, "built_in": built_in, "filter_or": filter_or}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "limit": limit, + "offset": offset, + "sorts": sorts, + "id": id, + "name": name, + "built_in": built_in, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -11081,8 +11585,8 @@ def role( self.get( path=f"/roles/{role_id}", structure=mdls.Role, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11104,8 +11608,8 @@ def update_role( path=f"/roles/{role_id}", structure=mdls.Role, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11125,8 +11629,8 @@ def delete_role( self.delete( path=f"/roles/{role_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11149,8 +11653,8 @@ def role_groups( path=f"/roles/{role_id}/groups", structure=Sequence[mdls.Group], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11174,8 +11678,8 @@ def set_role_groups( path=f"/roles/{role_id}/groups", structure=Sequence[mdls.Group], body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11199,9 +11703,12 @@ def role_users( self.get( path=f"/roles/{role_id}/users", structure=Sequence[mdls.User], - query_params={"fields": fields, "direct_association_only": direct_association_only}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "direct_association_only": direct_association_only, + }, + transport_options=transport_options, + ), ) return response @@ -11223,14 +11730,14 @@ def set_role_users( path=f"/roles/{role_id}/users", structure=Sequence[mdls.User], body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region ScheduledPlan: Manage Scheduled Plans + # region ScheduledPlan: Manage Scheduled Plans # ### Get Scheduled Plans for a Space # @@ -11253,8 +11760,8 @@ def scheduled_plans_for_space( path=f"/scheduled_plans/space/{space_id}", structure=Sequence[mdls.ScheduledPlan], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11279,8 +11786,8 @@ def scheduled_plan( path=f"/scheduled_plans/{scheduled_plan_id}", structure=mdls.ScheduledPlan, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11343,8 +11850,8 @@ def update_scheduled_plan( path=f"/scheduled_plans/{scheduled_plan_id}", structure=mdls.ScheduledPlan, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11368,8 +11875,8 @@ def delete_scheduled_plan( self.delete( path=f"/scheduled_plans/{scheduled_plan_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11402,9 +11909,13 @@ def all_scheduled_plans( self.get( path="/scheduled_plans", structure=Sequence[mdls.ScheduledPlan], - query_params={"user_id": user_id, "fields": fields, "all_users": all_users}, - transport_options=transport_options - ) + query_params={ + "user_id": user_id, + "fields": fields, + "all_users": all_users, + }, + transport_options=transport_options, + ), ) return response @@ -11480,8 +11991,8 @@ def create_scheduled_plan( path="/scheduled_plans", structure=mdls.ScheduledPlan, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11536,8 +12047,8 @@ def scheduled_plan_run_once( path="/scheduled_plans/run_once", structure=mdls.ScheduledPlan, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11596,9 +12107,26 @@ def search_scheduled_plans( self.get( path="/scheduled_plans/search", structure=Sequence[mdls.ScheduledPlan], - query_params={"user_id": user_id, "fields": fields, "all_users": all_users, "limit": limit, "offset": offset, "sorts": sorts, "name": name, "user_first_name": user_first_name, "user_last_name": user_last_name, "dashboard_id": dashboard_id, "look_id": look_id, "lookml_dashboard_id": lookml_dashboard_id, "recipient": recipient, "destination_type": destination_type, "delivery_format": delivery_format, "filter_or": filter_or}, - transport_options=transport_options - ) + query_params={ + "user_id": user_id, + "fields": fields, + "all_users": all_users, + "limit": limit, + "offset": offset, + "sorts": sorts, + "name": name, + "user_first_name": user_first_name, + "user_last_name": user_last_name, + "dashboard_id": dashboard_id, + "look_id": look_id, + "lookml_dashboard_id": lookml_dashboard_id, + "recipient": recipient, + "destination_type": destination_type, + "delivery_format": delivery_format, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -11634,9 +12162,13 @@ def scheduled_plans_for_look( self.get( path=f"/scheduled_plans/look/{look_id}", structure=Sequence[mdls.ScheduledPlan], - query_params={"user_id": user_id, "fields": fields, "all_users": all_users}, - transport_options=transport_options - ) + query_params={ + "user_id": user_id, + "fields": fields, + "all_users": all_users, + }, + transport_options=transport_options, + ), ) return response @@ -11672,9 +12204,13 @@ def scheduled_plans_for_dashboard( self.get( path=f"/scheduled_plans/dashboard/{dashboard_id}", structure=Sequence[mdls.ScheduledPlan], - query_params={"user_id": user_id, "all_users": all_users, "fields": fields}, - transport_options=transport_options - ) + query_params={ + "user_id": user_id, + "all_users": all_users, + "fields": fields, + }, + transport_options=transport_options, + ), ) return response @@ -11710,9 +12246,13 @@ def scheduled_plans_for_lookml_dashboard( self.get( path=f"/scheduled_plans/lookml_dashboard/{lookml_dashboard_id}", structure=Sequence[mdls.ScheduledPlan], - query_params={"user_id": user_id, "fields": fields, "all_users": all_users}, - transport_options=transport_options - ) + query_params={ + "user_id": user_id, + "fields": fields, + "all_users": all_users, + }, + transport_options=transport_options, + ), ) return response @@ -11780,14 +12320,14 @@ def scheduled_plan_run_once_by_id( path=f"/scheduled_plans/{scheduled_plan_id}/run_once", structure=mdls.ScheduledPlan, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region SelfService: Self Service Models + # region SelfService: Self Service Models # ### Get Allowed Connections under advanced connection governance # @@ -11808,8 +12348,29 @@ def get_self_service_model_allowed_connections( path="/self_service_models/allowed_connections", structure=Sequence[str], query_params={"google_sheets": google_sheets}, - transport_options=transport_options - ) + transport_options=transport_options, + ), + ) + return response + + # ### Get Generated LookML for a Self Service Model + # + # GET /self_service_models/{model_name}/lookml -> str + def get_self_service_model_lookml( + self, + # Name of self service model + model_name: str, + transport_options: Optional[transport.TransportOptions] = None, + ) -> str: + """Get Self Service LookML""" + model_name = self.encode_path_param(model_name) + response = cast( + str, + self.get( + path=f"/self_service_models/{model_name}/lookml", + structure=str, + transport_options=transport_options, + ), ) return response @@ -11831,14 +12392,14 @@ def update_self_service_explore_certification( path=f"/self_service_models/{model_name}/certification", structure=mdls.Certification, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Session: Session Information + # region Session: Session Information # ### Get API Session # @@ -11855,8 +12416,8 @@ def session( self.get( path="/session", structure=mdls.ApiSession, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11894,14 +12455,14 @@ def update_session( path="/session", structure=mdls.ApiSession, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region SqlInterfaceQuery: Run and Manage SQL Interface Queries + # region SqlInterfaceQuery: Run and Manage SQL Interface Queries # ### Handles Avatica RPC metadata requests for SQL Interface queries # @@ -11919,8 +12480,8 @@ def sql_interface_metadata( path="/sql_interface_queries/metadata", structure=mdls.SqlInterfaceQueryMetadata, query_params={"avatica_request": avatica_request}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11952,8 +12513,8 @@ def run_sql_interface_query( self.get( path=f"/sql_interface_queries/{query_id}/run/{result_format}", structure=mdls.JsonBi, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -11979,14 +12540,14 @@ def create_sql_interface_query( path="/sql_interface_queries", structure=mdls.SqlInterfaceQuery, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Theme: Manage Themes + # region Theme: Manage Themes # ### Get an array of all existing themes # @@ -12010,8 +12571,8 @@ def all_themes( path="/themes", structure=Sequence[mdls.Theme], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12044,8 +12605,8 @@ def create_theme( path="/themes", structure=mdls.Theme, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12119,14 +12680,27 @@ def search_themes( self.get( path="/themes/search", structure=Sequence[mdls.Theme], - query_params={"id": id, "name": name, "begin_at": begin_at, "end_at": end_at, "limit": limit, "offset": offset, "sorts": sorts, "fields": fields, "filter_or": filter_or, "theme_type": theme_type}, - transport_options=transport_options - ) + query_params={ + "id": id, + "name": name, + "begin_at": begin_at, + "end_at": end_at, + "limit": limit, + "offset": offset, + "sorts": sorts, + "fields": fields, + "filter_or": filter_or, + "theme_type": theme_type, + }, + transport_options=transport_options, + ), ) return response # ### Get the default theme # + # This endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead. + # # Returns the active theme object set as the default. # # The **default** theme name can be set in the UI on the Admin|Theme UI page @@ -12147,13 +12721,15 @@ def default_theme( path="/themes/default", structure=mdls.Theme, query_params={"ts": ts}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response # ### Set the global default theme by theme name # + # This endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead. + # # Only Admin users can call this function. # # Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. @@ -12178,8 +12754,72 @@ def set_default_theme( path="/themes/default", structure=mdls.Theme, query_params={"name": name}, - transport_options=transport_options - ) + transport_options=transport_options, + ), + ) + return response + + # ### Get the default theme + # + # Returns the active theme object set as the default. + # + # The **default** theme name can be set in the UI on the Admin|Theme UI page + # + # The optional `ts` parameter can specify a different timestamp than "now." If specified, it returns the default theme at the time indicated. + # + # The optional `theme_type` parameter can specify the theme type to select for. + # + # GET /themes/default_theme -> mdls.Theme + def default_theme_by_type( + self, + # Theme type. + theme_type: str, + # Timestamp representing the target datetime for the active period. Defaults to 'now' + ts: Optional[datetime.datetime] = None, + transport_options: Optional[transport.TransportOptions] = None, + ) -> mdls.Theme: + """Get Default Theme (with type)""" + response = cast( + mdls.Theme, + self.get( + path="/themes/default_theme", + structure=mdls.Theme, + query_params={"ts": ts, "theme_type": theme_type}, + transport_options=transport_options, + ), + ) + return response + + # ### Set the global default theme by theme name + # + # Only Admin users can call this function. + # + # Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. + # + # [Create Theme](#!/Theme/create) has detailed information on rules for default and active themes + # + # Returns the new specified default theme object. + # + # The optional `theme_type` parameter can specify the theme type to select for. + # + # PUT /themes/default_theme -> mdls.Theme + def set_default_theme_by_type( + self, + # Name of theme to set as default + name: str, + # Theme type. + theme_type: str, + transport_options: Optional[transport.TransportOptions] = None, + ) -> mdls.Theme: + """Set Default Theme (with type)""" + response = cast( + mdls.Theme, + self.put( + path="/themes/default_theme", + structure=mdls.Theme, + query_params={"name": name, "theme_type": theme_type}, + transport_options=transport_options, + ), ) return response @@ -12200,6 +12840,8 @@ def active_themes( name: Optional[str] = None, # Timestamp representing the target datetime for the active period. Defaults to 'now' ts: Optional[datetime.datetime] = None, + # Theme type. + theme_type: Optional[str] = None, # Requested fields. fields: Optional[str] = None, transport_options: Optional[transport.TransportOptions] = None, @@ -12210,9 +12852,14 @@ def active_themes( self.get( path="/themes/active", structure=Sequence[mdls.Theme], - query_params={"name": name, "ts": ts, "fields": fields}, - transport_options=transport_options - ) + query_params={ + "name": name, + "ts": ts, + "theme_type": theme_type, + "fields": fields, + }, + transport_options=transport_options, + ), ) return response @@ -12239,8 +12886,8 @@ def theme_or_default( path="/themes/theme_or_default", structure=mdls.Theme, query_params={"name": name, "ts": ts}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12265,8 +12912,8 @@ def validate_theme( path="/themes/validate", structure=mdls.ValidationError, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12293,8 +12940,8 @@ def theme( path=f"/themes/{theme_id}", structure=mdls.Theme, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12318,8 +12965,8 @@ def update_theme( path=f"/themes/{theme_id}", structure=mdls.Theme, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12347,14 +12994,14 @@ def delete_theme( self.delete( path=f"/themes/{theme_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region User: Manage Users + # region User: Manage Users # ### Search email credentials # @@ -12411,9 +13058,18 @@ def search_credentials_email( self.get( path="/credentials_email/search", structure=Sequence[mdls.CredentialsEmailSearch], - query_params={"fields": fields, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "email": email, "emails": emails, "filter_or": filter_or}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "limit": limit, + "offset": offset, + "sorts": sorts, + "id": id, + "email": email, + "emails": emails, + "filter_or": filter_or, + }, + transport_options=transport_options, + ), ) return response @@ -12433,8 +13089,8 @@ def me( path="/user", structure=mdls.User, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12465,9 +13121,17 @@ def all_users( self.get( path="/users", structure=Sequence[mdls.User], - query_params={"fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "ids": ids}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "limit": limit, + "offset": offset, + "sorts": sorts, + "ids": ids, + }, + transport_options=transport_options, + ), ) return response @@ -12489,8 +13153,8 @@ def create_user( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12574,9 +13238,29 @@ def search_users( self.get( path="/users/search", structure=Sequence[mdls.User], - query_params={"fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "first_name": first_name, "last_name": last_name, "full_name": full_name, "verified_looker_employee": verified_looker_employee, "embed_user": embed_user, "email": email, "is_disabled": is_disabled, "filter_or": filter_or, "content_metadata_id": content_metadata_id, "group_id": group_id, "can_manage_api3_creds": can_manage_api3_creds, "is_service_account": is_service_account}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "limit": limit, + "offset": offset, + "sorts": sorts, + "id": id, + "first_name": first_name, + "last_name": last_name, + "full_name": full_name, + "verified_looker_employee": verified_looker_employee, + "embed_user": embed_user, + "email": email, + "is_disabled": is_disabled, + "filter_or": filter_or, + "content_metadata_id": content_metadata_id, + "group_id": group_id, + "can_manage_api3_creds": can_manage_api3_creds, + "is_service_account": is_service_account, + }, + transport_options=transport_options, + ), ) return response @@ -12625,9 +13309,22 @@ def search_users_names( self.get( path=f"/users/search/names/{pattern}", structure=Sequence[mdls.User], - query_params={"fields": fields, "page": page, "per_page": per_page, "limit": limit, "offset": offset, "sorts": sorts, "id": id, "first_name": first_name, "last_name": last_name, "verified_looker_employee": verified_looker_employee, "email": email, "is_disabled": is_disabled}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "page": page, + "per_page": per_page, + "limit": limit, + "offset": offset, + "sorts": sorts, + "id": id, + "first_name": first_name, + "last_name": last_name, + "verified_looker_employee": verified_looker_employee, + "email": email, + "is_disabled": is_disabled, + }, + transport_options=transport_options, + ), ) return response @@ -12654,8 +13351,8 @@ def user( path=f"/users/{user_id}", structure=mdls.User, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12680,8 +13377,8 @@ def update_user( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12715,8 +13412,8 @@ def delete_user( self.delete( path=f"/users/{user_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12771,8 +13468,8 @@ def user_for_credential( path=f"/users/credential/{credential_type}/{credential_id}", structure=mdls.User, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12799,8 +13496,8 @@ def update_service_account( structure=mdls.ServiceAccount, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12830,8 +13527,8 @@ def delete_service_account( self.delete( path=f"/users/service_accounts/{user_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12856,8 +13553,8 @@ def user_credentials_email( path=f"/users/{user_id}/credentials_email", structure=mdls.CredentialsEmail, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12884,8 +13581,8 @@ def create_user_credentials_email( structure=mdls.CredentialsEmail, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12912,8 +13609,8 @@ def update_user_credentials_email( structure=mdls.CredentialsEmail, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12935,8 +13632,8 @@ def delete_user_credentials_email( self.delete( path=f"/users/{user_id}/credentials_email", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12961,8 +13658,8 @@ def user_credentials_totp( path=f"/users/{user_id}/credentials_totp", structure=mdls.CredentialsTotp, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -12990,8 +13687,8 @@ def create_user_credentials_totp( structure=mdls.CredentialsTotp, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13013,8 +13710,8 @@ def delete_user_credentials_totp( self.delete( path=f"/users/{user_id}/credentials_totp", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13039,8 +13736,8 @@ def user_credentials_ldap( path=f"/users/{user_id}/credentials_ldap", structure=mdls.CredentialsLDAP, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13062,8 +13759,8 @@ def delete_user_credentials_ldap( self.delete( path=f"/users/{user_id}/credentials_ldap", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13086,8 +13783,8 @@ def user_credentials_google( path=f"/users/{user_id}/credentials_google", structure=mdls.CredentialsGoogle, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13107,8 +13804,8 @@ def delete_user_credentials_google( self.delete( path=f"/users/{user_id}/credentials_google", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13131,8 +13828,8 @@ def user_credentials_saml( path=f"/users/{user_id}/credentials_saml", structure=mdls.CredentialsSaml, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13152,8 +13849,8 @@ def delete_user_credentials_saml( self.delete( path=f"/users/{user_id}/credentials_saml", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13176,8 +13873,8 @@ def user_credentials_oidc( path=f"/users/{user_id}/credentials_oidc", structure=mdls.CredentialsOIDC, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13197,8 +13894,8 @@ def delete_user_credentials_oidc( self.delete( path=f"/users/{user_id}/credentials_oidc", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13224,8 +13921,8 @@ def user_credentials_api3( path=f"/users/{user_id}/credentials_api3/{credentials_api3_id}", structure=mdls.CredentialsApi3, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13253,8 +13950,8 @@ def update_user_credentials_api3( structure=mdls.CredentialsApi3, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13277,8 +13974,8 @@ def delete_user_credentials_api3( self.delete( path=f"/users/{user_id}/credentials_api3/{credentials_api3_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13301,8 +13998,8 @@ def all_user_credentials_api3s( path=f"/users/{user_id}/credentials_api3", structure=Sequence[mdls.CredentialsApi3], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13325,8 +14022,8 @@ def create_user_credentials_api3( path=f"/users/{user_id}/credentials_api3", structure=mdls.CreateCredentialsApi3, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13354,8 +14051,8 @@ def user_credentials_embed( path=f"/users/{user_id}/credentials_embed/{credentials_embed_id}", structure=mdls.CredentialsEmbed, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13380,8 +14077,8 @@ def delete_user_credentials_embed( self.delete( path=f"/users/{user_id}/credentials_embed/{credentials_embed_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13406,8 +14103,8 @@ def all_user_credentials_embeds( path=f"/users/{user_id}/credentials_embed", structure=Sequence[mdls.CredentialsEmbed], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13432,8 +14129,8 @@ def user_credentials_looker_openid( path=f"/users/{user_id}/credentials_looker_openid", structure=mdls.CredentialsLookerOpenid, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13455,8 +14152,8 @@ def delete_user_credentials_looker_openid( self.delete( path=f"/users/{user_id}/credentials_looker_openid", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13482,8 +14179,8 @@ def user_session( path=f"/users/{user_id}/sessions/{session_id}", structure=mdls.Session, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13506,8 +14203,8 @@ def delete_user_session( self.delete( path=f"/users/{user_id}/sessions/{session_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13530,8 +14227,8 @@ def all_user_sessions( path=f"/users/{user_id}/sessions", structure=Sequence[mdls.Session], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13566,8 +14263,8 @@ def create_user_credentials_email_password_reset( path=f"/users/{user_id}/credentials_email/password_reset", structure=mdls.CredentialsEmail, query_params={"expires": expires, "fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13591,9 +14288,12 @@ def user_roles( self.get( path=f"/users/{user_id}/roles", structure=Sequence[mdls.Role], - query_params={"fields": fields, "direct_association_only": direct_association_only}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "direct_association_only": direct_association_only, + }, + transport_options=transport_options, + ), ) return response @@ -13618,8 +14318,8 @@ def set_user_roles( structure=Sequence[mdls.Role], query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13662,9 +14362,14 @@ def user_attribute_user_values( self.get( path=f"/users/{user_id}/attribute_values", structure=Sequence[mdls.UserAttributeWithValue], - query_params={"fields": fields, "user_attribute_ids": user_attribute_ids, "all_values": all_values, "include_unset": include_unset}, - transport_options=transport_options - ) + query_params={ + "fields": fields, + "user_attribute_ids": user_attribute_ids, + "all_values": all_values, + "include_unset": include_unset, + }, + transport_options=transport_options, + ), ) return response @@ -13691,8 +14396,8 @@ def set_user_attribute_user_value( path=f"/users/{user_id}/attribute_values/{user_attribute_id}", structure=mdls.UserAttributeWithValue, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13720,8 +14425,8 @@ def delete_user_attribute_user_value( self.delete( path=f"/users/{user_id}/attribute_values/{user_attribute_id}", structure=None, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13752,8 +14457,8 @@ def send_user_credentials_email_password_reset( path=f"/users/{user_id}/credentials_email/send_password_reset", structure=mdls.CredentialsEmail, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13786,8 +14491,8 @@ def wipeout_user_emails( structure=mdls.User, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13808,8 +14513,8 @@ def create_embed_user( path="/users/embed_user", structure=mdls.UserPublic, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13831,14 +14536,14 @@ def create_service_account( structure=mdls.ServiceAccount, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region UserAttribute: Manage User Attributes + # region UserAttribute: Manage User Attributes # ### Get information about all user attributes. # @@ -13858,8 +14563,8 @@ def all_user_attributes( path="/user_attributes", structure=Sequence[mdls.UserAttribute], query_params={"fields": fields, "sorts": sorts}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13890,8 +14595,8 @@ def create_user_attribute( structure=mdls.UserAttribute, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13914,8 +14619,8 @@ def user_attribute( path=f"/user_attributes/{user_attribute_id}", structure=mdls.UserAttribute, query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13940,8 +14645,8 @@ def update_user_attribute( structure=mdls.UserAttribute, query_params={"fields": fields}, body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13961,8 +14666,8 @@ def delete_user_attribute( self.delete( path=f"/user_attributes/{user_attribute_id}", structure=str, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -13991,8 +14696,8 @@ def all_user_attribute_group_values( path=f"/user_attributes/{user_attribute_id}/group_values", structure=Sequence[mdls.UserAttributeGroupValue], query_params={"fields": fields}, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -14033,14 +14738,14 @@ def set_user_attribute_group_values( path=f"/user_attributes/{user_attribute_id}/group_values", structure=Sequence[mdls.UserAttributeGroupValue], body=body, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion + # endregion - #region Workspace: Manage Workspaces + # region Workspace: Manage Workspaces # ### Get All Workspaces # @@ -14057,8 +14762,8 @@ def all_workspaces( self.get( path="/workspaces", structure=Sequence[mdls.Workspace], - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response @@ -14106,10 +14811,12 @@ def workspace( self.get( path=f"/workspaces/{workspace_id}", structure=mdls.Workspace, - transport_options=transport_options - ) + transport_options=transport_options, + ), ) return response - #endregion -LookerSDK = Looker40SDK \ No newline at end of file + # endregion + + +LookerSDK = Looker40SDK diff --git a/python/looker_sdk/sdk/api40/models.py b/python/looker_sdk/sdk/api40/models.py index 9c34c34ad..a2a63df04 100644 --- a/python/looker_sdk/sdk/api40/models.py +++ b/python/looker_sdk/sdk/api40/models.py @@ -21,7 +21,7 @@ # SOFTWARE. # -# 458 API models: 361 Spec, 0 Request, 71 Write, 26 Enum +# 461 API models: 363 Spec, 0 Request, 72 Write, 26 Enum # NOTE: Do not edit this file generated by Looker SDK Codegen for API 4.0 @@ -52,16 +52,20 @@ class AccessToken(model.Model): expires_in: Number of seconds before the token expires refresh_token: Refresh token which can be used to obtain a new access token """ + access_token: Optional[str] = None token_type: Optional[str] = None expires_in: Optional[int] = None refresh_token: Optional[str] = None - def __init__(self, *, - access_token: Optional[str] = None, - token_type: Optional[str] = None, - expires_in: Optional[int] = None, - refresh_token: Optional[str] = None): + def __init__( + self, + *, + access_token: Optional[str] = None, + token_type: Optional[str] = None, + expires_in: Optional[int] = None, + refresh_token: Optional[str] = None + ): self.access_token = access_token self.token_type = token_type self.expires_in = expires_in @@ -95,6 +99,7 @@ class Agent(model.Model): studio_agent_id: Studio Agent ID (if this agent was migrated) workflow_params: """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None created_by_user_id: Optional[str] = None @@ -118,29 +123,32 @@ class Agent(model.Model): studio_agent_id: Optional[str] = None workflow_params: Optional["WorkflowParams"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - created_by_user_id: Optional[str] = None, - created_by_name: Optional[str] = None, - created_by_first_name: Optional[str] = None, - created_by_last_name: Optional[str] = None, - created_by_avatar_url: Optional[str] = None, - name: Optional[str] = None, - description: Optional[str] = None, - category: Optional[str] = None, - sources: Optional[Sequence["Source"]] = None, - has_inaccessible_source: Optional[bool] = None, - golden_queries: Optional[Sequence["GoldenQuery"]] = None, - golden_query_ids: Optional[Sequence[int]] = None, - context: Optional["Context"] = None, - deleted: Optional[bool] = None, - created_at: Optional[datetime.datetime] = None, - updated_at: Optional[datetime.datetime] = None, - content_metadata_id: Optional[str] = None, - code_interpreter: Optional[bool] = None, - studio_agent_id: Optional[str] = None, - workflow_params: Optional["WorkflowParams"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + created_by_user_id: Optional[str] = None, + created_by_name: Optional[str] = None, + created_by_first_name: Optional[str] = None, + created_by_last_name: Optional[str] = None, + created_by_avatar_url: Optional[str] = None, + name: Optional[str] = None, + description: Optional[str] = None, + category: Optional[str] = None, + sources: Optional[Sequence["Source"]] = None, + has_inaccessible_source: Optional[bool] = None, + golden_queries: Optional[Sequence["GoldenQuery"]] = None, + golden_query_ids: Optional[Sequence[int]] = None, + context: Optional["Context"] = None, + deleted: Optional[bool] = None, + created_at: Optional[datetime.datetime] = None, + updated_at: Optional[datetime.datetime] = None, + content_metadata_id: Optional[str] = None, + code_interpreter: Optional[bool] = None, + studio_agent_id: Optional[str] = None, + workflow_params: Optional["WorkflowParams"] = None + ): self.can = can self.id = id self.created_by_user_id = created_by_user_id @@ -199,6 +207,7 @@ class Alert(model.Model): owner_display_name: Alert owner's display name time_series_condition_state: """ + comparison_type: "ComparisonType" cron: str destinations: Sequence["AlertDestination"] @@ -257,39 +266,44 @@ class Alert(model.Model): "lookml_dashboard_id": Optional[str], "lookml_link_id": Optional[str], "owner_display_name": Optional[str], - "time_series_condition_state": Optional["AlertConditionState"] + "time_series_condition_state": Optional["AlertConditionState"], } - def __init__(self, *, - comparison_type: "ComparisonType", - cron: str, - destinations: Sequence["AlertDestination"], - field: "AlertField", - owner_id: str, - threshold: float, - applied_dashboard_filters: Optional[Sequence["AlertAppliedDashboardFilter"]] = None, - query_id: Optional[str] = None, - custom_url_base: Optional[str] = None, - custom_url_params: Optional[str] = None, - custom_url_label: Optional[str] = None, - show_custom_url: Optional[bool] = None, - custom_title: Optional[str] = None, - dashboard_element_id: Optional[str] = None, - description: Optional[str] = None, - enhancements: Optional["Enhancements"] = None, - followed: Optional[bool] = None, - followable: Optional[bool] = None, - id: Optional[str] = None, - is_disabled: Optional[bool] = None, - disabled_reason: Optional[str] = None, - is_public: Optional[bool] = None, - investigative_content_type: Optional["InvestigativeContentType"] = None, - investigative_content_id: Optional[str] = None, - investigative_content_title: Optional[str] = None, - lookml_dashboard_id: Optional[str] = None, - lookml_link_id: Optional[str] = None, - owner_display_name: Optional[str] = None, - time_series_condition_state: Optional["AlertConditionState"] = None): + def __init__( + self, + *, + comparison_type: "ComparisonType", + cron: str, + destinations: Sequence["AlertDestination"], + field: "AlertField", + owner_id: str, + threshold: float, + applied_dashboard_filters: Optional[ + Sequence["AlertAppliedDashboardFilter"] + ] = None, + query_id: Optional[str] = None, + custom_url_base: Optional[str] = None, + custom_url_params: Optional[str] = None, + custom_url_label: Optional[str] = None, + show_custom_url: Optional[bool] = None, + custom_title: Optional[str] = None, + dashboard_element_id: Optional[str] = None, + description: Optional[str] = None, + enhancements: Optional["Enhancements"] = None, + followed: Optional[bool] = None, + followable: Optional[bool] = None, + id: Optional[str] = None, + is_disabled: Optional[bool] = None, + disabled_reason: Optional[str] = None, + is_public: Optional[bool] = None, + investigative_content_type: Optional["InvestigativeContentType"] = None, + investigative_content_id: Optional[str] = None, + investigative_content_title: Optional[str] = None, + lookml_dashboard_id: Optional[str] = None, + lookml_link_id: Optional[str] = None, + owner_display_name: Optional[str] = None, + time_series_condition_state: Optional["AlertConditionState"] = None + ): self.comparison_type = comparison_type self.cron = cron self.destinations = destinations @@ -330,16 +344,20 @@ class AlertAppliedDashboardFilter(model.Model): filter_value: Field Value. [Filter Expressions](https://docs.cloud.google.com/looker/docs/reference/filter-expressions). Example `Los Angeles CA` filter_description: Human Readable Filter Description. This may be null or auto-generated. Example `is Los Angeles CA` """ + filter_title: str field_name: str filter_value: str filter_description: Optional[str] = None - def __init__(self, *, - filter_title: str, - field_name: str, - filter_value: str, - filter_description: Optional[str] = None): + def __init__( + self, + *, + filter_title: str, + field_name: str, + filter_value: str, + filter_description: Optional[str] = None + ): self.filter_title = filter_title self.field_name = field_name self.filter_value = filter_value @@ -353,12 +371,16 @@ class AlertConditionState(model.Model): previous_time_series_id: (Write-Only) The second latest time string the alert has seen. latest_time_series_id: (Write-Only) Latest time string the alert has seen. """ + previous_time_series_id: Optional[str] = None latest_time_series_id: Optional[str] = None - def __init__(self, *, - previous_time_series_id: Optional[str] = None, - latest_time_series_id: Optional[str] = None): + def __init__( + self, + *, + previous_time_series_id: Optional[str] = None, + latest_time_series_id: Optional[str] = None + ): self.previous_time_series_id = previous_time_series_id self.latest_time_series_id = latest_time_series_id @@ -372,6 +394,7 @@ class AlertDestination(model.Model): action_hub_integration_id: Action hub integration id for the 'action_hub' type. [Integration](#!/types/Integration) action_hub_form_params_json: Action hub form params json for the 'action_hub' type [IntegrationParam](#!/types/IntegrationParam) """ + destination_type: "DestinationType" email_address: Optional[str] = None action_hub_integration_id: Optional[str] = None @@ -380,14 +403,17 @@ class AlertDestination(model.Model): "destination_type": ForwardRef("DestinationType"), "email_address": Optional[str], "action_hub_integration_id": Optional[str], - "action_hub_form_params_json": Optional[str] + "action_hub_form_params_json": Optional[str], } - def __init__(self, *, - destination_type: "DestinationType", - email_address: Optional[str] = None, - action_hub_integration_id: Optional[str] = None, - action_hub_form_params_json: Optional[str] = None): + def __init__( + self, + *, + destination_type: "DestinationType", + email_address: Optional[str] = None, + action_hub_integration_id: Optional[str] = None, + action_hub_form_params_json: Optional[str] = None + ): self.destination_type = destination_type self.email_address = email_address self.action_hub_integration_id = action_hub_integration_id @@ -402,14 +428,18 @@ class AlertField(model.Model): name: Field's name. Has the format `.` Refer to [docs](https://docs.cloud.google.com/looker/docs/sharing-and-publishing/creating-alerts) for more details filter: (Optional / Advance Use) List of fields filter. This further restricts the alert to certain dashboard element's field values. This can be used on top of dashboard filters `applied_dashboard_filters`. To keep thing simple, it's suggested to just use dashboard filters. Example: `{ 'title': '12 Number on Hand', 'name': 'inventory_items.number_on_hand', 'filter': [{ 'field_name': 'inventory_items.id', 'field_value': 12, 'filter_value': null }] }` """ + title: str name: str filter: Optional[Sequence["AlertFieldFilter"]] = None - def __init__(self, *, - title: str, - name: str, - filter: Optional[Sequence["AlertFieldFilter"]] = None): + def __init__( + self, + *, + title: str, + name: str, + filter: Optional[Sequence["AlertFieldFilter"]] = None + ): self.title = title self.name = name self.filter = filter @@ -423,14 +453,14 @@ class AlertFieldFilter(model.Model): field_value: Field Value. Depends on the type of field - numeric or string. For [location](https://docs.cloud.google.com/looker/docs/reference/field-reference/dimension-type-reference#location) type, it's a list of floats. Example `[1.0, 56.0]` filter_value: Filter Value. Usually null except for [location](https://docs.cloud.google.com/looker/docs/reference/field-reference/dimension-type-reference#location) type. It'll be a string of lat,long ie `'1.0,56.0'` """ + field_name: str field_value: Any filter_value: Optional[str] = None - def __init__(self, *, - field_name: str, - field_value: Any, - filter_value: Optional[str] = None): + def __init__( + self, *, field_name: str, field_value: Any, filter_value: Optional[str] = None + ): self.field_name = field_name self.field_value = field_value self.filter_value = filter_value @@ -451,6 +481,7 @@ class AlertNotifications(model.Model): notification_type: The type of notification, 'email' or 'slack' triggering_field_title: The title of the field on which the alert condition is set """ + notification_id: Optional[str] = None alert_condition_id: Optional[str] = None user_id: Optional[str] = None @@ -462,17 +493,20 @@ class AlertNotifications(model.Model): notification_type: Optional[str] = None triggering_field_title: Optional[str] = None - def __init__(self, *, - notification_id: Optional[str] = None, - alert_condition_id: Optional[str] = None, - user_id: Optional[str] = None, - is_read: Optional[bool] = None, - field_value: Optional[float] = None, - threshold_value: Optional[float] = None, - ran_at: Optional[str] = None, - alert: Optional["MobilePayload"] = None, - notification_type: Optional[str] = None, - triggering_field_title: Optional[str] = None): + def __init__( + self, + *, + notification_id: Optional[str] = None, + alert_condition_id: Optional[str] = None, + user_id: Optional[str] = None, + is_read: Optional[bool] = None, + field_value: Optional[float] = None, + threshold_value: Optional[float] = None, + ran_at: Optional[str] = None, + alert: Optional["MobilePayload"] = None, + notification_type: Optional[str] = None, + triggering_field_title: Optional[str] = None + ): self.notification_id = notification_id self.alert_condition_id = alert_condition_id self.user_id = user_id @@ -496,6 +530,7 @@ class AlertPatch(model.Model): threshold: New threshold value enhancements: Enum of additional alert properties. Valid values are: "NONE", "STRATEGIC_NARRATIVE". """ + owner_id: Optional[str] = None is_disabled: Optional[bool] = None disabled_reason: Optional[str] = None @@ -503,13 +538,16 @@ class AlertPatch(model.Model): threshold: Optional[float] = None enhancements: Optional["Enhancements"] = None - def __init__(self, *, - owner_id: Optional[str] = None, - is_disabled: Optional[bool] = None, - disabled_reason: Optional[str] = None, - is_public: Optional[bool] = None, - threshold: Optional[float] = None, - enhancements: Optional["Enhancements"] = None): + def __init__( + self, + *, + owner_id: Optional[str] = None, + is_disabled: Optional[bool] = None, + disabled_reason: Optional[str] = None, + is_public: Optional[bool] = None, + threshold: Optional[float] = None, + enhancements: Optional["Enhancements"] = None + ): self.owner_id = owner_id self.is_disabled = is_disabled self.disabled_reason = disabled_reason @@ -523,6 +561,7 @@ class Align(enum.Enum): The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: "left", "right". (Enum defined in LookmlModelExploreField) """ + left = "left" right = "right" invalid_api_enum_value = "invalid_api_enum_value" @@ -547,6 +586,7 @@ class AnalysisEvent(model.Model): resultReferenceData: Result as a reference to a data source. error: A generic error message. """ + plannerReasoning: Optional[str] = None coderInstruction: Optional[str] = None code: Optional[str] = None @@ -558,17 +598,20 @@ class AnalysisEvent(model.Model): resultReferenceData: Optional[str] = None error: Optional[str] = None - def __init__(self, *, - plannerReasoning: Optional[str] = None, - coderInstruction: Optional[str] = None, - code: Optional[str] = None, - executionOutput: Optional[str] = None, - executionError: Optional[str] = None, - resultVegaChartJson: Optional[str] = None, - resultNaturalLanguage: Optional[str] = None, - resultCsvData: Optional[str] = None, - resultReferenceData: Optional[str] = None, - error: Optional[str] = None): + def __init__( + self, + *, + plannerReasoning: Optional[str] = None, + coderInstruction: Optional[str] = None, + code: Optional[str] = None, + executionOutput: Optional[str] = None, + executionError: Optional[str] = None, + resultVegaChartJson: Optional[str] = None, + resultNaturalLanguage: Optional[str] = None, + resultCsvData: Optional[str] = None, + resultReferenceData: Optional[str] = None, + error: Optional[str] = None + ): self.plannerReasoning = plannerReasoning self.coderInstruction = coderInstruction self.code = code @@ -588,12 +631,16 @@ class AnalysisMessage(model.Model): query: progressEvent: """ + query: Optional["AnalysisQuery"] = None progressEvent: Optional["AnalysisEvent"] = None - def __init__(self, *, - query: Optional["AnalysisQuery"] = None, - progressEvent: Optional["AnalysisEvent"] = None): + def __init__( + self, + *, + query: Optional["AnalysisQuery"] = None, + progressEvent: Optional["AnalysisEvent"] = None + ): self.query = query self.progressEvent = progressEvent @@ -605,12 +652,16 @@ class AnalysisQuery(model.Model): question: An analysis question. dataResultNames: The names of previously retrieved data results to analyze. """ + question: Optional[str] = None dataResultNames: Optional[Sequence[str]] = None - def __init__(self, *, - question: Optional[str] = None, - dataResultNames: Optional[Sequence[str]] = None): + def __init__( + self, + *, + question: Optional[str] = None, + dataResultNames: Optional[Sequence[str]] = None + ): self.question = question self.dataResultNames = dataResultNames @@ -623,14 +674,18 @@ class ApiSession(model.Model): workspace_id: The id of active workspace for this session sudo_user_id: The id of the actual user in the case when this session represents one user sudo'ing as another """ + can: Optional[MutableMapping[str, bool]] = None workspace_id: Optional[str] = None sudo_user_id: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - workspace_id: Optional[str] = None, - sudo_user_id: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + workspace_id: Optional[str] = None, + sudo_user_id: Optional[str] = None + ): self.can = can self.workspace_id = workspace_id self.sudo_user_id = sudo_user_id @@ -646,18 +701,22 @@ class ApiVersion(model.Model): api_server_url: API server base url web_server_url: Web server base url """ + looker_release_version: Optional[str] = None current_version: Optional["ApiVersionElement"] = None supported_versions: Optional[Sequence["ApiVersionElement"]] = None api_server_url: Optional[str] = None web_server_url: Optional[str] = None - def __init__(self, *, - looker_release_version: Optional[str] = None, - current_version: Optional["ApiVersionElement"] = None, - supported_versions: Optional[Sequence["ApiVersionElement"]] = None, - api_server_url: Optional[str] = None, - web_server_url: Optional[str] = None): + def __init__( + self, + *, + looker_release_version: Optional[str] = None, + current_version: Optional["ApiVersionElement"] = None, + supported_versions: Optional[Sequence["ApiVersionElement"]] = None, + api_server_url: Optional[str] = None, + web_server_url: Optional[str] = None + ): self.looker_release_version = looker_release_version self.current_version = current_version self.supported_versions = supported_versions @@ -674,16 +733,20 @@ class ApiVersionElement(model.Model): status: Status of this version swagger_url: Url for swagger.json for this version """ + version: Optional[str] = None full_version: Optional[str] = None status: Optional[str] = None swagger_url: Optional[str] = None - def __init__(self, *, - version: Optional[str] = None, - full_version: Optional[str] = None, - status: Optional[str] = None, - swagger_url: Optional[str] = None): + def __init__( + self, + *, + version: Optional[str] = None, + full_version: Optional[str] = None, + status: Optional[str] = None, + swagger_url: Optional[str] = None + ): self.version = version self.full_version = full_version self.status = status @@ -705,6 +768,7 @@ class Artifact(model.Model): content_type: MIME type of content. This can only be used to override content that is detected as text/plain. Needed to set application/json content types, which are analyzed as plain text. version: Version number of the stored value. The version must be provided for any updates to an existing artifact. """ + key: str value: str namespace: str @@ -716,17 +780,20 @@ class Artifact(model.Model): content_type: Optional[str] = None version: Optional[int] = None - def __init__(self, *, - key: str, - value: str, - namespace: str, - created_at: datetime.datetime, - updated_at: datetime.datetime, - value_size: int, - created_by_userid: str, - updated_by_userid: str, - content_type: Optional[str] = None, - version: Optional[int] = None): + def __init__( + self, + *, + key: str, + value: str, + namespace: str, + created_at: datetime.datetime, + updated_at: datetime.datetime, + value_size: int, + created_by_userid: str, + updated_by_userid: str, + content_type: Optional[str] = None, + version: Optional[int] = None + ): self.key = key self.value = value self.namespace = namespace @@ -746,12 +813,11 @@ class ArtifactNamespace(model.Model): namespace: Artifact storage namespace. count: The number of artifacts stored in the namespace. """ + namespace: str count: int - def __init__(self, *, - namespace: str, - count: int): + def __init__(self, *, namespace: str, count: int): self.namespace = namespace self.count = count @@ -763,12 +829,11 @@ class ArtifactUsage(model.Model): max_size: The configured maximum size in bytes of the entire artifact store. usage: The currently used storage size in bytes of the entire artifact store. """ + max_size: int usage: int - def __init__(self, *, - max_size: int, - usage: int): + def __init__(self, *, max_size: int, usage: int): self.max_size = max_size self.usage = usage @@ -780,12 +845,16 @@ class AssertValidatorErrorItem(model.Model): assert_error: generic_error: """ + assert_error: Optional["AssertValidatorTestError"] = None generic_error: Optional["GenericError"] = None - def __init__(self, *, - assert_error: Optional["AssertValidatorTestError"] = None, - generic_error: Optional["GenericError"] = None): + def __init__( + self, + *, + assert_error: Optional["AssertValidatorTestError"] = None, + generic_error: Optional["GenericError"] = None + ): self.assert_error = assert_error self.generic_error = generic_error @@ -798,14 +867,18 @@ class AssertValidatorResult(model.Model): status: Status of the validation (unknown, failed, passed, skipped, errored, cancelled, queued, running) results: Results of the validation """ + name: Optional[str] = None status: Optional[str] = None results: Optional[Sequence["AssertValidatorTestedExplore"]] = None - def __init__(self, *, - name: Optional[str] = None, - status: Optional[str] = None, - results: Optional[Sequence["AssertValidatorTestedExplore"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + status: Optional[str] = None, + results: Optional[Sequence["AssertValidatorTestedExplore"]] = None + ): self.name = name self.status = status self.results = results @@ -820,16 +893,20 @@ class AssertValidatorTestedExplore(model.Model): success_count: Total number of successful data tests successes: Details of data tests that passed validation """ + error_count: Optional[int] = None errors: Optional[Sequence["AssertValidatorErrorItem"]] = None success_count: Optional[str] = None successes: Optional[Sequence["AssertValidatorTestSuccess"]] = None - def __init__(self, *, - error_count: Optional[int] = None, - errors: Optional[Sequence["AssertValidatorErrorItem"]] = None, - success_count: Optional[str] = None, - successes: Optional[Sequence["AssertValidatorTestSuccess"]] = None): + def __init__( + self, + *, + error_count: Optional[int] = None, + errors: Optional[Sequence["AssertValidatorErrorItem"]] = None, + success_count: Optional[str] = None, + successes: Optional[Sequence["AssertValidatorTestSuccess"]] = None + ): self.error_count = error_count self.errors = errors self.success_count = success_count @@ -847,6 +924,7 @@ class AssertValidatorTestError(model.Model): lookml_url: URL to the LookML file where the data test is defined message: Message returned by the data test """ + model: Optional[str] = None explore: Optional[str] = None test_name: Optional[str] = None @@ -854,13 +932,16 @@ class AssertValidatorTestError(model.Model): lookml_url: Optional[str] = None message: Optional[str] = None - def __init__(self, *, - model: Optional[str] = None, - explore: Optional[str] = None, - test_name: Optional[str] = None, - explore_url: Optional[str] = None, - lookml_url: Optional[str] = None, - message: Optional[str] = None): + def __init__( + self, + *, + model: Optional[str] = None, + explore: Optional[str] = None, + test_name: Optional[str] = None, + explore_url: Optional[str] = None, + lookml_url: Optional[str] = None, + message: Optional[str] = None + ): self.model = model self.explore = explore self.test_name = test_name @@ -879,18 +960,22 @@ class AssertValidatorTestSuccess(model.Model): explore_url: URL to the Explore lookml_url: URL to the LookML file where the data test is defined """ + model: Optional[str] = None explore: Optional[str] = None test_name: Optional[str] = None explore_url: Optional[str] = None lookml_url: Optional[str] = None - def __init__(self, *, - model: Optional[str] = None, - explore: Optional[str] = None, - test_name: Optional[str] = None, - explore_url: Optional[str] = None, - lookml_url: Optional[str] = None): + def __init__( + self, + *, + model: Optional[str] = None, + explore: Optional[str] = None, + test_name: Optional[str] = None, + explore_url: Optional[str] = None, + lookml_url: Optional[str] = None + ): self.model = model self.explore = explore self.test_name = test_name @@ -904,10 +989,10 @@ class AsyncDeployResponse(model.Model): Attributes: status: Status of the async deploy request (e.g., 'queued') """ + status: Optional[str] = None - def __init__(self, *, - status: Optional[str] = None): + def __init__(self, *, status: Optional[str] = None): self.status = status @@ -923,6 +1008,7 @@ class BackupConfiguration(model.Model): custom_s3_secret: (Write-Only) AWS S3 secret used for custom-s3 backups url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None type: Optional[str] = None custom_s3_bucket: Optional[str] = None @@ -931,14 +1017,17 @@ class BackupConfiguration(model.Model): custom_s3_secret: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - type: Optional[str] = None, - custom_s3_bucket: Optional[str] = None, - custom_s3_bucket_region: Optional[str] = None, - custom_s3_key: Optional[str] = None, - custom_s3_secret: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + type: Optional[str] = None, + custom_s3_bucket: Optional[str] = None, + custom_s3_bucket_region: Optional[str] = None, + custom_s3_key: Optional[str] = None, + custom_s3_secret: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.type = type self.custom_s3_bucket = custom_s3_bucket @@ -958,18 +1047,22 @@ class BigQueryJob(model.Model): destinationTable: schema: """ + projectId: Optional[str] = None jobId: Optional[str] = None location: Optional[str] = None destinationTable: Optional["BigQueryTableReference"] = None schema: Optional["DataSourceSchema"] = None - def __init__(self, *, - projectId: Optional[str] = None, - jobId: Optional[str] = None, - location: Optional[str] = None, - destinationTable: Optional["BigQueryTableReference"] = None, - schema: Optional["DataSourceSchema"] = None): + def __init__( + self, + *, + projectId: Optional[str] = None, + jobId: Optional[str] = None, + location: Optional[str] = None, + destinationTable: Optional["BigQueryTableReference"] = None, + schema: Optional["DataSourceSchema"] = None + ): self.projectId = projectId self.jobId = jobId self.location = location @@ -986,16 +1079,20 @@ class BigQueryTableReference(model.Model): tableId: The table id. schema: """ + projectId: Optional[str] = None datasetId: Optional[str] = None tableId: Optional[str] = None schema: Optional["DataSourceSchema"] = None - def __init__(self, *, - projectId: Optional[str] = None, - datasetId: Optional[str] = None, - tableId: Optional[str] = None, - schema: Optional["DataSourceSchema"] = None): + def __init__( + self, + *, + projectId: Optional[str] = None, + datasetId: Optional[str] = None, + tableId: Optional[str] = None, + schema: Optional["DataSourceSchema"] = None + ): self.projectId = projectId self.datasetId = datasetId self.tableId = tableId @@ -1009,12 +1106,11 @@ class Blob(model.Model): mimeType: The IANA standard MIME type of the message data. data: The data represented as bytes. """ + mimeType: Optional[str] = None data: Optional[str] = None - def __init__(self, *, - mimeType: Optional[str] = None, - data: Optional[str] = None): + def __init__(self, *, mimeType: Optional[str] = None, data: Optional[str] = None): self.mimeType = mimeType self.data = data @@ -1036,6 +1132,7 @@ class Board(model.Model): user_id: User id of board creator primary_homepage: Whether the board is the primary homepage or not """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[str] = None created_at: Optional[datetime.datetime] = None @@ -1049,19 +1146,22 @@ class Board(model.Model): user_id: Optional[str] = None primary_homepage: Optional[bool] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[str] = None, - created_at: Optional[datetime.datetime] = None, - deleted_at: Optional[datetime.datetime] = None, - description: Optional[str] = None, - board_sections: Optional[Sequence["BoardSection"]] = None, - id: Optional[str] = None, - section_order: Optional[Sequence[str]] = None, - title: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - user_id: Optional[str] = None, - primary_homepage: Optional[bool] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + deleted_at: Optional[datetime.datetime] = None, + description: Optional[str] = None, + board_sections: Optional[Sequence["BoardSection"]] = None, + id: Optional[str] = None, + section_order: Optional[Sequence[str]] = None, + title: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + user_id: Optional[str] = None, + primary_homepage: Optional[bool] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.created_at = created_at @@ -1108,6 +1208,7 @@ class BoardItem(model.Model): custom_image_url: Custom image_url entered by the user, if present use_custom_image: Whether the custom image should be used instead of the content image, if the item is associated with content """ + can: Optional[MutableMapping[str, bool]] = None content_created_by: Optional[str] = None content_favorite_id: Optional[str] = None @@ -1136,34 +1237,37 @@ class BoardItem(model.Model): custom_image_url: Optional[str] = None use_custom_image: Optional[bool] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_created_by: Optional[str] = None, - content_favorite_id: Optional[str] = None, - content_metadata_id: Optional[str] = None, - content_updated_at: Optional[str] = None, - custom_description: Optional[str] = None, - custom_title: Optional[str] = None, - custom_url: Optional[str] = None, - dashboard_id: Optional[str] = None, - description: Optional[str] = None, - favorite_count: Optional[int] = None, - board_section_id: Optional[str] = None, - id: Optional[str] = None, - image_url: Optional[str] = None, - location: Optional[str] = None, - look_id: Optional[str] = None, - lookml_dashboard_id: Optional[str] = None, - order: Optional[int] = None, - title: Optional[str] = None, - url: Optional[str] = None, - use_custom_description: Optional[bool] = None, - use_custom_title: Optional[bool] = None, - use_custom_url: Optional[bool] = None, - view_count: Optional[int] = None, - custom_image_data_base64: Optional[str] = None, - custom_image_url: Optional[str] = None, - use_custom_image: Optional[bool] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_created_by: Optional[str] = None, + content_favorite_id: Optional[str] = None, + content_metadata_id: Optional[str] = None, + content_updated_at: Optional[str] = None, + custom_description: Optional[str] = None, + custom_title: Optional[str] = None, + custom_url: Optional[str] = None, + dashboard_id: Optional[str] = None, + description: Optional[str] = None, + favorite_count: Optional[int] = None, + board_section_id: Optional[str] = None, + id: Optional[str] = None, + image_url: Optional[str] = None, + location: Optional[str] = None, + look_id: Optional[str] = None, + lookml_dashboard_id: Optional[str] = None, + order: Optional[int] = None, + title: Optional[str] = None, + url: Optional[str] = None, + use_custom_description: Optional[bool] = None, + use_custom_title: Optional[bool] = None, + use_custom_url: Optional[bool] = None, + view_count: Optional[int] = None, + custom_image_data_base64: Optional[str] = None, + custom_image_url: Optional[str] = None, + use_custom_image: Optional[bool] = None + ): self.can = can self.content_created_by = content_created_by self.content_favorite_id = content_favorite_id @@ -1209,6 +1313,7 @@ class BoardSection(model.Model): title: Name of row updated_at: Time at which this section was last updated. """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[datetime.datetime] = None deleted_at: Optional[datetime.datetime] = None @@ -1221,18 +1326,21 @@ class BoardSection(model.Model): title: Optional[str] = None updated_at: Optional[datetime.datetime] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[datetime.datetime] = None, - deleted_at: Optional[datetime.datetime] = None, - description: Optional[str] = None, - board_id: Optional[str] = None, - board_items: Optional[Sequence["BoardItem"]] = None, - id: Optional[str] = None, - item_order: Optional[Sequence[str]] = None, - visible_item_order: Optional[Sequence[str]] = None, - title: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[datetime.datetime] = None, + deleted_at: Optional[datetime.datetime] = None, + description: Optional[str] = None, + board_id: Optional[str] = None, + board_items: Optional[Sequence["BoardItem"]] = None, + id: Optional[str] = None, + item_order: Optional[Sequence[str]] = None, + visible_item_order: Optional[Sequence[str]] = None, + title: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None + ): self.can = can self.created_at = created_at self.deleted_at = deleted_at @@ -1251,6 +1359,7 @@ class Category(enum.Enum): Field category Valid values are: "parameter", "filter", "measure", "dimension". (Enum defined in LookmlModelExploreField) """ + parameter = "parameter" filter = "filter" measure = "measure" @@ -1272,18 +1381,22 @@ class Certification(model.Model): notes: Certification notes updated_at: Timestamp of certification """ + certification_status: Optional["CertificationStatus"] = None ui_status: Optional[str] = None user_name: Optional[str] = None notes: Optional[str] = None updated_at: Optional[datetime.datetime] = None - def __init__(self, *, - certification_status: Optional["CertificationStatus"] = None, - ui_status: Optional[str] = None, - user_name: Optional[str] = None, - notes: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None): + def __init__( + self, + *, + certification_status: Optional["CertificationStatus"] = None, + ui_status: Optional[str] = None, + user_name: Optional[str] = None, + notes: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None + ): self.certification_status = certification_status self.ui_status = ui_status self.user_name = user_name @@ -1296,6 +1409,7 @@ class CertificationStatus(enum.Enum): Certification status: "certified" or "revoked" Valid values are: "certified", "revoked". (Enum defined in Certification) """ + certified = "certified" revoked = "revoked" invalid_api_enum_value = "invalid_api_enum_value" @@ -1312,12 +1426,16 @@ class ChartMessage(model.Model): query: result: """ + query: Optional["ChartQuery"] = None result: Optional["ChartResult"] = None - def __init__(self, *, - query: Optional["ChartQuery"] = None, - result: Optional["ChartResult"] = None): + def __init__( + self, + *, + query: Optional["ChartQuery"] = None, + result: Optional["ChartResult"] = None + ): self.query = query self.result = result @@ -1329,12 +1447,16 @@ class ChartQuery(model.Model): instructions: Natural language instructions for generating the chart. dataResultName: The name of a previously retrieved data result to use in the chart. """ + instructions: Optional[str] = None dataResultName: Optional[str] = None - def __init__(self, *, - instructions: Optional[str] = None, - dataResultName: Optional[str] = None): + def __init__( + self, + *, + instructions: Optional[str] = None, + dataResultName: Optional[str] = None + ): self.instructions = instructions self.dataResultName = dataResultName @@ -1346,12 +1468,13 @@ class ChartResult(model.Model): vegaConfig: A generated Vega chart config. image: """ + vegaConfig: Optional[str] = None image: Optional["Blob"] = None - def __init__(self, *, - vegaConfig: Optional[str] = None, - image: Optional["Blob"] = None): + def __init__( + self, *, vegaConfig: Optional[str] = None, image: Optional["Blob"] = None + ): self.vegaConfig = vegaConfig self.image = image @@ -1365,16 +1488,20 @@ class ChatMessage(model.Model): systemMessage: messageId: Unique id of the message in the conversation. """ + timestamp: Optional[datetime.datetime] = None userMessage: Optional["UserMessage"] = None systemMessage: Optional["SystemMessage"] = None messageId: Optional[str] = None - def __init__(self, *, - timestamp: Optional[datetime.datetime] = None, - userMessage: Optional["UserMessage"] = None, - systemMessage: Optional["SystemMessage"] = None, - messageId: Optional[str] = None): + def __init__( + self, + *, + timestamp: Optional[datetime.datetime] = None, + userMessage: Optional["UserMessage"] = None, + systemMessage: Optional["SystemMessage"] = None, + messageId: Optional[str] = None + ): self.timestamp = timestamp self.userMessage = userMessage self.systemMessage = systemMessage @@ -1388,12 +1515,16 @@ class CIAssertValidatorErrorItem(model.Model): assert_error: generic_error: """ + assert_error: Optional["CIAssertValidatorTestError"] = None generic_error: Optional["CIGenericError"] = None - def __init__(self, *, - assert_error: Optional["CIAssertValidatorTestError"] = None, - generic_error: Optional["CIGenericError"] = None): + def __init__( + self, + *, + assert_error: Optional["CIAssertValidatorTestError"] = None, + generic_error: Optional["CIGenericError"] = None + ): self.assert_error = assert_error self.generic_error = generic_error @@ -1406,14 +1537,18 @@ class CIAssertValidatorResult(model.Model): status: Status of the validation (unknown, failed, passed, skipped, errored, cancelled, queued, running) tested: Results of the validation """ + name: Optional[str] = None status: Optional[str] = None tested: Optional[Sequence["CIAssertValidatorTestedExplore"]] = None - def __init__(self, *, - name: Optional[str] = None, - status: Optional[str] = None, - tested: Optional[Sequence["CIAssertValidatorTestedExplore"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + status: Optional[str] = None, + tested: Optional[Sequence["CIAssertValidatorTestedExplore"]] = None + ): self.name = name self.status = status self.tested = tested @@ -1432,6 +1567,7 @@ class CIAssertValidatorTestedExplore(model.Model): success_count: Total number of successful data tests successes: Details of data tests that passed validation """ + model: Optional[str] = None explore: Optional[str] = None status: Optional[str] = None @@ -1441,15 +1577,18 @@ class CIAssertValidatorTestedExplore(model.Model): success_count: Optional[str] = None successes: Optional[Sequence["CIAssertValidatorTestSuccess"]] = None - def __init__(self, *, - model: Optional[str] = None, - explore: Optional[str] = None, - status: Optional[str] = None, - skip_reason: Optional[str] = None, - error_count: Optional[int] = None, - errors: Optional[Sequence["CIAssertValidatorErrorItem"]] = None, - success_count: Optional[str] = None, - successes: Optional[Sequence["CIAssertValidatorTestSuccess"]] = None): + def __init__( + self, + *, + model: Optional[str] = None, + explore: Optional[str] = None, + status: Optional[str] = None, + skip_reason: Optional[str] = None, + error_count: Optional[int] = None, + errors: Optional[Sequence["CIAssertValidatorErrorItem"]] = None, + success_count: Optional[str] = None, + successes: Optional[Sequence["CIAssertValidatorTestSuccess"]] = None + ): self.model = model self.explore = explore self.status = status @@ -1471,6 +1610,7 @@ class CIAssertValidatorTestError(model.Model): lookml_url: URL to the LookML file where the data test is defined message: Message returned by the data test """ + model: Optional[str] = None explore: Optional[str] = None test_name: Optional[str] = None @@ -1478,13 +1618,16 @@ class CIAssertValidatorTestError(model.Model): lookml_url: Optional[str] = None message: Optional[str] = None - def __init__(self, *, - model: Optional[str] = None, - explore: Optional[str] = None, - test_name: Optional[str] = None, - explore_url: Optional[str] = None, - lookml_url: Optional[str] = None, - message: Optional[str] = None): + def __init__( + self, + *, + model: Optional[str] = None, + explore: Optional[str] = None, + test_name: Optional[str] = None, + explore_url: Optional[str] = None, + lookml_url: Optional[str] = None, + message: Optional[str] = None + ): self.model = model self.explore = explore self.test_name = test_name @@ -1503,18 +1646,22 @@ class CIAssertValidatorTestSuccess(model.Model): explore_url: URL to the Explore lookml_url: URL to the LookML file where the data test is defined """ + model: Optional[str] = None explore: Optional[str] = None test_name: Optional[str] = None explore_url: Optional[str] = None lookml_url: Optional[str] = None - def __init__(self, *, - model: Optional[str] = None, - explore: Optional[str] = None, - test_name: Optional[str] = None, - explore_url: Optional[str] = None, - lookml_url: Optional[str] = None): + def __init__( + self, + *, + model: Optional[str] = None, + explore: Optional[str] = None, + test_name: Optional[str] = None, + explore_url: Optional[str] = None, + lookml_url: Optional[str] = None + ): self.model = model self.explore = explore self.test_name = test_name @@ -1531,16 +1678,20 @@ class CIChangeRequest(model.Model): change_request_name: Name of the change request change_request_commits_url: For PR-triggered CI runs, the URL to the change request commit that triggered the run. """ + change_request_number: Optional[int] = None change_request_url: Optional[str] = None change_request_name: Optional[str] = None change_request_commits_url: Optional[str] = None - def __init__(self, *, - change_request_number: Optional[int] = None, - change_request_url: Optional[str] = None, - change_request_name: Optional[str] = None, - change_request_commits_url: Optional[str] = None): + def __init__( + self, + *, + change_request_number: Optional[int] = None, + change_request_url: Optional[str] = None, + change_request_name: Optional[str] = None, + change_request_commits_url: Optional[str] = None + ): self.change_request_number = change_request_number self.change_request_url = change_request_url self.change_request_name = change_request_name @@ -1566,6 +1717,7 @@ class CIContentValidatorContentError(model.Model): tile_title: Title of the tile message: Message returned by the content validator """ + type: Optional[str] = None title: Optional[str] = None detail: Optional[str] = None @@ -1581,21 +1733,24 @@ class CIContentValidatorContentError(model.Model): tile_title: Optional[str] = None message: Optional[str] = None - def __init__(self, *, - type: Optional[str] = None, - title: Optional[str] = None, - detail: Optional[str] = None, - status: Optional[str] = None, - instance: Optional[str] = None, - model: Optional[str] = None, - explore: Optional[str] = None, - field_name: Optional[str] = None, - content_type: Optional[str] = None, - folder: Optional[str] = None, - url: Optional[str] = None, - tile_type: Optional[str] = None, - tile_title: Optional[str] = None, - message: Optional[str] = None): + def __init__( + self, + *, + type: Optional[str] = None, + title: Optional[str] = None, + detail: Optional[str] = None, + status: Optional[str] = None, + instance: Optional[str] = None, + model: Optional[str] = None, + explore: Optional[str] = None, + field_name: Optional[str] = None, + content_type: Optional[str] = None, + folder: Optional[str] = None, + url: Optional[str] = None, + tile_type: Optional[str] = None, + tile_title: Optional[str] = None, + message: Optional[str] = None + ): self.type = type self.title = title self.detail = detail @@ -1619,12 +1774,16 @@ class CIContentValidatorErrorItem(model.Model): content_error: generic_error: """ + content_error: Optional["CIContentValidatorContentError"] = None generic_error: Optional["CIGenericError"] = None - def __init__(self, *, - content_error: Optional["CIContentValidatorContentError"] = None, - generic_error: Optional["CIGenericError"] = None): + def __init__( + self, + *, + content_error: Optional["CIContentValidatorContentError"] = None, + generic_error: Optional["CIGenericError"] = None + ): self.content_error = content_error self.generic_error = generic_error @@ -1638,16 +1797,20 @@ class CIContentValidatorResult(model.Model): status: Status of the validation (unknown, failed, passed, skipped, errored, cancelled, queued, running) tested: Results of the content validation """ + name: Optional[str] = None incremental: Optional[bool] = None status: Optional[str] = None tested: Optional[Sequence["CIContentValidatorTestedExplore"]] = None - def __init__(self, *, - name: Optional[str] = None, - incremental: Optional[bool] = None, - status: Optional[str] = None, - tested: Optional[Sequence["CIContentValidatorTestedExplore"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + incremental: Optional[bool] = None, + status: Optional[str] = None, + tested: Optional[Sequence["CIContentValidatorTestedExplore"]] = None + ): self.name = name self.incremental = incremental self.status = status @@ -1665,6 +1828,7 @@ class CIContentValidatorTestedExplore(model.Model): error_count: Total number of failed content validations errors: Details of the content that failed validation """ + model: Optional[str] = None explore: Optional[str] = None status: Optional[str] = None @@ -1672,13 +1836,16 @@ class CIContentValidatorTestedExplore(model.Model): error_count: Optional[int] = None errors: Optional[Sequence["CIContentValidatorErrorItem"]] = None - def __init__(self, *, - model: Optional[str] = None, - explore: Optional[str] = None, - status: Optional[str] = None, - skip_reason: Optional[str] = None, - error_count: Optional[int] = None, - errors: Optional[Sequence["CIContentValidatorErrorItem"]] = None): + def __init__( + self, + *, + model: Optional[str] = None, + explore: Optional[str] = None, + status: Optional[str] = None, + skip_reason: Optional[str] = None, + error_count: Optional[int] = None, + errors: Optional[Sequence["CIContentValidatorErrorItem"]] = None + ): self.model = model self.explore = explore self.status = status @@ -1697,18 +1864,22 @@ class CIGenericError(model.Model): status: The HTTP status code for the problem instance: URI reference that identifies the specific occurrence of the problem """ + type: Optional[str] = None title: Optional[str] = None detail: Optional[str] = None status: Optional[str] = None instance: Optional[str] = None - def __init__(self, *, - type: Optional[str] = None, - title: Optional[str] = None, - detail: Optional[str] = None, - status: Optional[str] = None, - instance: Optional[str] = None): + def __init__( + self, + *, + type: Optional[str] = None, + title: Optional[str] = None, + detail: Optional[str] = None, + status: Optional[str] = None, + instance: Optional[str] = None + ): self.type = type self.title = title self.detail = detail @@ -1725,16 +1896,20 @@ class CIGitState(model.Model): commit_ref: Git commit that the CI run validates target: For incremental runs, the Git branch that the CI run compares against during validation """ + branch: Optional[str] = None repository: Optional[str] = None commit_ref: Optional[str] = None target: Optional[str] = None - def __init__(self, *, - branch: Optional[str] = None, - repository: Optional[str] = None, - commit_ref: Optional[str] = None, - target: Optional[str] = None): + def __init__( + self, + *, + branch: Optional[str] = None, + repository: Optional[str] = None, + commit_ref: Optional[str] = None, + target: Optional[str] = None + ): self.branch = branch self.repository = repository self.commit_ref = commit_ref @@ -1759,6 +1934,7 @@ class CILookMLValidatorError(model.Model): lookml_url: URL to the LookML that caused the error file_path: IDE folder path to the LookML file that caused the error """ + type: Optional[str] = None title: Optional[str] = None detail: Optional[str] = None @@ -1773,20 +1949,23 @@ class CILookMLValidatorError(model.Model): lookml_url: Optional[str] = None file_path: Optional[str] = None - def __init__(self, *, - type: Optional[str] = None, - title: Optional[str] = None, - detail: Optional[str] = None, - status: Optional[str] = None, - instance: Optional[str] = None, - model: Optional[str] = None, - explore: Optional[str] = None, - field_name: Optional[str] = None, - message: Optional[str] = None, - severity: Optional[str] = None, - line_number: Optional[str] = None, - lookml_url: Optional[str] = None, - file_path: Optional[str] = None): + def __init__( + self, + *, + type: Optional[str] = None, + title: Optional[str] = None, + detail: Optional[str] = None, + status: Optional[str] = None, + instance: Optional[str] = None, + model: Optional[str] = None, + explore: Optional[str] = None, + field_name: Optional[str] = None, + message: Optional[str] = None, + severity: Optional[str] = None, + line_number: Optional[str] = None, + lookml_url: Optional[str] = None, + file_path: Optional[str] = None + ): self.type = type self.title = title self.detail = detail @@ -1809,12 +1988,16 @@ class CILookMLValidatorErrorItem(model.Model): lookml_error: generic_error: """ + lookml_error: Optional["CILookMLValidatorError"] = None generic_error: Optional["CIGenericError"] = None - def __init__(self, *, - lookml_error: Optional["CILookMLValidatorError"] = None, - generic_error: Optional["CIGenericError"] = None): + def __init__( + self, + *, + lookml_error: Optional["CILookMLValidatorError"] = None, + generic_error: Optional["CIGenericError"] = None + ): self.lookml_error = lookml_error self.generic_error = generic_error @@ -1828,16 +2011,20 @@ class CILookMLValidatorResult(model.Model): error_count: Total number of failed LookML validations errors: Details of the LookML that failed validation """ + name: Optional[str] = None status: Optional[str] = None error_count: Optional[int] = None errors: Optional[Sequence["CILookMLValidatorErrorItem"]] = None - def __init__(self, *, - name: Optional[str] = None, - status: Optional[str] = None, - error_count: Optional[int] = None, - errors: Optional[Sequence["CILookMLValidatorErrorItem"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + status: Optional[str] = None, + error_count: Optional[int] = None, + errors: Optional[Sequence["CILookMLValidatorErrorItem"]] = None + ): self.name = name self.status = status self.error_count = error_count @@ -1880,6 +2067,7 @@ class CIRun(model.Model): run_url: URL of the CI run user_attributes: User attributes for the CI run """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None ci_suite_id: Optional[str] = None @@ -1912,38 +2100,41 @@ class CIRun(model.Model): run_url: Optional[str] = None user_attributes: Optional[Sequence["CIRunUserAttribute"]] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - ci_suite_id: Optional[str] = None, - project_id: Optional[str] = None, - status: Optional[str] = None, - title: Optional[str] = None, - trigger_type: Optional[str] = None, - user_id: Optional[int] = None, - triggered_by_name: Optional[str] = None, - execution_id: Optional[str] = None, - result: Optional["CIRunResult"] = None, - change_request_number: Optional[int] = None, - change_request_url: Optional[str] = None, - change_request_name: Optional[str] = None, - change_request_commits_url: Optional[str] = None, - git_service_name: Optional[str] = None, - git_commit_ref: Optional[str] = None, - git_branch_name: Optional[str] = None, - git_repository_name: Optional[str] = None, - git_target_branch_name: Optional[str] = None, - git_status_url: Optional[str] = None, - git_target_url: Optional[str] = None, - created_at: Optional[datetime.datetime] = None, - started_at: Optional[datetime.datetime] = None, - finished_at: Optional[datetime.datetime] = None, - retries: Optional[int] = None, - assigned_ci_user_id: Optional[int] = None, - assigned_ci_user_at: Optional[datetime.datetime] = None, - crashed_check_count: Optional[int] = None, - run_url: Optional[str] = None, - user_attributes: Optional[Sequence["CIRunUserAttribute"]] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + ci_suite_id: Optional[str] = None, + project_id: Optional[str] = None, + status: Optional[str] = None, + title: Optional[str] = None, + trigger_type: Optional[str] = None, + user_id: Optional[int] = None, + triggered_by_name: Optional[str] = None, + execution_id: Optional[str] = None, + result: Optional["CIRunResult"] = None, + change_request_number: Optional[int] = None, + change_request_url: Optional[str] = None, + change_request_name: Optional[str] = None, + change_request_commits_url: Optional[str] = None, + git_service_name: Optional[str] = None, + git_commit_ref: Optional[str] = None, + git_branch_name: Optional[str] = None, + git_repository_name: Optional[str] = None, + git_target_branch_name: Optional[str] = None, + git_status_url: Optional[str] = None, + git_target_url: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + started_at: Optional[datetime.datetime] = None, + finished_at: Optional[datetime.datetime] = None, + retries: Optional[int] = None, + assigned_ci_user_id: Optional[int] = None, + assigned_ci_user_at: Optional[datetime.datetime] = None, + crashed_check_count: Optional[int] = None, + run_url: Optional[str] = None, + user_attributes: Optional[Sequence["CIRunUserAttribute"]] = None + ): self.can = can self.id = id self.ci_suite_id = ci_suite_id @@ -1991,6 +2182,7 @@ class CIRunResult(model.Model): lookml_error: generic_error: """ + sql_result: Optional["CISqlValidatorResult"] = None sql_error: Optional["CIGenericError"] = None assert_result: Optional["CIAssertValidatorResult"] = None @@ -2001,16 +2193,19 @@ class CIRunResult(model.Model): lookml_error: Optional["CIGenericError"] = None generic_error: Optional["CIGenericError"] = None - def __init__(self, *, - sql_result: Optional["CISqlValidatorResult"] = None, - sql_error: Optional["CIGenericError"] = None, - assert_result: Optional["CIAssertValidatorResult"] = None, - assert_error: Optional["CIGenericError"] = None, - content_result: Optional["CIContentValidatorResult"] = None, - content_error: Optional["CIGenericError"] = None, - lookml_result: Optional["CILookMLValidatorResult"] = None, - lookml_error: Optional["CIGenericError"] = None, - generic_error: Optional["CIGenericError"] = None): + def __init__( + self, + *, + sql_result: Optional["CISqlValidatorResult"] = None, + sql_error: Optional["CIGenericError"] = None, + assert_result: Optional["CIAssertValidatorResult"] = None, + assert_error: Optional["CIGenericError"] = None, + content_result: Optional["CIContentValidatorResult"] = None, + content_error: Optional["CIGenericError"] = None, + lookml_result: Optional["CILookMLValidatorResult"] = None, + lookml_error: Optional["CIGenericError"] = None, + generic_error: Optional["CIGenericError"] = None + ): self.sql_result = sql_result self.sql_error = sql_error self.assert_result = assert_result @@ -2030,14 +2225,18 @@ class CIRunUserAttribute(model.Model): name: Name of the user attribute value: Value of the user attribute """ + id: Optional[int] = None name: Optional[str] = None value: Optional[str] = None - def __init__(self, *, - id: Optional[int] = None, - name: Optional[str] = None, - value: Optional[str] = None): + def __init__( + self, + *, + id: Optional[int] = None, + name: Optional[str] = None, + value: Optional[str] = None + ): self.id = id self.name = name self.value = value @@ -2052,16 +2251,20 @@ class CIScheduleTrigger(model.Model): hour: For schedules runs, the hour of the day (24 hour format) that the CI run is scheduled frequency: For scheduled runs, how often the CI run is scheduled to run (hourly, daily, weekly) """ + enabled: Optional[bool] = None day: Optional[str] = None hour: Optional[str] = None frequency: Optional[str] = None - def __init__(self, *, - enabled: Optional[bool] = None, - day: Optional[str] = None, - hour: Optional[str] = None, - frequency: Optional[str] = None): + def __init__( + self, + *, + enabled: Optional[bool] = None, + day: Optional[str] = None, + hour: Optional[str] = None, + frequency: Optional[str] = None + ): self.enabled = enabled self.day = day self.hour = hour @@ -2085,6 +2288,7 @@ class CISqlValidatorError(model.Model): dimension: LookML dimension that caused the error line_number: Line of the error in the LookML file """ + type: Optional[str] = None title: Optional[str] = None detail: Optional[str] = None @@ -2098,19 +2302,22 @@ class CISqlValidatorError(model.Model): dimension: Optional[str] = None line_number: Optional[str] = None - def __init__(self, *, - type: Optional[str] = None, - title: Optional[str] = None, - detail: Optional[str] = None, - status: Optional[str] = None, - instance: Optional[str] = None, - model: Optional[str] = None, - explore: Optional[str] = None, - message: Optional[str] = None, - explore_url: Optional[str] = None, - lookml_url: Optional[str] = None, - dimension: Optional[str] = None, - line_number: Optional[str] = None): + def __init__( + self, + *, + type: Optional[str] = None, + title: Optional[str] = None, + detail: Optional[str] = None, + status: Optional[str] = None, + instance: Optional[str] = None, + model: Optional[str] = None, + explore: Optional[str] = None, + message: Optional[str] = None, + explore_url: Optional[str] = None, + lookml_url: Optional[str] = None, + dimension: Optional[str] = None, + line_number: Optional[str] = None + ): self.type = type self.title = title self.detail = detail @@ -2132,12 +2339,16 @@ class CISqlValidatorErrorItem(model.Model): sql_error: generic_error: """ + sql_error: Optional["CISqlValidatorError"] = None generic_error: Optional["CIGenericError"] = None - def __init__(self, *, - sql_error: Optional["CISqlValidatorError"] = None, - generic_error: Optional["CIGenericError"] = None): + def __init__( + self, + *, + sql_error: Optional["CISqlValidatorError"] = None, + generic_error: Optional["CIGenericError"] = None + ): self.sql_error = sql_error self.generic_error = generic_error @@ -2151,16 +2362,20 @@ class CISqlValidatorResult(model.Model): status: Status of the validation (unknown, failed, passed, skipped, errored, cancelled, queued, running) tested: The results of tested Explores """ + name: Optional[str] = None incremental: Optional[bool] = None status: Optional[str] = None tested: Optional[Sequence["CISqlValidatorTestedExplore"]] = None - def __init__(self, *, - name: Optional[str] = None, - incremental: Optional[bool] = None, - status: Optional[str] = None, - tested: Optional[Sequence["CISqlValidatorTestedExplore"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + incremental: Optional[bool] = None, + status: Optional[str] = None, + tested: Optional[Sequence["CISqlValidatorTestedExplore"]] = None + ): self.name = name self.incremental = incremental self.status = status @@ -2178,6 +2393,7 @@ class CISqlValidatorTestedExplore(model.Model): error_count: Total number of failed validations errors: Details of the LookML that failed SQL validation """ + model: Optional[str] = None explore: Optional[str] = None status: Optional[str] = None @@ -2185,13 +2401,16 @@ class CISqlValidatorTestedExplore(model.Model): error_count: Optional[int] = None errors: Optional[Sequence["CISqlValidatorErrorItem"]] = None - def __init__(self, *, - model: Optional[str] = None, - explore: Optional[str] = None, - status: Optional[str] = None, - skip_reason: Optional[str] = None, - error_count: Optional[int] = None, - errors: Optional[Sequence["CISqlValidatorErrorItem"]] = None): + def __init__( + self, + *, + model: Optional[str] = None, + explore: Optional[str] = None, + status: Optional[str] = None, + skip_reason: Optional[str] = None, + error_count: Optional[int] = None, + errors: Optional[Sequence["CISqlValidatorErrorItem"]] = None + ): self.model = model self.explore = explore self.status = status @@ -2210,18 +2429,22 @@ class ColorCollection(model.Model): sequentialPalettes: Array of discrete palette definitions divergingPalettes: Array of diverging palette definitions """ + id: Optional[str] = None label: Optional[str] = None categoricalPalettes: Optional[Sequence["DiscretePalette"]] = None sequentialPalettes: Optional[Sequence["ContinuousPalette"]] = None divergingPalettes: Optional[Sequence["ContinuousPalette"]] = None - def __init__(self, *, - id: Optional[str] = None, - label: Optional[str] = None, - categoricalPalettes: Optional[Sequence["DiscretePalette"]] = None, - sequentialPalettes: Optional[Sequence["ContinuousPalette"]] = None, - divergingPalettes: Optional[Sequence["ContinuousPalette"]] = None): + def __init__( + self, + *, + id: Optional[str] = None, + label: Optional[str] = None, + categoricalPalettes: Optional[Sequence["DiscretePalette"]] = None, + sequentialPalettes: Optional[Sequence["ContinuousPalette"]] = None, + divergingPalettes: Optional[Sequence["ContinuousPalette"]] = None + ): self.id = id self.label = label self.categoricalPalettes = categoricalPalettes @@ -2236,12 +2459,11 @@ class ColorStop(model.Model): color: CSS color string offset: Offset in continuous palette (0 to 100) """ + color: Optional[str] = None offset: Optional[int] = None - def __init__(self, *, - color: Optional[str] = None, - offset: Optional[int] = None): + def __init__(self, *, color: Optional[str] = None, offset: Optional[int] = None): self.color = color self.offset = offset @@ -2255,16 +2477,20 @@ class ColumnSearch(model.Model): column_name: Name of column data_type: Column data type """ + schema_name: Optional[str] = None table_name: Optional[str] = None column_name: Optional[str] = None data_type: Optional[str] = None - def __init__(self, *, - schema_name: Optional[str] = None, - table_name: Optional[str] = None, - column_name: Optional[str] = None, - data_type: Optional[str] = None): + def __init__( + self, + *, + schema_name: Optional[str] = None, + table_name: Optional[str] = None, + column_name: Optional[str] = None, + data_type: Optional[str] = None + ): self.schema_name = schema_name self.table_name = table_name self.column_name = column_name @@ -2276,6 +2502,7 @@ class ComparisonType(enum.Enum): This property informs the check what kind of comparison we are performing. Only certain condition types are valid for time series alerts. For details, refer to [Setting Alert Conditions](https://docs.cloud.google.com/looker/docs/sharing-and-publishing/creating-alerts#setting_alert_conditions) Valid values are: "EQUAL_TO", "GREATER_THAN", "GREATER_THAN_OR_EQUAL_TO", "LESS_THAN", "LESS_THAN_OR_EQUAL_TO", "INCREASES_BY", "DECREASES_BY", "CHANGES_BY". (Enum defined in Alert) """ + EQUAL_TO = "EQUAL_TO" GREATER_THAN = "GREATER_THAN" GREATER_THAN_OR_EQUAL_TO = "GREATER_THAN_OR_EQUAL_TO" @@ -2312,6 +2539,7 @@ class ConnectionFeatures(model.Model): timezone: True for timezone conversion in query support connection_pooling: True for connection pooling support """ + dialect_name: Optional[str] = None cost_estimate: Optional[bool] = None multiple_databases: Optional[bool] = None @@ -2329,23 +2557,26 @@ class ConnectionFeatures(model.Model): timezone: Optional[bool] = None connection_pooling: Optional[bool] = None - def __init__(self, *, - dialect_name: Optional[str] = None, - cost_estimate: Optional[bool] = None, - multiple_databases: Optional[bool] = None, - column_search: Optional[bool] = None, - persistent_table_indexes: Optional[bool] = None, - persistent_derived_tables: Optional[bool] = None, - turtles: Optional[bool] = None, - percentile: Optional[bool] = None, - distinct_percentile: Optional[bool] = None, - stable_views: Optional[bool] = None, - milliseconds: Optional[bool] = None, - microseconds: Optional[bool] = None, - subtotals: Optional[bool] = None, - location: Optional[bool] = None, - timezone: Optional[bool] = None, - connection_pooling: Optional[bool] = None): + def __init__( + self, + *, + dialect_name: Optional[str] = None, + cost_estimate: Optional[bool] = None, + multiple_databases: Optional[bool] = None, + column_search: Optional[bool] = None, + persistent_table_indexes: Optional[bool] = None, + persistent_derived_tables: Optional[bool] = None, + turtles: Optional[bool] = None, + percentile: Optional[bool] = None, + distinct_percentile: Optional[bool] = None, + stable_views: Optional[bool] = None, + milliseconds: Optional[bool] = None, + microseconds: Optional[bool] = None, + subtotals: Optional[bool] = None, + location: Optional[bool] = None, + timezone: Optional[bool] = None, + connection_pooling: Optional[bool] = None + ): self.dialect_name = dialect_name self.cost_estimate = cost_estimate self.multiple_databases = multiple_databases @@ -2379,6 +2610,7 @@ class ContentFavorite(model.Model): lookml_dashboard_id: Id of a lookml dashboard lookml_dashboard: """ + id: Optional[str] = None user_id: Optional[str] = None content_metadata_id: Optional[str] = None @@ -2390,17 +2622,20 @@ class ContentFavorite(model.Model): lookml_dashboard_id: Optional[str] = None lookml_dashboard: Optional["DashboardBase"] = None - def __init__(self, *, - id: Optional[str] = None, - user_id: Optional[str] = None, - content_metadata_id: Optional[str] = None, - look_id: Optional[str] = None, - dashboard_id: Optional[str] = None, - look: Optional["LookBasic"] = None, - dashboard: Optional["DashboardBase"] = None, - board_id: Optional[str] = None, - lookml_dashboard_id: Optional[str] = None, - lookml_dashboard: Optional["DashboardBase"] = None): + def __init__( + self, + *, + id: Optional[str] = None, + user_id: Optional[str] = None, + content_metadata_id: Optional[str] = None, + look_id: Optional[str] = None, + dashboard_id: Optional[str] = None, + look: Optional["LookBasic"] = None, + dashboard: Optional["DashboardBase"] = None, + board_id: Optional[str] = None, + lookml_dashboard_id: Optional[str] = None, + lookml_dashboard: Optional["DashboardBase"] = None + ): self.id = id self.user_id = user_id self.content_metadata_id = content_metadata_id @@ -2431,6 +2666,7 @@ class ContentMeta(model.Model): inheriting_id: Id of Inherited Content slug: Content Slug """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -2445,20 +2681,23 @@ class ContentMeta(model.Model): inheriting_id: Optional[str] = None slug: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - name: Optional[str] = None, - parent_id: Optional[str] = None, - dashboard_id: Optional[str] = None, - look_id: Optional[str] = None, - folder_id: Optional[str] = None, - homepage_id: Optional[str] = None, - agent_id: Optional[str] = None, - content_type: Optional[str] = None, - inherits: Optional[bool] = None, - inheriting_id: Optional[str] = None, - slug: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + name: Optional[str] = None, + parent_id: Optional[str] = None, + dashboard_id: Optional[str] = None, + look_id: Optional[str] = None, + folder_id: Optional[str] = None, + homepage_id: Optional[str] = None, + agent_id: Optional[str] = None, + content_type: Optional[str] = None, + inherits: Optional[bool] = None, + inheriting_id: Optional[str] = None, + slug: Optional[str] = None + ): self.can = can self.id = id self.name = name @@ -2487,6 +2726,7 @@ class ContentMetaGroupUser(model.Model): group_id: ID of associated group user_id: ID of associated user """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None content_metadata_id: Optional[str] = None @@ -2494,13 +2734,16 @@ class ContentMetaGroupUser(model.Model): group_id: Optional[str] = None user_id: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - content_metadata_id: Optional[str] = None, - permission_type: Optional["PermissionType"] = None, - group_id: Optional[str] = None, - user_id: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + content_metadata_id: Optional[str] = None, + permission_type: Optional["PermissionType"] = None, + group_id: Optional[str] = None, + user_id: Optional[str] = None + ): self.can = can self.id = id self.content_metadata_id = content_metadata_id @@ -2527,6 +2770,7 @@ class ContentSearch(model.Model): certification_status: Certification status of the content parent_folder_name: Name of the parent folder of the content """ + can: Optional[MutableMapping[str, bool]] = None content_id: Optional[str] = None type: Optional[str] = None @@ -2541,20 +2785,23 @@ class ContentSearch(model.Model): certification_status: Optional[str] = None parent_folder_name: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_id: Optional[str] = None, - type: Optional[str] = None, - title: Optional[str] = None, - description: Optional[str] = None, - folder_id: Optional[str] = None, - folder_name: Optional[str] = None, - view_count: Optional[int] = None, - preferred_viewer: Optional[str] = None, - model: Optional[str] = None, - created_by_id: Optional[int] = None, - certification_status: Optional[str] = None, - parent_folder_name: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_id: Optional[str] = None, + type: Optional[str] = None, + title: Optional[str] = None, + description: Optional[str] = None, + folder_id: Optional[str] = None, + folder_name: Optional[str] = None, + view_count: Optional[int] = None, + preferred_viewer: Optional[str] = None, + model: Optional[str] = None, + created_by_id: Optional[int] = None, + certification_status: Optional[str] = None, + parent_folder_name: Optional[str] = None + ): self.can = can self.content_id = content_id self.type = type @@ -2595,6 +2842,7 @@ class ContentSummary(model.Model): preferred_viewer: The preferred route for viewing this content (ie: dashboards or dashboards-next) certification_metadata: """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None content_type: Optional[str] = None @@ -2616,27 +2864,30 @@ class ContentSummary(model.Model): preferred_viewer: Optional[str] = None certification_metadata: Optional["Certification"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - content_type: Optional[str] = None, - content_id: Optional[str] = None, - content_slug: Optional[str] = None, - content_url: Optional[str] = None, - title: Optional[str] = None, - description: Optional[str] = None, - last_viewed_at: Optional[datetime.datetime] = None, - user_id: Optional[str] = None, - user_full_name: Optional[str] = None, - is_scheduled: Optional[bool] = None, - favorite_count: Optional[int] = None, - view_count: Optional[int] = None, - favorite_id: Optional[str] = None, - weighted_score: Optional[float] = None, - group_weighted_score: Optional[float] = None, - suggestion_score: Optional[float] = None, - preferred_viewer: Optional[str] = None, - certification_metadata: Optional["Certification"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + content_type: Optional[str] = None, + content_id: Optional[str] = None, + content_slug: Optional[str] = None, + content_url: Optional[str] = None, + title: Optional[str] = None, + description: Optional[str] = None, + last_viewed_at: Optional[datetime.datetime] = None, + user_id: Optional[str] = None, + user_full_name: Optional[str] = None, + is_scheduled: Optional[bool] = None, + favorite_count: Optional[int] = None, + view_count: Optional[int] = None, + favorite_id: Optional[str] = None, + weighted_score: Optional[float] = None, + group_weighted_score: Optional[float] = None, + suggestion_score: Optional[float] = None, + preferred_viewer: Optional[str] = None, + certification_metadata: Optional["Certification"] = None + ): self.can = can self.id = id self.content_type = content_type @@ -2672,6 +2923,7 @@ class ContentValidation(model.Model): total_alerts_validated: The number of alerts validated total_explores_validated: The number of explores used across all content validated """ + content_with_errors: Optional[Sequence["ContentValidatorError"]] = None computation_time: Optional[float] = None total_looks_validated: Optional[int] = None @@ -2681,15 +2933,18 @@ class ContentValidation(model.Model): total_alerts_validated: Optional[int] = None total_explores_validated: Optional[int] = None - def __init__(self, *, - content_with_errors: Optional[Sequence["ContentValidatorError"]] = None, - computation_time: Optional[float] = None, - total_looks_validated: Optional[int] = None, - total_dashboard_elements_validated: Optional[int] = None, - total_dashboard_filters_validated: Optional[int] = None, - total_scheduled_plans_validated: Optional[int] = None, - total_alerts_validated: Optional[int] = None, - total_explores_validated: Optional[int] = None): + def __init__( + self, + *, + content_with_errors: Optional[Sequence["ContentValidatorError"]] = None, + computation_time: Optional[float] = None, + total_looks_validated: Optional[int] = None, + total_dashboard_elements_validated: Optional[int] = None, + total_dashboard_filters_validated: Optional[int] = None, + total_scheduled_plans_validated: Optional[int] = None, + total_alerts_validated: Optional[int] = None, + total_explores_validated: Optional[int] = None + ): self.content_with_errors = content_with_errors self.computation_time = computation_time self.total_looks_validated = total_looks_validated @@ -2713,6 +2968,7 @@ class ContentValidationAlert(model.Model): show_custom_url: Boolean to determine if the custom url should be used custom_title: An optional, user-defined title for the alert """ + id: Optional[str] = None lookml_dashboard_id: Optional[str] = None lookml_link_id: Optional[str] = None @@ -2722,15 +2978,18 @@ class ContentValidationAlert(model.Model): show_custom_url: Optional[bool] = None custom_title: Optional[str] = None - def __init__(self, *, - id: Optional[str] = None, - lookml_dashboard_id: Optional[str] = None, - lookml_link_id: Optional[str] = None, - custom_url_base: Optional[str] = None, - custom_url_params: Optional[str] = None, - custom_url_label: Optional[str] = None, - show_custom_url: Optional[bool] = None, - custom_title: Optional[str] = None): + def __init__( + self, + *, + id: Optional[str] = None, + lookml_dashboard_id: Optional[str] = None, + lookml_link_id: Optional[str] = None, + custom_url_base: Optional[str] = None, + custom_url_params: Optional[str] = None, + custom_url_label: Optional[str] = None, + show_custom_url: Optional[bool] = None, + custom_title: Optional[str] = None + ): self.id = id self.lookml_dashboard_id = lookml_dashboard_id self.lookml_link_id = lookml_link_id @@ -2751,18 +3010,22 @@ class ContentValidationDashboard(model.Model): title: Dashboard Title url: Relative URL of the dashboard """ + description: Optional[str] = None id: Optional[str] = None folder: Optional["ContentValidationFolder"] = None title: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - description: Optional[str] = None, - id: Optional[str] = None, - folder: Optional["ContentValidationFolder"] = None, - title: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + description: Optional[str] = None, + id: Optional[str] = None, + folder: Optional["ContentValidationFolder"] = None, + title: Optional[str] = None, + url: Optional[str] = None + ): self.description = description self.id = id self.folder = folder @@ -2793,6 +3056,7 @@ class ContentValidationDashboardElement(model.Model): extension_id: Extension ID aria_description: Custom ARIA description text """ + body_text: Optional[str] = None dashboard_id: Optional[str] = None id: Optional[str] = None @@ -2812,25 +3076,28 @@ class ContentValidationDashboardElement(model.Model): extension_id: Optional[str] = None aria_description: Optional[str] = None - def __init__(self, *, - body_text: Optional[str] = None, - dashboard_id: Optional[str] = None, - id: Optional[str] = None, - look_id: Optional[str] = None, - note_display: Optional[str] = None, - note_state: Optional[str] = None, - note_text: Optional[str] = None, - note_text_as_html: Optional[str] = None, - query_id: Optional[str] = None, - filter_id: Optional[str] = None, - subtitle_text: Optional[str] = None, - title: Optional[str] = None, - title_hidden: Optional[bool] = None, - title_text: Optional[str] = None, - type: Optional[str] = None, - rich_content_json: Optional[str] = None, - extension_id: Optional[str] = None, - aria_description: Optional[str] = None): + def __init__( + self, + *, + body_text: Optional[str] = None, + dashboard_id: Optional[str] = None, + id: Optional[str] = None, + look_id: Optional[str] = None, + note_display: Optional[str] = None, + note_state: Optional[str] = None, + note_text: Optional[str] = None, + note_text_as_html: Optional[str] = None, + query_id: Optional[str] = None, + filter_id: Optional[str] = None, + subtitle_text: Optional[str] = None, + title: Optional[str] = None, + title_hidden: Optional[bool] = None, + title_text: Optional[str] = None, + type: Optional[str] = None, + rich_content_json: Optional[str] = None, + extension_id: Optional[str] = None, + aria_description: Optional[str] = None + ): self.body_text = body_text self.dashboard_id = dashboard_id self.id = id @@ -2865,6 +3132,7 @@ class ContentValidationDashboardFilter(model.Model): explore: Explore of filter (required if type = field) dimension: Dimension of filter (required if type = field) """ + id: Optional[str] = None dashboard_id: Optional[str] = None name: Optional[str] = None @@ -2875,16 +3143,19 @@ class ContentValidationDashboardFilter(model.Model): explore: Optional[str] = None dimension: Optional[str] = None - def __init__(self, *, - id: Optional[str] = None, - dashboard_id: Optional[str] = None, - name: Optional[str] = None, - title: Optional[str] = None, - type: Optional[str] = None, - default_value: Optional[str] = None, - model: Optional[str] = None, - explore: Optional[str] = None, - dimension: Optional[str] = None): + def __init__( + self, + *, + id: Optional[str] = None, + dashboard_id: Optional[str] = None, + name: Optional[str] = None, + title: Optional[str] = None, + type: Optional[str] = None, + default_value: Optional[str] = None, + model: Optional[str] = None, + explore: Optional[str] = None, + dimension: Optional[str] = None + ): self.id = id self.dashboard_id = dashboard_id self.name = name @@ -2906,18 +3177,22 @@ class ContentValidationError(model.Model): explore_name: Name of the explore involved in the error removable: Whether this validation error is removable """ + message: Optional[str] = None field_name: Optional[str] = None model_name: Optional[str] = None explore_name: Optional[str] = None removable: Optional[bool] = None - def __init__(self, *, - message: Optional[str] = None, - field_name: Optional[str] = None, - model_name: Optional[str] = None, - explore_name: Optional[str] = None, - removable: Optional[bool] = None): + def __init__( + self, + *, + message: Optional[str] = None, + field_name: Optional[str] = None, + model_name: Optional[str] = None, + explore_name: Optional[str] = None, + removable: Optional[bool] = None + ): self.message = message self.field_name = field_name self.model_name = model_name @@ -2932,12 +3207,11 @@ class ContentValidationFolder(model.Model): name: Unique Name id: Unique Id """ + name: str id: Optional[str] = None - def __init__(self, *, - name: str, - id: Optional[str] = None): + def __init__(self, *, name: str, id: Optional[str] = None): self.name = name self.id = id @@ -2951,16 +3225,20 @@ class ContentValidationLook(model.Model): short_url: Short Url folder: """ + id: Optional[str] = None title: Optional[str] = None short_url: Optional[str] = None folder: Optional["ContentValidationFolder"] = None - def __init__(self, *, - id: Optional[str] = None, - title: Optional[str] = None, - short_url: Optional[str] = None, - folder: Optional["ContentValidationFolder"] = None): + def __init__( + self, + *, + id: Optional[str] = None, + title: Optional[str] = None, + short_url: Optional[str] = None, + folder: Optional["ContentValidationFolder"] = None + ): self.id = id self.title = title self.short_url = short_url @@ -2975,14 +3253,18 @@ class ContentValidationLookMLDashboard(model.Model): title: Title of the LookML Dashboard space_id: ID of Space """ + id: Optional[str] = None title: Optional[str] = None space_id: Optional[str] = None - def __init__(self, *, - id: Optional[str] = None, - title: Optional[str] = None, - space_id: Optional[str] = None): + def __init__( + self, + *, + id: Optional[str] = None, + title: Optional[str] = None, + space_id: Optional[str] = None + ): self.id = id self.title = title self.space_id = space_id @@ -2995,12 +3277,13 @@ class ContentValidationLookMLDashboardElement(model.Model): lookml_link_id: Link ID of the LookML Dashboard Element title: Title of the LookML Dashboard Element """ + lookml_link_id: Optional[str] = None title: Optional[str] = None - def __init__(self, *, - lookml_link_id: Optional[str] = None, - title: Optional[str] = None): + def __init__( + self, *, lookml_link_id: Optional[str] = None, title: Optional[str] = None + ): self.lookml_link_id = lookml_link_id self.title = title @@ -3013,14 +3296,18 @@ class ContentValidationScheduledPlan(model.Model): look_id: Id of a look id: Unique Id """ + name: Optional[str] = None look_id: Optional[str] = None id: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - look_id: Optional[str] = None, - id: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + look_id: Optional[str] = None, + id: Optional[str] = None + ): self.name = name self.look_id = look_id self.id = id @@ -3045,6 +3332,7 @@ class ContentValidatorContentError(model.Model): tile_title: Title of the tile message: Message returned by the content validator """ + type: Optional[str] = None title: Optional[str] = None detail: Optional[str] = None @@ -3060,21 +3348,24 @@ class ContentValidatorContentError(model.Model): tile_title: Optional[str] = None message: Optional[str] = None - def __init__(self, *, - type: Optional[str] = None, - title: Optional[str] = None, - detail: Optional[str] = None, - status: Optional[str] = None, - instance: Optional[str] = None, - model: Optional[str] = None, - explore: Optional[str] = None, - field_name: Optional[str] = None, - content_type: Optional[str] = None, - folder: Optional[str] = None, - url: Optional[str] = None, - tile_type: Optional[str] = None, - tile_title: Optional[str] = None, - message: Optional[str] = None): + def __init__( + self, + *, + type: Optional[str] = None, + title: Optional[str] = None, + detail: Optional[str] = None, + status: Optional[str] = None, + instance: Optional[str] = None, + model: Optional[str] = None, + explore: Optional[str] = None, + field_name: Optional[str] = None, + content_type: Optional[str] = None, + folder: Optional[str] = None, + url: Optional[str] = None, + tile_type: Optional[str] = None, + tile_title: Optional[str] = None, + message: Optional[str] = None + ): self.type = type self.title = title self.detail = detail @@ -3106,6 +3397,7 @@ class ContentValidatorError(model.Model): errors: A list of errors found for this piece of content id: An id unique to this piece of content for this validation run """ + look: Optional["ContentValidationLook"] = None dashboard: Optional["ContentValidationDashboard"] = None dashboard_element: Optional["ContentValidationDashboardElement"] = None @@ -3117,17 +3409,22 @@ class ContentValidatorError(model.Model): errors: Optional[Sequence["ContentValidationError"]] = None id: Optional[str] = None - def __init__(self, *, - look: Optional["ContentValidationLook"] = None, - dashboard: Optional["ContentValidationDashboard"] = None, - dashboard_element: Optional["ContentValidationDashboardElement"] = None, - dashboard_filter: Optional["ContentValidationDashboardFilter"] = None, - scheduled_plan: Optional["ContentValidationScheduledPlan"] = None, - alert: Optional["ContentValidationAlert"] = None, - lookml_dashboard: Optional["ContentValidationLookMLDashboard"] = None, - lookml_dashboard_element: Optional["ContentValidationLookMLDashboardElement"] = None, - errors: Optional[Sequence["ContentValidationError"]] = None, - id: Optional[str] = None): + def __init__( + self, + *, + look: Optional["ContentValidationLook"] = None, + dashboard: Optional["ContentValidationDashboard"] = None, + dashboard_element: Optional["ContentValidationDashboardElement"] = None, + dashboard_filter: Optional["ContentValidationDashboardFilter"] = None, + scheduled_plan: Optional["ContentValidationScheduledPlan"] = None, + alert: Optional["ContentValidationAlert"] = None, + lookml_dashboard: Optional["ContentValidationLookMLDashboard"] = None, + lookml_dashboard_element: Optional[ + "ContentValidationLookMLDashboardElement" + ] = None, + errors: Optional[Sequence["ContentValidationError"]] = None, + id: Optional[str] = None + ): self.look = look self.dashboard = dashboard self.dashboard_element = dashboard_element @@ -3147,12 +3444,16 @@ class ContentValidatorErrorItem(model.Model): content_error: generic_error: """ + content_error: Optional["ContentValidatorContentError"] = None generic_error: Optional["GenericError"] = None - def __init__(self, *, - content_error: Optional["ContentValidatorContentError"] = None, - generic_error: Optional["GenericError"] = None): + def __init__( + self, + *, + content_error: Optional["ContentValidatorContentError"] = None, + generic_error: Optional["GenericError"] = None + ): self.content_error = content_error self.generic_error = generic_error @@ -3166,16 +3467,20 @@ class ContentValidatorResult(model.Model): status: Status of the validation (unknown, failed, passed, skipped, errored, cancelled, queued, running) result: Results of the content validation """ + name: Optional[str] = None incremental: Optional[bool] = None status: Optional[str] = None result: Optional[Sequence["ContentValidatorTestedExplore"]] = None - def __init__(self, *, - name: Optional[str] = None, - incremental: Optional[bool] = None, - status: Optional[str] = None, - result: Optional[Sequence["ContentValidatorTestedExplore"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + incremental: Optional[bool] = None, + status: Optional[str] = None, + result: Optional[Sequence["ContentValidatorTestedExplore"]] = None + ): self.name = name self.incremental = incremental self.status = status @@ -3189,12 +3494,16 @@ class ContentValidatorTestedExplore(model.Model): error_count: Total number of failed content validations errors: Details of the content that failed validation """ + error_count: Optional[int] = None errors: Optional[Sequence["ContentValidatorErrorItem"]] = None - def __init__(self, *, - error_count: Optional[int] = None, - errors: Optional[Sequence["ContentValidatorErrorItem"]] = None): + def __init__( + self, + *, + error_count: Optional[int] = None, + errors: Optional[Sequence["ContentValidatorErrorItem"]] = None + ): self.error_count = error_count self.errors = errors @@ -3216,6 +3525,7 @@ class ContentView(model.Model): last_viewed_at: Date the piece of content was last viewed start_of_week_date: Week start date for the view and favorite count during that given week """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None look_id: Optional[str] = None @@ -3229,19 +3539,22 @@ class ContentView(model.Model): last_viewed_at: Optional[str] = None start_of_week_date: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - look_id: Optional[str] = None, - dashboard_id: Optional[str] = None, - title: Optional[str] = None, - content_metadata_id: Optional[str] = None, - user_id: Optional[str] = None, - group_id: Optional[str] = None, - view_count: Optional[int] = None, - favorite_count: Optional[int] = None, - last_viewed_at: Optional[str] = None, - start_of_week_date: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + look_id: Optional[str] = None, + dashboard_id: Optional[str] = None, + title: Optional[str] = None, + content_metadata_id: Optional[str] = None, + user_id: Optional[str] = None, + group_id: Optional[str] = None, + view_count: Optional[int] = None, + favorite_count: Optional[int] = None, + last_viewed_at: Optional[str] = None, + start_of_week_date: Optional[str] = None + ): self.can = can self.id = id self.look_id = look_id @@ -3262,10 +3575,10 @@ class Context(model.Model): Attributes: instructions: Agent instructions """ + instructions: Optional[str] = None - def __init__(self, *, - instructions: Optional[str] = None): + def __init__(self, *, instructions: Optional[str] = None): self.instructions = instructions @@ -3278,16 +3591,20 @@ class ContinuousPalette(model.Model): type: Type of palette stops: Array of ColorStops in the palette """ + id: Optional[str] = None label: Optional[str] = None type: Optional[str] = None stops: Optional[Sequence["ColorStop"]] = None - def __init__(self, *, - id: Optional[str] = None, - label: Optional[str] = None, - type: Optional[str] = None, - stops: Optional[Sequence["ColorStop"]] = None): + def __init__( + self, + *, + id: Optional[str] = None, + label: Optional[str] = None, + type: Optional[str] = None, + stops: Optional[Sequence["ColorStop"]] = None + ): self.id = id self.label = label self.type = type @@ -3313,6 +3630,7 @@ class Conversation(model.Model): missing_agent: Agent associated with this conversation was deleted studio_conversation_id: Studio Conversation ID (if this conversation was migrated) """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -3328,21 +3646,24 @@ class Conversation(model.Model): missing_agent: Optional[bool] = None studio_conversation_id: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - name: Optional[str] = None, - category: Optional[str] = None, - sources: Optional[Sequence["Source"]] = None, - user_id: Optional[str] = None, - agent_id: Optional[str] = None, - deleted: Optional[bool] = None, - created_at: Optional[datetime.datetime] = None, - updated_at: Optional[datetime.datetime] = None, - messages: Optional[Sequence["ConversationMessage"]] = None, - conversation_agent: Optional["Agent"] = None, - missing_agent: Optional[bool] = None, - studio_conversation_id: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + name: Optional[str] = None, + category: Optional[str] = None, + sources: Optional[Sequence["Source"]] = None, + user_id: Optional[str] = None, + agent_id: Optional[str] = None, + deleted: Optional[bool] = None, + created_at: Optional[datetime.datetime] = None, + updated_at: Optional[datetime.datetime] = None, + messages: Optional[Sequence["ConversationMessage"]] = None, + conversation_agent: Optional["Agent"] = None, + missing_agent: Optional[bool] = None, + studio_conversation_id: Optional[str] = None + ): self.can = can self.id = id self.name = name @@ -3366,12 +3687,11 @@ class ConversationalAnalyticsChatRequest(model.Model): conversation_id: A unique identifier for the conversation. user_message: The text content of the most recent message in the conversation. """ + conversation_id: str user_message: str - def __init__(self, *, - conversation_id: str, - user_message: str): + def __init__(self, *, conversation_id: str, user_message: str): self.conversation_id = conversation_id self.user_message = user_message @@ -3386,18 +3706,22 @@ class ConversationMessage(model.Model): type: Message type order: Message order """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None message: Optional[MutableMapping[str, Any]] = None type: Optional[str] = None order: Optional[int] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - message: Optional[MutableMapping[str, Any]] = None, - type: Optional[str] = None, - order: Optional[int] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + message: Optional[MutableMapping[str, Any]] = None, + type: Optional[str] = None, + order: Optional[int] = None + ): self.can = can self.id = id self.message = message @@ -3414,16 +3738,20 @@ class CostEstimate(model.Model): cost_unit: Cost measurement size message: Human-friendly message """ + cost: Optional[int] = None cache_hit: Optional[bool] = None cost_unit: Optional[str] = None message: Optional[str] = None - def __init__(self, *, - cost: Optional[int] = None, - cache_hit: Optional[bool] = None, - cost_unit: Optional[str] = None, - message: Optional[str] = None): + def __init__( + self, + *, + cost: Optional[int] = None, + cache_hit: Optional[bool] = None, + cost_unit: Optional[str] = None, + message: Optional[str] = None + ): self.cost = cost self.cache_hit = cache_hit self.cost_unit = cost_unit @@ -3438,14 +3766,18 @@ class CreateCIRunRequest(model.Model): branch: Branch that the CI run should validate. Omit to test production. commit: Commit that the CI run should validate. Omit to test production. """ + suite_id: Optional[str] = None branch: Optional[str] = None commit: Optional[str] = None - def __init__(self, *, - suite_id: Optional[str] = None, - branch: Optional[str] = None, - commit: Optional[str] = None): + def __init__( + self, + *, + suite_id: Optional[str] = None, + branch: Optional[str] = None, + commit: Optional[str] = None + ): self.suite_id = suite_id self.branch = branch self.commit = commit @@ -3458,12 +3790,11 @@ class CreateCIRunResponse(model.Model): run_id: ID of the CI run status: Status of the CI run (unknown, failed, passed, skipped, errored, cancelled, queued, running) """ + run_id: Optional[str] = None status: Optional[str] = None - def __init__(self, *, - run_id: Optional[str] = None, - status: Optional[str] = None): + def __init__(self, *, run_id: Optional[str] = None, status: Optional[str] = None): self.run_id = run_id self.status = status @@ -3477,16 +3808,20 @@ class CreateContinuousIntegrationRunRequest(model.Model): commit: Commit that the CI run should validate. Omit to test production. user_attributes: User attributes to override for the CI run. """ + suite_id: Optional[str] = None branch: Optional[str] = None commit: Optional[str] = None user_attributes: Optional[Sequence["UserAttributeOverride"]] = None - def __init__(self, *, - suite_id: Optional[str] = None, - branch: Optional[str] = None, - commit: Optional[str] = None, - user_attributes: Optional[Sequence["UserAttributeOverride"]] = None): + def __init__( + self, + *, + suite_id: Optional[str] = None, + branch: Optional[str] = None, + commit: Optional[str] = None, + user_attributes: Optional[Sequence["UserAttributeOverride"]] = None + ): self.suite_id = suite_id self.branch = branch self.commit = commit @@ -3501,10 +3836,10 @@ class CreateCostEstimate(model.Model): Attributes: sql: SQL statement to estimate """ + sql: Optional[str] = None - def __init__(self, *, - sql: Optional[str] = None): + def __init__(self, *, sql: Optional[str] = None): self.sql = sql @@ -3522,6 +3857,7 @@ class CreateCredentialsApi3(model.Model): client_secret: API key client_secret url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None client_id: Optional[str] = None @@ -3532,16 +3868,19 @@ class CreateCredentialsApi3(model.Model): client_secret: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - client_id: Optional[str] = None, - created_at: Optional[str] = None, - is_disabled: Optional[bool] = None, - type: Optional[str] = None, - purpose: Optional[str] = None, - client_secret: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + client_id: Optional[str] = None, + created_at: Optional[str] = None, + is_disabled: Optional[bool] = None, + type: Optional[str] = None, + purpose: Optional[str] = None, + client_secret: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.id = id self.client_id = client_id @@ -3573,6 +3912,7 @@ class CreateDashboardFilter(model.Model): required: Whether the filter requires a value to run the dashboard ui_config: The visual configuration for this filter. Used to set up how the UI for this filter should appear. """ + dashboard_id: str name: str title: str @@ -3589,22 +3929,25 @@ class CreateDashboardFilter(model.Model): required: Optional[bool] = None ui_config: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - dashboard_id: str, - name: str, - title: str, - type: str, - id: Optional[str] = None, - default_value: Optional[str] = None, - model: Optional[str] = None, - explore: Optional[str] = None, - dimension: Optional[str] = None, - field: Optional[MutableMapping[str, Any]] = None, - row: Optional[int] = None, - listens_to_filters: Optional[Sequence[str]] = None, - allow_multiple_values: Optional[bool] = None, - required: Optional[bool] = None, - ui_config: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + dashboard_id: str, + name: str, + title: str, + type: str, + id: Optional[str] = None, + default_value: Optional[str] = None, + model: Optional[str] = None, + explore: Optional[str] = None, + dimension: Optional[str] = None, + field: Optional[MutableMapping[str, Any]] = None, + row: Optional[int] = None, + listens_to_filters: Optional[Sequence[str]] = None, + allow_multiple_values: Optional[bool] = None, + required: Optional[bool] = None, + ui_config: Optional[MutableMapping[str, Any]] = None + ): self.dashboard_id = dashboard_id self.name = name self.title = title @@ -3630,14 +3973,18 @@ class CreateDashboardRenderTask(model.Model): dashboard_style: Dashboard layout style: single_column or tiled tab_ids: IDs of tabs to render (ID on a UDD and a tab label on lookml dashboards) """ + dashboard_filters: Optional[str] = None dashboard_style: Optional[str] = None tab_ids: Optional[Sequence[str]] = None - def __init__(self, *, - dashboard_filters: Optional[str] = None, - dashboard_style: Optional[str] = None, - tab_ids: Optional[Sequence[str]] = None): + def __init__( + self, + *, + dashboard_filters: Optional[str] = None, + dashboard_style: Optional[str] = None, + tab_ids: Optional[Sequence[str]] = None + ): self.dashboard_filters = dashboard_filters self.dashboard_style = dashboard_style self.tab_ids = tab_ids @@ -3649,10 +3996,10 @@ class CreateEmbedUserRequest(model.Model): Attributes: external_user_id: """ + external_user_id: str - def __init__(self, *, - external_user_id: str): + def __init__(self, *, external_user_id: str): self.external_user_id = external_user_id @@ -3663,12 +4010,11 @@ class CreateFolder(model.Model): name: Unique Name parent_id: Id of Parent. If the parent id is null, this is a root-level entry """ + name: str parent_id: str - def __init__(self, *, - name: str, - parent_id: str): + def __init__(self, *, name: str, parent_id: str): self.name = name self.parent_id = parent_id @@ -3684,6 +4030,7 @@ class CreateOAuthApplicationUserStateRequest(model.Model): refresh_token: refresh_token_expires_at: """ + user_id: str oauth_application_id: str access_token: str @@ -3691,13 +4038,16 @@ class CreateOAuthApplicationUserStateRequest(model.Model): refresh_token: Optional[str] = None refresh_token_expires_at: Optional[datetime.datetime] = None - def __init__(self, *, - user_id: str, - oauth_application_id: str, - access_token: str, - access_token_expires_at: datetime.datetime, - refresh_token: Optional[str] = None, - refresh_token_expires_at: Optional[datetime.datetime] = None): + def __init__( + self, + *, + user_id: str, + oauth_application_id: str, + access_token: str, + access_token_expires_at: datetime.datetime, + refresh_token: Optional[str] = None, + refresh_token_expires_at: Optional[datetime.datetime] = None + ): self.user_id = user_id self.oauth_application_id = oauth_application_id self.access_token = access_token @@ -3713,12 +4063,11 @@ class CreateOAuthApplicationUserStateResponse(model.Model): user_id: User Id oauth_application_id: OAuth Application ID """ + user_id: str oauth_application_id: str - def __init__(self, *, - user_id: str, - oauth_application_id: str): + def __init__(self, *, user_id: str, oauth_application_id: str): self.user_id = user_id self.oauth_application_id = oauth_application_id @@ -3735,6 +4084,7 @@ class CreateQueryTask(model.Model): look_id: Id of look associated with query. dashboard_id: Id of dashboard associated with query. """ + query_id: str result_format: "ResultFormat" can: Optional[MutableMapping[str, bool]] = None @@ -3749,17 +4099,20 @@ class CreateQueryTask(model.Model): "source": Optional[str], "deferred": Optional[bool], "look_id": Optional[str], - "dashboard_id": Optional[str] + "dashboard_id": Optional[str], } - def __init__(self, *, - query_id: str, - result_format: "ResultFormat", - can: Optional[MutableMapping[str, bool]] = None, - source: Optional[str] = None, - deferred: Optional[bool] = None, - look_id: Optional[str] = None, - dashboard_id: Optional[str] = None): + def __init__( + self, + *, + query_id: str, + result_format: "ResultFormat", + can: Optional[MutableMapping[str, bool]] = None, + source: Optional[str] = None, + deferred: Optional[bool] = None, + look_id: Optional[str] = None, + dashboard_id: Optional[str] = None + ): self.query_id = query_id self.result_format = result_format self.can = can @@ -3782,6 +4135,7 @@ class CredentialsApi3(model.Model): purpose: User defined purpose for this credential. url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None client_id: Optional[str] = None @@ -3791,15 +4145,18 @@ class CredentialsApi3(model.Model): purpose: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - client_id: Optional[str] = None, - created_at: Optional[str] = None, - is_disabled: Optional[bool] = None, - type: Optional[str] = None, - purpose: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + client_id: Optional[str] = None, + created_at: Optional[str] = None, + is_disabled: Optional[bool] = None, + type: Optional[str] = None, + purpose: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.id = id self.client_id = client_id @@ -3829,6 +4186,7 @@ class CredentialsEmail(model.Model): url: Link to get this item user_url: Link to get this user """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[str] = None email: Optional[str] = None @@ -3844,21 +4202,24 @@ class CredentialsEmail(model.Model): url: Optional[str] = None user_url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[str] = None, - email: Optional[str] = None, - forced_password_reset_at_next_login: Optional[bool] = None, - user_id: Optional[str] = None, - is_disabled: Optional[bool] = None, - logged_in_at: Optional[str] = None, - password_reset_url: Optional[str] = None, - account_setup_url: Optional[str] = None, - password_reset_url_expired: Optional[bool] = None, - account_setup_url_expired: Optional[bool] = None, - type: Optional[str] = None, - url: Optional[str] = None, - user_url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[str] = None, + email: Optional[str] = None, + forced_password_reset_at_next_login: Optional[bool] = None, + user_id: Optional[str] = None, + is_disabled: Optional[bool] = None, + logged_in_at: Optional[str] = None, + password_reset_url: Optional[str] = None, + account_setup_url: Optional[str] = None, + password_reset_url_expired: Optional[bool] = None, + account_setup_url_expired: Optional[bool] = None, + type: Optional[str] = None, + url: Optional[str] = None, + user_url: Optional[str] = None + ): self.can = can self.created_at = created_at self.email = email @@ -3894,6 +4255,7 @@ class CredentialsEmailSearch(model.Model): url: Link to get this item user_url: Link to get this user """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[str] = None email: Optional[str] = None @@ -3909,21 +4271,24 @@ class CredentialsEmailSearch(model.Model): url: Optional[str] = None user_url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[str] = None, - email: Optional[str] = None, - forced_password_reset_at_next_login: Optional[bool] = None, - user_id: Optional[str] = None, - is_disabled: Optional[bool] = None, - logged_in_at: Optional[str] = None, - password_reset_url: Optional[str] = None, - account_setup_url: Optional[str] = None, - password_reset_url_expired: Optional[bool] = None, - account_setup_url_expired: Optional[bool] = None, - type: Optional[str] = None, - url: Optional[str] = None, - user_url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[str] = None, + email: Optional[str] = None, + forced_password_reset_at_next_login: Optional[bool] = None, + user_id: Optional[str] = None, + is_disabled: Optional[bool] = None, + logged_in_at: Optional[str] = None, + password_reset_url: Optional[str] = None, + account_setup_url: Optional[str] = None, + password_reset_url_expired: Optional[bool] = None, + account_setup_url_expired: Optional[bool] = None, + type: Optional[str] = None, + url: Optional[str] = None, + user_url: Optional[str] = None + ): self.can = can self.created_at = created_at self.email = email @@ -3954,6 +4319,7 @@ class CredentialsEmbed(model.Model): type: Short name for the type of this kind of credential url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[str] = None external_group_id: Optional[str] = None @@ -3964,16 +4330,19 @@ class CredentialsEmbed(model.Model): type: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[str] = None, - external_group_id: Optional[str] = None, - external_user_id: Optional[str] = None, - id: Optional[str] = None, - is_disabled: Optional[bool] = None, - logged_in_at: Optional[str] = None, - type: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[str] = None, + external_group_id: Optional[str] = None, + external_user_id: Optional[str] = None, + id: Optional[str] = None, + is_disabled: Optional[bool] = None, + logged_in_at: Optional[str] = None, + type: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.created_at = created_at self.external_group_id = external_group_id @@ -3999,6 +4368,7 @@ class CredentialsGoogle(model.Model): type: Short name for the type of this kind of credential url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[str] = None domain: Optional[str] = None @@ -4009,16 +4379,19 @@ class CredentialsGoogle(model.Model): type: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[str] = None, - domain: Optional[str] = None, - email: Optional[str] = None, - google_user_id: Optional[str] = None, - is_disabled: Optional[bool] = None, - logged_in_at: Optional[str] = None, - type: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[str] = None, + domain: Optional[str] = None, + email: Optional[str] = None, + google_user_id: Optional[str] = None, + is_disabled: Optional[bool] = None, + logged_in_at: Optional[str] = None, + type: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.created_at = created_at self.domain = domain @@ -4044,6 +4417,7 @@ class CredentialsLDAP(model.Model): type: Short name for the type of this kind of credential url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[str] = None email: Optional[str] = None @@ -4054,16 +4428,19 @@ class CredentialsLDAP(model.Model): type: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[str] = None, - email: Optional[str] = None, - is_disabled: Optional[bool] = None, - ldap_dn: Optional[str] = None, - ldap_id: Optional[str] = None, - logged_in_at: Optional[str] = None, - type: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[str] = None, + email: Optional[str] = None, + is_disabled: Optional[bool] = None, + ldap_dn: Optional[str] = None, + ldap_id: Optional[str] = None, + logged_in_at: Optional[str] = None, + type: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.created_at = created_at self.email = email @@ -4089,6 +4466,7 @@ class CredentialsLookerOpenid(model.Model): url: Link to get this item user_url: Link to get this user """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[str] = None email: Optional[str] = None @@ -4099,16 +4477,19 @@ class CredentialsLookerOpenid(model.Model): url: Optional[str] = None user_url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[str] = None, - email: Optional[str] = None, - is_disabled: Optional[bool] = None, - logged_in_at: Optional[str] = None, - logged_in_ip: Optional[str] = None, - type: Optional[str] = None, - url: Optional[str] = None, - user_url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[str] = None, + email: Optional[str] = None, + is_disabled: Optional[bool] = None, + logged_in_at: Optional[str] = None, + logged_in_ip: Optional[str] = None, + type: Optional[str] = None, + url: Optional[str] = None, + user_url: Optional[str] = None + ): self.can = can self.created_at = created_at self.email = email @@ -4133,6 +4514,7 @@ class CredentialsOIDC(model.Model): type: Short name for the type of this kind of credential url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[str] = None email: Optional[str] = None @@ -4142,15 +4524,18 @@ class CredentialsOIDC(model.Model): type: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[str] = None, - email: Optional[str] = None, - is_disabled: Optional[bool] = None, - logged_in_at: Optional[str] = None, - oidc_user_id: Optional[str] = None, - type: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[str] = None, + email: Optional[str] = None, + is_disabled: Optional[bool] = None, + logged_in_at: Optional[str] = None, + oidc_user_id: Optional[str] = None, + type: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.created_at = created_at self.email = email @@ -4174,6 +4559,7 @@ class CredentialsSaml(model.Model): type: Short name for the type of this kind of credential url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[str] = None email: Optional[str] = None @@ -4183,15 +4569,18 @@ class CredentialsSaml(model.Model): type: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[str] = None, - email: Optional[str] = None, - is_disabled: Optional[bool] = None, - logged_in_at: Optional[str] = None, - saml_user_id: Optional[str] = None, - type: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[str] = None, + email: Optional[str] = None, + is_disabled: Optional[bool] = None, + logged_in_at: Optional[str] = None, + saml_user_id: Optional[str] = None, + type: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.created_at = created_at self.email = email @@ -4215,6 +4604,7 @@ class CredentialsTotp(model.Model): verified: User has verified url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[str] = None is_disabled: Optional[bool] = None @@ -4222,13 +4612,16 @@ class CredentialsTotp(model.Model): verified: Optional[bool] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[str] = None, - is_disabled: Optional[bool] = None, - type: Optional[str] = None, - verified: Optional[bool] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[str] = None, + is_disabled: Optional[bool] = None, + type: Optional[str] = None, + verified: Optional[bool] = None, + url: Optional[str] = None + ): self.can = can self.created_at = created_at self.is_disabled = is_disabled @@ -4250,6 +4643,7 @@ class CredentialsWorkforce(model.Model): type: Short name for the type of this kind of credential url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[str] = None email: Optional[str] = None @@ -4259,15 +4653,18 @@ class CredentialsWorkforce(model.Model): type: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[str] = None, - email: Optional[str] = None, - is_disabled: Optional[bool] = None, - logged_in_at: Optional[str] = None, - workforce_user_id: Optional[str] = None, - type: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[str] = None, + email: Optional[str] = None, + is_disabled: Optional[bool] = None, + logged_in_at: Optional[str] = None, + workforce_user_id: Optional[str] = None, + type: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.created_at = created_at self.email = email @@ -4287,16 +4684,20 @@ class CustomWelcomeEmail(model.Model): subject: The text to appear in the email subject line. Only available with a whitelabel license and whitelabel_configuration.advanced_custom_welcome_email enabled. header: The text to appear in the header line of the email body. Only available with a whitelabel license and whitelabel_configuration.advanced_custom_welcome_email enabled. """ + enabled: Optional[bool] = None content: Optional[str] = None subject: Optional[str] = None header: Optional[str] = None - def __init__(self, *, - enabled: Optional[bool] = None, - content: Optional[str] = None, - subject: Optional[str] = None, - header: Optional[str] = None): + def __init__( + self, + *, + enabled: Optional[bool] = None, + content: Optional[str] = None, + subject: Optional[str] = None, + header: Optional[str] = None + ): self.enabled = enabled self.content = content self.subject = subject @@ -4363,6 +4764,7 @@ class Dashboard(model.Model): preserve_desktop_layout: Whether to preserve the desktop layout on mobile viewports. i.e. don't force a single column layout on mobile. download_settings: """ + can: Optional[MutableMapping[str, bool]] = None content_favorite_id: Optional[str] = None content_metadata_id: Optional[str] = None @@ -4419,62 +4821,65 @@ class Dashboard(model.Model): preserve_desktop_layout: Optional[bool] = None download_settings: Optional["DashboardDownloadSettings"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_favorite_id: Optional[str] = None, - content_metadata_id: Optional[str] = None, - description: Optional[str] = None, - hidden: Optional[bool] = None, - id: Optional[str] = None, - model: Optional["LookModel"] = None, - query_timezone: Optional[str] = None, - readonly: Optional[bool] = None, - refresh_interval: Optional[str] = None, - refresh_interval_to_i: Optional[int] = None, - folder: Optional["FolderBase"] = None, - title: Optional[str] = None, - user_id: Optional[str] = None, - slug: Optional[str] = None, - preferred_viewer: Optional[str] = None, - certification_metadata: Optional["Certification"] = None, - alert_sync_with_dashboard_filter_enabled: Optional[bool] = None, - chat_enabled: Optional[bool] = None, - background_color: Optional[str] = None, - created_at: Optional[datetime.datetime] = None, - crossfilter_enabled: Optional[bool] = None, - dashboard_elements: Optional[Sequence["DashboardElement"]] = None, - dashboard_filters: Optional[Sequence["DashboardFilter"]] = None, - dashboard_layouts: Optional[Sequence["DashboardLayout"]] = None, - deleted: Optional[bool] = None, - deleted_at: Optional[datetime.datetime] = None, - deleter_id: Optional[str] = None, - edit_uri: Optional[str] = None, - enable_viz_full_screen: Optional[bool] = None, - favorite_count: Optional[int] = None, - filters_bar_collapsed: Optional[bool] = None, - filters_location_top: Optional[bool] = None, - last_accessed_at: Optional[datetime.datetime] = None, - last_viewed_at: Optional[datetime.datetime] = None, - updated_at: Optional[datetime.datetime] = None, - last_updater_id: Optional[str] = None, - last_updater_name: Optional[str] = None, - user_name: Optional[str] = None, - load_configuration: Optional[str] = None, - lookml_link_id: Optional[str] = None, - show_filters_bar: Optional[bool] = None, - show_title: Optional[bool] = None, - folder_id: Optional[str] = None, - text_tile_text_color: Optional[str] = None, - tile_background_color: Optional[str] = None, - tile_text_color: Optional[str] = None, - title_color: Optional[str] = None, - view_count: Optional[int] = None, - appearance: Optional["DashboardAppearance"] = None, - usage_count: Optional[int] = None, - is_owner_disabled: Optional[bool] = None, - url: Optional[str] = None, - preserve_desktop_layout: Optional[bool] = None, - download_settings: Optional["DashboardDownloadSettings"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_favorite_id: Optional[str] = None, + content_metadata_id: Optional[str] = None, + description: Optional[str] = None, + hidden: Optional[bool] = None, + id: Optional[str] = None, + model: Optional["LookModel"] = None, + query_timezone: Optional[str] = None, + readonly: Optional[bool] = None, + refresh_interval: Optional[str] = None, + refresh_interval_to_i: Optional[int] = None, + folder: Optional["FolderBase"] = None, + title: Optional[str] = None, + user_id: Optional[str] = None, + slug: Optional[str] = None, + preferred_viewer: Optional[str] = None, + certification_metadata: Optional["Certification"] = None, + alert_sync_with_dashboard_filter_enabled: Optional[bool] = None, + chat_enabled: Optional[bool] = None, + background_color: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + crossfilter_enabled: Optional[bool] = None, + dashboard_elements: Optional[Sequence["DashboardElement"]] = None, + dashboard_filters: Optional[Sequence["DashboardFilter"]] = None, + dashboard_layouts: Optional[Sequence["DashboardLayout"]] = None, + deleted: Optional[bool] = None, + deleted_at: Optional[datetime.datetime] = None, + deleter_id: Optional[str] = None, + edit_uri: Optional[str] = None, + enable_viz_full_screen: Optional[bool] = None, + favorite_count: Optional[int] = None, + filters_bar_collapsed: Optional[bool] = None, + filters_location_top: Optional[bool] = None, + last_accessed_at: Optional[datetime.datetime] = None, + last_viewed_at: Optional[datetime.datetime] = None, + updated_at: Optional[datetime.datetime] = None, + last_updater_id: Optional[str] = None, + last_updater_name: Optional[str] = None, + user_name: Optional[str] = None, + load_configuration: Optional[str] = None, + lookml_link_id: Optional[str] = None, + show_filters_bar: Optional[bool] = None, + show_title: Optional[bool] = None, + folder_id: Optional[str] = None, + text_tile_text_color: Optional[str] = None, + tile_background_color: Optional[str] = None, + tile_text_color: Optional[str] = None, + title_color: Optional[str] = None, + view_count: Optional[int] = None, + appearance: Optional["DashboardAppearance"] = None, + usage_count: Optional[int] = None, + is_owner_disabled: Optional[bool] = None, + url: Optional[str] = None, + preserve_desktop_layout: Optional[bool] = None, + download_settings: Optional["DashboardDownloadSettings"] = None + ): self.can = can self.content_favorite_id = content_favorite_id self.content_metadata_id = content_metadata_id @@ -4492,7 +4897,9 @@ def __init__(self, *, self.slug = slug self.preferred_viewer = preferred_viewer self.certification_metadata = certification_metadata - self.alert_sync_with_dashboard_filter_enabled = alert_sync_with_dashboard_filter_enabled + self.alert_sync_with_dashboard_filter_enabled = ( + alert_sync_with_dashboard_filter_enabled + ) self.chat_enabled = chat_enabled self.background_color = background_color self.created_at = created_at @@ -4539,12 +4946,16 @@ class DashboardAggregateTableLookml(model.Model): dashboard_id: Dashboard Id aggregate_table_lookml: Aggregate Table LookML """ + dashboard_id: Optional[str] = None aggregate_table_lookml: Optional[str] = None - def __init__(self, *, - dashboard_id: Optional[str] = None, - aggregate_table_lookml: Optional[str] = None): + def __init__( + self, + *, + dashboard_id: Optional[str] = None, + aggregate_table_lookml: Optional[str] = None + ): self.dashboard_id = dashboard_id self.aggregate_table_lookml = aggregate_table_lookml @@ -4562,6 +4973,7 @@ class DashboardAppearance(model.Model): key_color: Key color modern_vis2026: Whether to modernize visualizations on this dashboard """ + page_side_margins: Optional[int] = None page_background_color: Optional[str] = None tile_title_alignment: Optional[str] = None @@ -4571,15 +4983,18 @@ class DashboardAppearance(model.Model): key_color: Optional[str] = None modern_vis2026: Optional[bool] = None - def __init__(self, *, - page_side_margins: Optional[int] = None, - page_background_color: Optional[str] = None, - tile_title_alignment: Optional[str] = None, - tile_space_between: Optional[int] = None, - tile_background_color: Optional[str] = None, - tile_shadow: Optional[bool] = None, - key_color: Optional[str] = None, - modern_vis2026: Optional[bool] = None): + def __init__( + self, + *, + page_side_margins: Optional[int] = None, + page_background_color: Optional[str] = None, + tile_title_alignment: Optional[str] = None, + tile_space_between: Optional[int] = None, + tile_background_color: Optional[str] = None, + tile_shadow: Optional[bool] = None, + key_color: Optional[str] = None, + modern_vis2026: Optional[bool] = None + ): self.page_side_margins = page_side_margins self.page_background_color = page_background_color self.tile_title_alignment = tile_title_alignment @@ -4612,6 +5027,7 @@ class DashboardBase(model.Model): preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) certification_metadata: """ + can: Optional[MutableMapping[str, bool]] = None content_favorite_id: Optional[str] = None content_metadata_id: Optional[str] = None @@ -4630,24 +5046,27 @@ class DashboardBase(model.Model): preferred_viewer: Optional[str] = None certification_metadata: Optional["Certification"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_favorite_id: Optional[str] = None, - content_metadata_id: Optional[str] = None, - description: Optional[str] = None, - hidden: Optional[bool] = None, - id: Optional[str] = None, - model: Optional["LookModel"] = None, - query_timezone: Optional[str] = None, - readonly: Optional[bool] = None, - refresh_interval: Optional[str] = None, - refresh_interval_to_i: Optional[int] = None, - folder: Optional["FolderBase"] = None, - title: Optional[str] = None, - user_id: Optional[str] = None, - slug: Optional[str] = None, - preferred_viewer: Optional[str] = None, - certification_metadata: Optional["Certification"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_favorite_id: Optional[str] = None, + content_metadata_id: Optional[str] = None, + description: Optional[str] = None, + hidden: Optional[bool] = None, + id: Optional[str] = None, + model: Optional["LookModel"] = None, + query_timezone: Optional[str] = None, + readonly: Optional[bool] = None, + refresh_interval: Optional[str] = None, + refresh_interval_to_i: Optional[int] = None, + folder: Optional["FolderBase"] = None, + title: Optional[str] = None, + user_id: Optional[str] = None, + slug: Optional[str] = None, + preferred_viewer: Optional[str] = None, + certification_metadata: Optional["Certification"] = None + ): self.can = can self.content_favorite_id = content_favorite_id self.content_metadata_id = content_metadata_id @@ -4678,6 +5097,7 @@ class DashboardDownloadSettings(model.Model): rows_limit: Rows limit columns_limit: Columns limit """ + format_option: Optional[str] = None value_options: Optional[str] = None result_options: Optional[str] = None @@ -4685,13 +5105,16 @@ class DashboardDownloadSettings(model.Model): rows_limit: Optional[int] = None columns_limit: Optional[int] = None - def __init__(self, *, - format_option: Optional[str] = None, - value_options: Optional[str] = None, - result_options: Optional[str] = None, - limit_options: Optional[str] = None, - rows_limit: Optional[int] = None, - columns_limit: Optional[int] = None): + def __init__( + self, + *, + format_option: Optional[str] = None, + value_options: Optional[str] = None, + result_options: Optional[str] = None, + limit_options: Optional[str] = None, + rows_limit: Optional[int] = None, + columns_limit: Optional[int] = None + ): self.format_option = format_option self.value_options = value_options self.result_options = result_options @@ -4739,6 +5162,7 @@ class DashboardElement(model.Model): aria_description: Custom ARIA description text certification_metadata: """ + can: Optional[MutableMapping[str, bool]] = None body_text: Optional[str] = None body_text_as_html: Optional[str] = None @@ -4774,41 +5198,44 @@ class DashboardElement(model.Model): aria_description: Optional[str] = None certification_metadata: Optional["Certification"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - body_text: Optional[str] = None, - body_text_as_html: Optional[str] = None, - dashboard_id: Optional[str] = None, - dashboard_layout_id: Optional[str] = None, - edit_uri: Optional[str] = None, - id: Optional[str] = None, - look: Optional["LookWithQuery"] = None, - look_id: Optional[str] = None, - lookml_link_id: Optional[str] = None, - merge_result_id: Optional[str] = None, - note_display: Optional[str] = None, - note_state: Optional[str] = None, - note_text: Optional[str] = None, - note_text_as_html: Optional[str] = None, - query: Optional["Query"] = None, - query_id: Optional[str] = None, - filter_id: Optional[str] = None, - refresh_interval: Optional[str] = None, - refresh_interval_to_i: Optional[int] = None, - result_maker: Optional["ResultMakerWithIdVisConfigAndDynamicFields"] = None, - result_maker_id: Optional[str] = None, - subtitle_text: Optional[str] = None, - title: Optional[str] = None, - title_hidden: Optional[bool] = None, - title_text: Optional[str] = None, - type: Optional[str] = None, - alert_count: Optional[int] = None, - rich_content_json: Optional[str] = None, - title_text_as_html: Optional[str] = None, - subtitle_text_as_html: Optional[str] = None, - extension_id: Optional[str] = None, - aria_description: Optional[str] = None, - certification_metadata: Optional["Certification"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + body_text: Optional[str] = None, + body_text_as_html: Optional[str] = None, + dashboard_id: Optional[str] = None, + dashboard_layout_id: Optional[str] = None, + edit_uri: Optional[str] = None, + id: Optional[str] = None, + look: Optional["LookWithQuery"] = None, + look_id: Optional[str] = None, + lookml_link_id: Optional[str] = None, + merge_result_id: Optional[str] = None, + note_display: Optional[str] = None, + note_state: Optional[str] = None, + note_text: Optional[str] = None, + note_text_as_html: Optional[str] = None, + query: Optional["Query"] = None, + query_id: Optional[str] = None, + filter_id: Optional[str] = None, + refresh_interval: Optional[str] = None, + refresh_interval_to_i: Optional[int] = None, + result_maker: Optional["ResultMakerWithIdVisConfigAndDynamicFields"] = None, + result_maker_id: Optional[str] = None, + subtitle_text: Optional[str] = None, + title: Optional[str] = None, + title_hidden: Optional[bool] = None, + title_text: Optional[str] = None, + type: Optional[str] = None, + alert_count: Optional[int] = None, + rich_content_json: Optional[str] = None, + title_text_as_html: Optional[str] = None, + subtitle_text_as_html: Optional[str] = None, + extension_id: Optional[str] = None, + aria_description: Optional[str] = None, + certification_metadata: Optional["Certification"] = None + ): self.can = can self.body_text = body_text self.body_text_as_html = body_text_as_html @@ -4866,6 +5293,7 @@ class DashboardFilter(model.Model): required: Whether the filter requires a value to run the dashboard ui_config: The visual configuration for this filter. Used to set up how the UI for this filter should appear. """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None dashboard_id: Optional[str] = None @@ -4883,23 +5311,26 @@ class DashboardFilter(model.Model): required: Optional[bool] = None ui_config: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - dashboard_id: Optional[str] = None, - name: Optional[str] = None, - title: Optional[str] = None, - type: Optional[str] = None, - default_value: Optional[str] = None, - model: Optional[str] = None, - explore: Optional[str] = None, - dimension: Optional[str] = None, - field: Optional[MutableMapping[str, Any]] = None, - row: Optional[int] = None, - listens_to_filters: Optional[Sequence[str]] = None, - allow_multiple_values: Optional[bool] = None, - required: Optional[bool] = None, - ui_config: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + dashboard_id: Optional[str] = None, + name: Optional[str] = None, + title: Optional[str] = None, + type: Optional[str] = None, + default_value: Optional[str] = None, + model: Optional[str] = None, + explore: Optional[str] = None, + dimension: Optional[str] = None, + field: Optional[MutableMapping[str, Any]] = None, + row: Optional[int] = None, + listens_to_filters: Optional[Sequence[str]] = None, + allow_multiple_values: Optional[bool] = None, + required: Optional[bool] = None, + ui_config: Optional[MutableMapping[str, Any]] = None + ): self.can = can self.id = id self.dashboard_id = dashboard_id @@ -4937,6 +5368,7 @@ class DashboardLayout(model.Model): order: Order lookml_link_id: LookML link ID (stable name) """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None dashboard_id: Optional[str] = None @@ -4952,21 +5384,26 @@ class DashboardLayout(model.Model): order: Optional[int] = None lookml_link_id: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - dashboard_id: Optional[str] = None, - type: Optional[str] = None, - active: Optional[bool] = None, - column_width: Optional[int] = None, - width: Optional[int] = None, - deleted: Optional[bool] = None, - dashboard_title: Optional[str] = None, - dashboard_layout_components: Optional[Sequence["DashboardLayoutComponent"]] = None, - label: Optional[str] = None, - description: Optional[str] = None, - order: Optional[int] = None, - lookml_link_id: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + dashboard_id: Optional[str] = None, + type: Optional[str] = None, + active: Optional[bool] = None, + column_width: Optional[int] = None, + width: Optional[int] = None, + deleted: Optional[bool] = None, + dashboard_title: Optional[str] = None, + dashboard_layout_components: Optional[ + Sequence["DashboardLayoutComponent"] + ] = None, + label: Optional[str] = None, + description: Optional[str] = None, + order: Optional[int] = None, + lookml_link_id: Optional[str] = None + ): self.can = can self.id = id self.dashboard_id = dashboard_id @@ -5004,6 +5441,7 @@ class DashboardLayoutComponent(model.Model): granular_width: Width (granular layout) granular_height: Height (granular layout) """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None dashboard_layout_id: Optional[str] = None @@ -5021,23 +5459,26 @@ class DashboardLayoutComponent(model.Model): granular_width: Optional[int] = None granular_height: Optional[int] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - dashboard_layout_id: Optional[str] = None, - dashboard_element_id: Optional[str] = None, - row: Optional[int] = None, - column: Optional[int] = None, - width: Optional[int] = None, - height: Optional[int] = None, - deleted: Optional[bool] = None, - element_title: Optional[str] = None, - element_title_hidden: Optional[bool] = None, - vis_type: Optional[str] = None, - granular_row: Optional[int] = None, - granular_column: Optional[int] = None, - granular_width: Optional[int] = None, - granular_height: Optional[int] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + dashboard_layout_id: Optional[str] = None, + dashboard_element_id: Optional[str] = None, + row: Optional[int] = None, + column: Optional[int] = None, + width: Optional[int] = None, + height: Optional[int] = None, + deleted: Optional[bool] = None, + element_title: Optional[str] = None, + element_title_hidden: Optional[bool] = None, + vis_type: Optional[str] = None, + granular_row: Optional[int] = None, + granular_column: Optional[int] = None, + granular_width: Optional[int] = None, + granular_height: Optional[int] = None + ): self.can = can self.id = id self.dashboard_layout_id = dashboard_layout_id @@ -5064,14 +5505,18 @@ class DashboardLookml(model.Model): folder_id: (Write-Only) Id of the folder lookml: lookml of UDD """ + dashboard_id: Optional[str] = None folder_id: Optional[str] = None lookml: Optional[str] = None - def __init__(self, *, - dashboard_id: Optional[str] = None, - folder_id: Optional[str] = None, - lookml: Optional[str] = None): + def __init__( + self, + *, + dashboard_id: Optional[str] = None, + folder_id: Optional[str] = None, + lookml: Optional[str] = None + ): self.dashboard_id = dashboard_id self.folder_id = folder_id self.lookml = lookml @@ -5084,12 +5529,16 @@ class DataActionForm(model.Model): state: fields: Array of form fields. """ + state: Optional["DataActionUserState"] = None fields: Optional[Sequence["DataActionFormField"]] = None - def __init__(self, *, - state: Optional["DataActionUserState"] = None, - fields: Optional[Sequence["DataActionFormField"]] = None): + def __init__( + self, + *, + state: Optional["DataActionUserState"] = None, + fields: Optional[Sequence["DataActionFormField"]] = None + ): self.state = state self.fields = fields @@ -5108,6 +5557,7 @@ class DataActionFormField(model.Model): required: Whether or not the field is required. This is a user-interface hint. A user interface displaying this form should not submit it without a value for this field. The action server must also perform this validation. options: If the form type is 'select', a list of options to be selected from. """ + name: Optional[str] = None label: Optional[str] = None description: Optional[str] = None @@ -5118,16 +5568,19 @@ class DataActionFormField(model.Model): required: Optional[bool] = None options: Optional[Sequence["DataActionFormSelectOption"]] = None - def __init__(self, *, - name: Optional[str] = None, - label: Optional[str] = None, - description: Optional[str] = None, - type: Optional[str] = None, - default: Optional[str] = None, - oauth_url: Optional[str] = None, - interactive: Optional[bool] = None, - required: Optional[bool] = None, - options: Optional[Sequence["DataActionFormSelectOption"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + label: Optional[str] = None, + description: Optional[str] = None, + type: Optional[str] = None, + default: Optional[str] = None, + oauth_url: Optional[str] = None, + interactive: Optional[bool] = None, + required: Optional[bool] = None, + options: Optional[Sequence["DataActionFormSelectOption"]] = None + ): self.name = name self.label = label self.description = description @@ -5146,12 +5599,11 @@ class DataActionFormSelectOption(model.Model): name: Name label: Human-readable label """ + name: Optional[str] = None label: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - label: Optional[str] = None): + def __init__(self, *, name: Optional[str] = None, label: Optional[str] = None): self.name = name self.label = label @@ -5163,12 +5615,16 @@ class DataActionRequest(model.Model): action: The JSON describing the data action. This JSON should be considered opaque and should be passed through unmodified from the query result it came from. form_values: User input for any form values the data action might use. """ + action: Optional[MutableMapping[str, Any]] = None form_values: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - action: Optional[MutableMapping[str, Any]] = None, - form_values: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + action: Optional[MutableMapping[str, Any]] = None, + form_values: Optional[MutableMapping[str, Any]] = None + ): self.action = action self.form_values = form_values @@ -5183,18 +5639,22 @@ class DataActionResponse(model.Model): validation_errors: message: Optional message returned by the data action server describing the state of the action that took place. This can be used to implement custom failure messages. If a failure is related to a particular form field, the server should send back a validation error instead. The Looker web UI does not currently display any message if the action indicates 'success', but may do so in the future. """ + webhook_id: Optional[str] = None success: Optional[bool] = None refresh_query: Optional[bool] = None validation_errors: Optional["ValidationError"] = None message: Optional[str] = None - def __init__(self, *, - webhook_id: Optional[str] = None, - success: Optional[bool] = None, - refresh_query: Optional[bool] = None, - validation_errors: Optional["ValidationError"] = None, - message: Optional[str] = None): + def __init__( + self, + *, + webhook_id: Optional[str] = None, + success: Optional[bool] = None, + refresh_query: Optional[bool] = None, + validation_errors: Optional["ValidationError"] = None, + message: Optional[str] = None + ): self.webhook_id = webhook_id self.success = success self.refresh_query = refresh_query @@ -5209,12 +5669,13 @@ class DataActionUserState(model.Model): data: User state data refresh_time: Time in seconds until the state needs to be refreshed """ + data: Optional[str] = None refresh_time: Optional[int] = None - def __init__(self, *, - data: Optional[str] = None, - refresh_time: Optional[int] = None): + def __init__( + self, *, data: Optional[str] = None, refresh_time: Optional[int] = None + ): self.data = data self.refresh_time = refresh_time @@ -5227,14 +5688,18 @@ class DataFilter(model.Model): value: The default value used for this filter. type: The type of filter present on a datasource. """ + field: Optional[str] = None value: Optional[str] = None type: Optional[str] = None - def __init__(self, *, - field: Optional[str] = None, - value: Optional[str] = None, - type: Optional[str] = None): + def __init__( + self, + *, + field: Optional[str] = None, + value: Optional[str] = None, + type: Optional[str] = None + ): self.field = field self.value = value self.type = type @@ -5255,6 +5720,7 @@ class Datagroup(model.Model): trigger_value: The value of the trigger when last checked. triggered_at: UNIX timestamp at which this entry became triggered. Cannot be in the future. """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[int] = None id: Optional[str] = None @@ -5266,17 +5732,20 @@ class Datagroup(model.Model): trigger_value: Optional[str] = None triggered_at: Optional[int] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[int] = None, - id: Optional[str] = None, - model_name: Optional[str] = None, - name: Optional[str] = None, - stale_before: Optional[int] = None, - trigger_check_at: Optional[int] = None, - trigger_error: Optional[str] = None, - trigger_value: Optional[str] = None, - triggered_at: Optional[int] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[int] = None, + id: Optional[str] = None, + model_name: Optional[str] = None, + name: Optional[str] = None, + stale_before: Optional[int] = None, + trigger_check_at: Optional[int] = None, + trigger_error: Optional[str] = None, + trigger_value: Optional[str] = None, + triggered_at: Optional[int] = None + ): self.can = can self.created_at = created_at self.id = id @@ -5299,18 +5768,22 @@ class DataMessage(model.Model): generatedLookerQuery: bigQueryJob: """ + query: Optional["DataQuery"] = None generatedSql: Optional[str] = None result: Optional["DataResult"] = None generatedLookerQuery: Optional["Query"] = None bigQueryJob: Optional["BigQueryJob"] = None - def __init__(self, *, - query: Optional["DataQuery"] = None, - generatedSql: Optional[str] = None, - result: Optional["DataResult"] = None, - generatedLookerQuery: Optional["Query"] = None, - bigQueryJob: Optional["BigQueryJob"] = None): + def __init__( + self, + *, + query: Optional["DataQuery"] = None, + generatedSql: Optional[str] = None, + result: Optional["DataResult"] = None, + generatedLookerQuery: Optional["Query"] = None, + bigQueryJob: Optional["BigQueryJob"] = None + ): self.query = query self.generatedSql = generatedSql self.result = result @@ -5327,16 +5800,20 @@ class DataQuery(model.Model): datasources: The datasources available to answer the question. looker: """ + question: Optional[str] = None name: Optional[str] = None datasources: Optional[Sequence["Datasource"]] = None looker: Optional["Query"] = None - def __init__(self, *, - question: Optional[str] = None, - name: Optional[str] = None, - datasources: Optional[Sequence["Datasource"]] = None, - looker: Optional["Query"] = None): + def __init__( + self, + *, + question: Optional[str] = None, + name: Optional[str] = None, + datasources: Optional[Sequence["Datasource"]] = None, + looker: Optional["Query"] = None + ): self.question = question self.name = name self.datasources = datasources @@ -5351,14 +5828,18 @@ class DataResult(model.Model): schema: data: The content of the data. """ + name: Optional[str] = None schema: Optional["DataSourceSchema"] = None data: Optional[Sequence[Any]] = None - def __init__(self, *, - name: Optional[str] = None, - schema: Optional["DataSourceSchema"] = None, - data: Optional[Sequence[Any]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + schema: Optional["DataSourceSchema"] = None, + data: Optional[Sequence[Any]] = None + ): self.name = name self.schema = schema self.data = data @@ -5372,14 +5853,18 @@ class Datasource(model.Model): schema: structSchema: A struct representation of the schema. """ + lookerExploreReference: Optional["LookerExploreReference"] = None schema: Optional["DataSourceSchema"] = None structSchema: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - lookerExploreReference: Optional["LookerExploreReference"] = None, - schema: Optional["DataSourceSchema"] = None, - structSchema: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + lookerExploreReference: Optional["LookerExploreReference"] = None, + schema: Optional["DataSourceSchema"] = None, + structSchema: Optional[MutableMapping[str, Any]] = None + ): self.lookerExploreReference = lookerExploreReference self.schema = schema self.structSchema = structSchema @@ -5396,6 +5881,7 @@ class DataSourceSchema(model.Model): displayName: Table displayName. filters: The filters on the datasource's underlying data. """ + fields: Optional[Sequence["Field"]] = None description: Optional[str] = None synonyms: Optional[Sequence[str]] = None @@ -5403,13 +5889,16 @@ class DataSourceSchema(model.Model): displayName: Optional[str] = None filters: Optional[Sequence["DataFilter"]] = None - def __init__(self, *, - fields: Optional[Sequence["Field"]] = None, - description: Optional[str] = None, - synonyms: Optional[Sequence[str]] = None, - tags: Optional[Sequence[str]] = None, - displayName: Optional[str] = None, - filters: Optional[Sequence["DataFilter"]] = None): + def __init__( + self, + *, + fields: Optional[Sequence["Field"]] = None, + description: Optional[str] = None, + synonyms: Optional[Sequence[str]] = None, + tags: Optional[Sequence[str]] = None, + displayName: Optional[str] = None, + filters: Optional[Sequence["DataFilter"]] = None + ): self.fields = fields self.description = description self.synonyms = synonyms @@ -5488,6 +5977,7 @@ class DBConnection(model.Model): query_holding_disabled: Disable query holding for this connection. service_name: Service name used for connections with TNS enabled """ + can: Optional[MutableMapping[str, bool]] = None name: Optional[str] = None dialect: Optional["Dialect"] = None @@ -5554,72 +6044,75 @@ class DBConnection(model.Model): query_holding_disabled: Optional[bool] = None service_name: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - name: Optional[str] = None, - dialect: Optional["Dialect"] = None, - snippets: Optional[Sequence["Snippet"]] = None, - pdts_enabled: Optional[bool] = None, - named_driver_version_requested: Optional[str] = None, - named_driver_version_actual: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - has_password: Optional[bool] = None, - uses_oauth: Optional[bool] = None, - uses_key_pair_auth: Optional[bool] = None, - uses_instance_oauth: Optional[bool] = None, - uses_service_auth: Optional[bool] = None, - certificate: Optional[str] = None, - file_type: Optional[str] = None, - database: Optional[str] = None, - db_timezone: Optional[str] = None, - query_timezone: Optional[str] = None, - schema: Optional[str] = None, - max_connections: Optional[int] = None, - max_queries: Optional[int] = None, - max_queries_per_user: Optional[int] = None, - max_billing_gigabytes: Optional[str] = None, - ssl: Optional[bool] = None, - verify_ssl: Optional[bool] = None, - tmp_db_name: Optional[str] = None, - tmp_db_host: Optional[str] = None, - jdbc_additional_params: Optional[str] = None, - pool_timeout: Optional[int] = None, - dialect_name: Optional[str] = None, - supports_data_studio_link: Optional[bool] = None, - created_at: Optional[str] = None, - user_id: Optional[str] = None, - example: Optional[bool] = None, - user_db_credentials: Optional[bool] = None, - user_attribute_fields: Optional[Sequence[str]] = None, - maintenance_cron: Optional[str] = None, - last_regen_at: Optional[str] = None, - last_reap_at: Optional[str] = None, - sql_runner_precache_tables: Optional[bool] = None, - sql_writing_with_info_schema: Optional[bool] = None, - after_connect_statements: Optional[str] = None, - pdt_context_override: Optional["DBConnectionOverride"] = None, - managed: Optional[bool] = None, - custom_local_port: Optional[int] = None, - tunnel_id: Optional[str] = None, - uses_tns: Optional[bool] = None, - pdt_concurrency: Optional[int] = None, - disable_context_comment: Optional[bool] = None, - oauth_application_id: Optional[str] = None, - always_retry_failed_builds: Optional[bool] = None, - uses_application_default_credentials: Optional[bool] = None, - impersonated_service_account: Optional[str] = None, - cost_estimate_enabled: Optional[bool] = None, - pdt_api_control_enabled: Optional[bool] = None, - connection_pooling: Optional[bool] = None, - default_bq_connection: Optional[bool] = None, - bq_storage_project_id: Optional[str] = None, - bq_roles_verified: Optional[bool] = None, - p4sa_name: Optional[str] = None, - query_holding_disabled: Optional[bool] = None, - service_name: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + name: Optional[str] = None, + dialect: Optional["Dialect"] = None, + snippets: Optional[Sequence["Snippet"]] = None, + pdts_enabled: Optional[bool] = None, + named_driver_version_requested: Optional[str] = None, + named_driver_version_actual: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + has_password: Optional[bool] = None, + uses_oauth: Optional[bool] = None, + uses_key_pair_auth: Optional[bool] = None, + uses_instance_oauth: Optional[bool] = None, + uses_service_auth: Optional[bool] = None, + certificate: Optional[str] = None, + file_type: Optional[str] = None, + database: Optional[str] = None, + db_timezone: Optional[str] = None, + query_timezone: Optional[str] = None, + schema: Optional[str] = None, + max_connections: Optional[int] = None, + max_queries: Optional[int] = None, + max_queries_per_user: Optional[int] = None, + max_billing_gigabytes: Optional[str] = None, + ssl: Optional[bool] = None, + verify_ssl: Optional[bool] = None, + tmp_db_name: Optional[str] = None, + tmp_db_host: Optional[str] = None, + jdbc_additional_params: Optional[str] = None, + pool_timeout: Optional[int] = None, + dialect_name: Optional[str] = None, + supports_data_studio_link: Optional[bool] = None, + created_at: Optional[str] = None, + user_id: Optional[str] = None, + example: Optional[bool] = None, + user_db_credentials: Optional[bool] = None, + user_attribute_fields: Optional[Sequence[str]] = None, + maintenance_cron: Optional[str] = None, + last_regen_at: Optional[str] = None, + last_reap_at: Optional[str] = None, + sql_runner_precache_tables: Optional[bool] = None, + sql_writing_with_info_schema: Optional[bool] = None, + after_connect_statements: Optional[str] = None, + pdt_context_override: Optional["DBConnectionOverride"] = None, + managed: Optional[bool] = None, + custom_local_port: Optional[int] = None, + tunnel_id: Optional[str] = None, + uses_tns: Optional[bool] = None, + pdt_concurrency: Optional[int] = None, + disable_context_comment: Optional[bool] = None, + oauth_application_id: Optional[str] = None, + always_retry_failed_builds: Optional[bool] = None, + uses_application_default_credentials: Optional[bool] = None, + impersonated_service_account: Optional[str] = None, + cost_estimate_enabled: Optional[bool] = None, + pdt_api_control_enabled: Optional[bool] = None, + connection_pooling: Optional[bool] = None, + default_bq_connection: Optional[bool] = None, + bq_storage_project_id: Optional[str] = None, + bq_roles_verified: Optional[bool] = None, + p4sa_name: Optional[str] = None, + query_holding_disabled: Optional[bool] = None, + service_name: Optional[str] = None + ): self.can = can self.name = name self.dialect = dialect @@ -5697,18 +6190,22 @@ class DBConnectionBase(model.Model): snippets: SQL Runner snippets for this connection pdts_enabled: True if PDTs are enabled on this connection """ + can: Optional[MutableMapping[str, bool]] = None name: Optional[str] = None dialect: Optional["Dialect"] = None snippets: Optional[Sequence["Snippet"]] = None pdts_enabled: Optional[bool] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - name: Optional[str] = None, - dialect: Optional["Dialect"] = None, - snippets: Optional[Sequence["Snippet"]] = None, - pdts_enabled: Optional[bool] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + name: Optional[str] = None, + dialect: Optional["Dialect"] = None, + snippets: Optional[Sequence["Snippet"]] = None, + pdts_enabled: Optional[bool] = None + ): self.can = can self.name = name self.dialect = dialect @@ -5744,6 +6241,7 @@ class DBConnectionOverride(model.Model): pdt_after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature (same as after_connect_statements) pdt_service_name: Service name used for connections with TNS enabled """ + context: Optional[str] = None host: Optional[str] = None pdt_host: Optional[str] = None @@ -5768,30 +6266,33 @@ class DBConnectionOverride(model.Model): pdt_after_connect_statements: Optional[str] = None pdt_service_name: Optional[str] = None - def __init__(self, *, - context: Optional[str] = None, - host: Optional[str] = None, - pdt_host: Optional[str] = None, - port: Optional[str] = None, - pdt_port: Optional[str] = None, - username: Optional[str] = None, - pdt_username: Optional[str] = None, - password: Optional[str] = None, - pdt_password: Optional[str] = None, - has_password: Optional[bool] = None, - certificate: Optional[str] = None, - pdt_certificate: Optional[str] = None, - file_type: Optional[str] = None, - pdt_file_type: Optional[str] = None, - database: Optional[str] = None, - pdt_database: Optional[str] = None, - schema: Optional[str] = None, - pdt_schema: Optional[str] = None, - jdbc_additional_params: Optional[str] = None, - pdt_jdbc_additional_params: Optional[str] = None, - after_connect_statements: Optional[str] = None, - pdt_after_connect_statements: Optional[str] = None, - pdt_service_name: Optional[str] = None): + def __init__( + self, + *, + context: Optional[str] = None, + host: Optional[str] = None, + pdt_host: Optional[str] = None, + port: Optional[str] = None, + pdt_port: Optional[str] = None, + username: Optional[str] = None, + pdt_username: Optional[str] = None, + password: Optional[str] = None, + pdt_password: Optional[str] = None, + has_password: Optional[bool] = None, + certificate: Optional[str] = None, + pdt_certificate: Optional[str] = None, + file_type: Optional[str] = None, + pdt_file_type: Optional[str] = None, + database: Optional[str] = None, + pdt_database: Optional[str] = None, + schema: Optional[str] = None, + pdt_schema: Optional[str] = None, + jdbc_additional_params: Optional[str] = None, + pdt_jdbc_additional_params: Optional[str] = None, + after_connect_statements: Optional[str] = None, + pdt_after_connect_statements: Optional[str] = None, + pdt_service_name: Optional[str] = None + ): self.context = context self.host = host self.pdt_host = pdt_host @@ -5827,18 +6328,22 @@ class DBConnectionTestResult(model.Model): name: Name of test status: Result code of test """ + can: Optional[MutableMapping[str, bool]] = None connection_string: Optional[str] = None message: Optional[str] = None name: Optional[str] = None status: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - connection_string: Optional[str] = None, - message: Optional[str] = None, - name: Optional[str] = None, - status: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + connection_string: Optional[str] = None, + message: Optional[str] = None, + name: Optional[str] = None, + status: Optional[str] = None + ): self.can = can self.connection_string = connection_string self.message = message @@ -5855,16 +6360,20 @@ class DelegateOauthTest(model.Model): installation_id: Installation ID success: Whether or not the test was successful """ + name: Optional[str] = None installation_target_id: Optional[str] = None installation_id: Optional[str] = None success: Optional[bool] = None - def __init__(self, *, - name: Optional[str] = None, - installation_target_id: Optional[str] = None, - installation_id: Optional[str] = None, - success: Optional[bool] = None): + def __init__( + self, + *, + name: Optional[str] = None, + installation_target_id: Optional[str] = None, + installation_id: Optional[str] = None, + success: Optional[bool] = None + ): self.name = name self.installation_target_id = installation_target_id self.installation_id = installation_id @@ -5877,10 +6386,10 @@ class DependencyGraph(model.Model): Attributes: graph_text: The graph structure in the dot language that can be rendered into an image. """ + graph_text: Optional[str] = None - def __init__(self, *, - graph_text: Optional[str] = None): + def __init__(self, *, graph_text: Optional[str] = None): self.graph_text = graph_text @@ -5889,6 +6398,7 @@ class DependencyStatus(enum.Enum): Status of the dependencies in your project. Valid values are: "lock_optional", "lock_required", "lock_error", "install_none". (Enum defined in ProjectWorkspace) """ + lock_optional = "lock_optional" lock_required = "lock_required" lock_error = "lock_error" @@ -5908,14 +6418,18 @@ class DeployStatusResponse(model.Model): error: Error message if the deploy failed commit_sha: Commit SHA of the deployment """ + status: Optional[str] = None error: Optional[str] = None commit_sha: Optional[str] = None - def __init__(self, *, - status: Optional[str] = None, - error: Optional[str] = None, - commit_sha: Optional[str] = None): + def __init__( + self, + *, + status: Optional[str] = None, + error: Optional[str] = None, + commit_sha: Optional[str] = None + ): self.status = status self.error = error self.commit_sha = commit_sha @@ -5926,6 +6440,7 @@ class DestinationType(enum.Enum): Type of destination that the alert will be sent to Valid values are: "EMAIL", "ACTION_HUB". (Enum defined in AlertDestination) """ + EMAIL = "EMAIL" ACTION_HUB = "ACTION_HUB" invalid_api_enum_value = "invalid_api_enum_value" @@ -5940,6 +6455,7 @@ class DeviceType(enum.Enum): Specifies type of device. Valid values are: "android", "ios". (Enum defined in MobileToken) """ + android = "android" ios = "ios" invalid_api_enum_value = "invalid_api_enum_value" @@ -5968,6 +6484,7 @@ class Dialect(model.Model): supports_persistent_derived_tables: Whether the dialect supports allowing Looker to build persistent derived tables has_ssl_support: Does the database have client SSL support settable through the JDBC string explicitly? """ + name: Optional[str] = None label: Optional[str] = None supports_cost_estimate: Optional[bool] = None @@ -5983,21 +6500,24 @@ class Dialect(model.Model): supports_persistent_derived_tables: Optional[bool] = None has_ssl_support: Optional[bool] = None - def __init__(self, *, - name: Optional[str] = None, - label: Optional[str] = None, - supports_cost_estimate: Optional[bool] = None, - cost_estimate_style: Optional[str] = None, - persistent_table_indexes: Optional[str] = None, - persistent_table_sortkeys: Optional[str] = None, - persistent_table_distkey: Optional[str] = None, - supports_streaming: Optional[bool] = None, - automatically_run_sql_runner_snippets: Optional[bool] = None, - connection_tests: Optional[Sequence[str]] = None, - supports_inducer: Optional[bool] = None, - supports_multiple_databases: Optional[bool] = None, - supports_persistent_derived_tables: Optional[bool] = None, - has_ssl_support: Optional[bool] = None): + def __init__( + self, + *, + name: Optional[str] = None, + label: Optional[str] = None, + supports_cost_estimate: Optional[bool] = None, + cost_estimate_style: Optional[str] = None, + persistent_table_indexes: Optional[str] = None, + persistent_table_sortkeys: Optional[str] = None, + persistent_table_distkey: Optional[str] = None, + supports_streaming: Optional[bool] = None, + automatically_run_sql_runner_snippets: Optional[bool] = None, + connection_tests: Optional[Sequence[str]] = None, + supports_inducer: Optional[bool] = None, + supports_multiple_databases: Optional[bool] = None, + supports_persistent_derived_tables: Optional[bool] = None, + has_ssl_support: Optional[bool] = None + ): self.name = name self.label = label self.supports_cost_estimate = supports_cost_estimate @@ -6006,7 +6526,9 @@ def __init__(self, *, self.persistent_table_sortkeys = persistent_table_sortkeys self.persistent_table_distkey = persistent_table_distkey self.supports_streaming = supports_streaming - self.automatically_run_sql_runner_snippets = automatically_run_sql_runner_snippets + self.automatically_run_sql_runner_snippets = ( + automatically_run_sql_runner_snippets + ) self.connection_tests = connection_tests self.supports_inducer = supports_inducer self.supports_multiple_databases = supports_multiple_databases @@ -6021,12 +6543,13 @@ class DialectDriverNamesVersion(model.Model): name: Name to be passed to the backend display_name: Name to be displayed in the frontend. """ + name: Optional[str] = None display_name: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - display_name: Optional[str] = None): + def __init__( + self, *, name: Optional[str] = None, display_name: Optional[str] = None + ): self.name = name self.display_name = display_name @@ -6049,6 +6572,7 @@ class DialectInfo(model.Model): supported_driver_versions: Array of supported drivers for a given dialect supported_options: """ + can: Optional[MutableMapping[str, bool]] = None default_max_connections: Optional[str] = None default_port: Optional[str] = None @@ -6063,20 +6587,25 @@ class DialectInfo(model.Model): supported_driver_versions: Optional[Sequence["DialectDriverNamesVersion"]] = None supported_options: Optional["DialectInfoOptions"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - default_max_connections: Optional[str] = None, - default_port: Optional[str] = None, - default_max_queries: Optional[str] = None, - default_max_queries_per_user: Optional[str] = None, - installed: Optional[bool] = None, - label: Optional[str] = None, - label_for_database_equivalent: Optional[str] = None, - label_for_schema_equivalent: Optional[str] = None, - name: Optional[str] = None, - supported_driver_name: Optional[str] = None, - supported_driver_versions: Optional[Sequence["DialectDriverNamesVersion"]] = None, - supported_options: Optional["DialectInfoOptions"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + default_max_connections: Optional[str] = None, + default_port: Optional[str] = None, + default_max_queries: Optional[str] = None, + default_max_queries_per_user: Optional[str] = None, + installed: Optional[bool] = None, + label: Optional[str] = None, + label_for_database_equivalent: Optional[str] = None, + label_for_schema_equivalent: Optional[str] = None, + name: Optional[str] = None, + supported_driver_name: Optional[str] = None, + supported_driver_versions: Optional[ + Sequence["DialectDriverNamesVersion"] + ] = None, + supported_options: Optional["DialectInfoOptions"] = None + ): self.can = can self.default_max_connections = default_max_connections self.default_port = default_port @@ -6121,6 +6650,7 @@ class DialectInfoOptions(model.Model): username_required: Username is required supports_connection_pooling: Has support for connection pooling """ + additional_params: Optional[bool] = None after_connect_statements: Optional[bool] = None analytical_view_dataset: Optional[bool] = None @@ -6146,31 +6676,34 @@ class DialectInfoOptions(model.Model): username_required: Optional[bool] = None supports_connection_pooling: Optional[bool] = None - def __init__(self, *, - additional_params: Optional[bool] = None, - after_connect_statements: Optional[bool] = None, - analytical_view_dataset: Optional[bool] = None, - auth: Optional[bool] = None, - cost_estimate: Optional[bool] = None, - disabled: Optional[bool] = None, - disable_context_comment: Optional[bool] = None, - host: Optional[bool] = None, - instance_name: Optional[bool] = None, - key_pair_authentication: Optional[bool] = None, - max_billing_gigabytes: Optional[bool] = None, - oauth_credentials: Optional[bool] = None, - pdts_for_oauth: Optional[bool] = None, - port: Optional[bool] = None, - project_name: Optional[bool] = None, - schema: Optional[bool] = None, - service_account_credentials: Optional[bool] = None, - ssl: Optional[bool] = None, - timezone: Optional[bool] = None, - tmp_table: Optional[bool] = None, - tns: Optional[bool] = None, - username: Optional[bool] = None, - username_required: Optional[bool] = None, - supports_connection_pooling: Optional[bool] = None): + def __init__( + self, + *, + additional_params: Optional[bool] = None, + after_connect_statements: Optional[bool] = None, + analytical_view_dataset: Optional[bool] = None, + auth: Optional[bool] = None, + cost_estimate: Optional[bool] = None, + disabled: Optional[bool] = None, + disable_context_comment: Optional[bool] = None, + host: Optional[bool] = None, + instance_name: Optional[bool] = None, + key_pair_authentication: Optional[bool] = None, + max_billing_gigabytes: Optional[bool] = None, + oauth_credentials: Optional[bool] = None, + pdts_for_oauth: Optional[bool] = None, + port: Optional[bool] = None, + project_name: Optional[bool] = None, + schema: Optional[bool] = None, + service_account_credentials: Optional[bool] = None, + ssl: Optional[bool] = None, + timezone: Optional[bool] = None, + tmp_table: Optional[bool] = None, + tns: Optional[bool] = None, + username: Optional[bool] = None, + username_required: Optional[bool] = None, + supports_connection_pooling: Optional[bool] = None + ): self.additional_params = additional_params self.after_connect_statements = after_connect_statements self.analytical_view_dataset = analytical_view_dataset @@ -6203,10 +6736,10 @@ class DigestEmails(model.Model): Attributes: is_enabled: Whether or not digest emails are enabled """ + is_enabled: Optional[bool] = None - def __init__(self, *, - is_enabled: Optional[bool] = None): + def __init__(self, *, is_enabled: Optional[bool] = None): self.is_enabled = is_enabled @@ -6216,10 +6749,10 @@ class DigestEmailSend(model.Model): Attributes: configuration_delivered: True if content was successfully generated and delivered """ + configuration_delivered: Optional[bool] = None - def __init__(self, *, - configuration_delivered: Optional[bool] = None): + def __init__(self, *, configuration_delivered: Optional[bool] = None): self.configuration_delivered = configuration_delivered @@ -6232,16 +6765,20 @@ class DiscretePalette(model.Model): type: Type of palette colors: Array of colors in the palette """ + id: Optional[str] = None label: Optional[str] = None type: Optional[str] = None colors: Optional[Sequence[str]] = None - def __init__(self, *, - id: Optional[str] = None, - label: Optional[str] = None, - type: Optional[str] = None, - colors: Optional[Sequence[str]] = None): + def __init__( + self, + *, + id: Optional[str] = None, + label: Optional[str] = None, + type: Optional[str] = None, + colors: Optional[Sequence[str]] = None + ): self.id = id self.label = label self.type = type @@ -6254,10 +6791,10 @@ class EgressIpAddresses(model.Model): Attributes: egress_ip_addresses: Egress IP addresses """ + egress_ip_addresses: Optional[Sequence[str]] = None - def __init__(self, *, - egress_ip_addresses: Optional[Sequence[str]] = None): + def __init__(self, *, egress_ip_addresses: Optional[Sequence[str]] = None): self.egress_ip_addresses = egress_ip_addresses @@ -6279,6 +6816,7 @@ class EmbedConfig(model.Model): permissions: Tree of allowed embed permissions embed_enabled: True if embedding is licensed for this Looker instance. """ + domain_allowlist: Optional[Sequence[str]] = None alert_url_allowlist: Optional[Sequence[str]] = None alert_url_param_owner: Optional[str] = None @@ -6293,20 +6831,23 @@ class EmbedConfig(model.Model): permissions: Optional[MutableMapping[str, Any]] = None embed_enabled: Optional[bool] = None - def __init__(self, *, - domain_allowlist: Optional[Sequence[str]] = None, - alert_url_allowlist: Optional[Sequence[str]] = None, - alert_url_param_owner: Optional[str] = None, - alert_url_label: Optional[str] = None, - sso_auth_enabled: Optional[bool] = None, - embed_cookieless_v2: Optional[bool] = None, - embed_content_navigation: Optional[bool] = None, - embed_content_management: Optional[bool] = None, - strict_sameorigin_for_login: Optional[bool] = None, - look_filters: Optional[bool] = None, - hide_look_navigation: Optional[bool] = None, - permissions: Optional[MutableMapping[str, Any]] = None, - embed_enabled: Optional[bool] = None): + def __init__( + self, + *, + domain_allowlist: Optional[Sequence[str]] = None, + alert_url_allowlist: Optional[Sequence[str]] = None, + alert_url_param_owner: Optional[str] = None, + alert_url_label: Optional[str] = None, + sso_auth_enabled: Optional[bool] = None, + embed_cookieless_v2: Optional[bool] = None, + embed_content_navigation: Optional[bool] = None, + embed_content_management: Optional[bool] = None, + strict_sameorigin_for_login: Optional[bool] = None, + look_filters: Optional[bool] = None, + hide_look_navigation: Optional[bool] = None, + permissions: Optional[MutableMapping[str, Any]] = None, + embed_enabled: Optional[bool] = None + ): self.domain_allowlist = domain_allowlist self.alert_url_allowlist = alert_url_allowlist self.alert_url_param_owner = alert_url_param_owner @@ -6340,6 +6881,7 @@ class EmbedCookielessSessionAcquire(model.Model): embed_domain: The domain of the server embedding the Looker IFRAME. This is an alternative to specifying the domain in the embedded domain allow list in the Looker embed admin page. session_reference_token: Token referencing the embed session and is used to generate new authentication, navigation and api tokens. """ + session_length: Optional[int] = None force_logout_login: Optional[bool] = None external_user_id: Optional[str] = None @@ -6354,20 +6896,23 @@ class EmbedCookielessSessionAcquire(model.Model): embed_domain: Optional[str] = None session_reference_token: Optional[str] = None - def __init__(self, *, - session_length: Optional[int] = None, - force_logout_login: Optional[bool] = None, - external_user_id: Optional[str] = None, - first_name: Optional[str] = None, - last_name: Optional[str] = None, - user_timezone: Optional[str] = None, - permissions: Optional[Sequence[str]] = None, - models: Optional[Sequence[str]] = None, - group_ids: Optional[Sequence[str]] = None, - external_group_id: Optional[str] = None, - user_attributes: Optional[MutableMapping[str, Any]] = None, - embed_domain: Optional[str] = None, - session_reference_token: Optional[str] = None): + def __init__( + self, + *, + session_length: Optional[int] = None, + force_logout_login: Optional[bool] = None, + external_user_id: Optional[str] = None, + first_name: Optional[str] = None, + last_name: Optional[str] = None, + user_timezone: Optional[str] = None, + permissions: Optional[Sequence[str]] = None, + models: Optional[Sequence[str]] = None, + group_ids: Optional[Sequence[str]] = None, + external_group_id: Optional[str] = None, + user_attributes: Optional[MutableMapping[str, Any]] = None, + embed_domain: Optional[str] = None, + session_reference_token: Optional[str] = None + ): self.session_length = session_length self.force_logout_login = force_logout_login self.external_user_id = external_user_id @@ -6391,11 +6936,12 @@ class EmbedCookielessSessionAcquireResponse(model.Model): authentication_token_ttl: Authentication token time to live in seconds. navigation_token: Token used to load and navigate between Looker pages. navigation_token_ttl: Navigation token time to live in seconds. - api_token: Token to used to call Looker APIs. + api_token: Token to used to call Looker APIs. api_token_ttl: Api token time to live in seconds. - session_reference_token: Token referencing the actual embed session. It is used to generate new api, navigation and authentication tokens. api and navigation tokens are short lived and must be refreshed regularly. A new authentication token must be acquired for each IFRAME that is created. The session_reference_token should be kept secure, ideally in the embed hosts application server. + session_reference_token: Token referencing the actual embed session. It is used to generate new api, navigation and authentication tokens. api and navigation tokens are short lived and must be refreshed regularly. A new authentication token must be acquired for each IFRAME that is created. The session_reference_token should be kept secure, ideally in the embed hosts application server. session_reference_token_ttl: Session reference token time to live in seconds. Note that this is the same as actual embed session. The session is expired when the value is set to zero. It is important to note that the generate token endpoint does NOT return an error when the embed session has expired. If an embedding application needs to monitor expiration of embed sessions, check this property for a value of zero. """ + authentication_token: Optional[str] = None authentication_token_ttl: Optional[int] = None navigation_token: Optional[str] = None @@ -6405,15 +6951,18 @@ class EmbedCookielessSessionAcquireResponse(model.Model): session_reference_token: Optional[str] = None session_reference_token_ttl: Optional[int] = None - def __init__(self, *, - authentication_token: Optional[str] = None, - authentication_token_ttl: Optional[int] = None, - navigation_token: Optional[str] = None, - navigation_token_ttl: Optional[int] = None, - api_token: Optional[str] = None, - api_token_ttl: Optional[int] = None, - session_reference_token: Optional[str] = None, - session_reference_token_ttl: Optional[int] = None): + def __init__( + self, + *, + authentication_token: Optional[str] = None, + authentication_token_ttl: Optional[int] = None, + navigation_token: Optional[str] = None, + navigation_token_ttl: Optional[int] = None, + api_token: Optional[str] = None, + api_token_ttl: Optional[int] = None, + session_reference_token: Optional[str] = None, + session_reference_token_ttl: Optional[int] = None + ): self.authentication_token = authentication_token self.authentication_token_ttl = authentication_token_ttl self.navigation_token = navigation_token @@ -6430,16 +6979,20 @@ class EmbedCookielessSessionGenerateTokens(model.Model): Attributes: session_reference_token: Token referencing the embed session and is used to generate new authentication, navigation and api tokens. navigation_token: Token used to load and navigate between Looker pages. - api_token: Token to used to call Looker APIs. + api_token: Token to used to call Looker APIs. """ + session_reference_token: str navigation_token: Optional[str] = None api_token: Optional[str] = None - def __init__(self, *, - session_reference_token: str, - navigation_token: Optional[str] = None, - api_token: Optional[str] = None): + def __init__( + self, + *, + session_reference_token: str, + navigation_token: Optional[str] = None, + api_token: Optional[str] = None + ): self.session_reference_token = session_reference_token self.navigation_token = navigation_token self.api_token = api_token @@ -6452,10 +7005,11 @@ class EmbedCookielessSessionGenerateTokensResponse(model.Model): session_reference_token: Token referencing the embed session and is used to generate new authentication, navigation and api tokens. navigation_token: Token used to load and navigate between Looker pages. navigation_token_ttl: Navigation token time to live in seconds. - api_token: Token to used to call Looker APIs. + api_token: Token to used to call Looker APIs. api_token_ttl: Api token time to live in seconds. session_reference_token_ttl: Session reference token time to live in seconds. Note that this is the same as actual session. """ + session_reference_token: str navigation_token: Optional[str] = None navigation_token_ttl: Optional[int] = None @@ -6463,13 +7017,16 @@ class EmbedCookielessSessionGenerateTokensResponse(model.Model): api_token_ttl: Optional[int] = None session_reference_token_ttl: Optional[int] = None - def __init__(self, *, - session_reference_token: str, - navigation_token: Optional[str] = None, - navigation_token_ttl: Optional[int] = None, - api_token: Optional[str] = None, - api_token_ttl: Optional[int] = None, - session_reference_token_ttl: Optional[int] = None): + def __init__( + self, + *, + session_reference_token: str, + navigation_token: Optional[str] = None, + navigation_token_ttl: Optional[int] = None, + api_token: Optional[str] = None, + api_token_ttl: Optional[int] = None, + session_reference_token_ttl: Optional[int] = None + ): self.session_reference_token = session_reference_token self.navigation_token = navigation_token self.navigation_token_ttl = navigation_token_ttl @@ -6486,14 +7043,18 @@ class EmbedParams(model.Model): session_length: Number of seconds the signed embed session will be valid after the embed session is started. Defaults to 300 seconds. Maximum session length accepted is 2592000 seconds (30 days). force_logout_login: When true, the embed session will purge any residual Looker login state (such as in browser cookies) before creating a new login state with the given embed user info. Defaults to true. """ + target_url: str session_length: Optional[int] = None force_logout_login: Optional[bool] = None - def __init__(self, *, - target_url: str, - session_length: Optional[int] = None, - force_logout_login: Optional[bool] = None): + def __init__( + self, + *, + target_url: str, + session_length: Optional[int] = None, + force_logout_login: Optional[bool] = None + ): self.target_url = target_url self.session_length = session_length self.force_logout_login = force_logout_login @@ -6511,6 +7072,7 @@ class EmbedSecret(model.Model): user_id: Id of user who created this secret secret_type: Field to distinguish between SSO secrets and JWT secrets Valid values are: "SSO", "JWT". """ + algorithm: Optional[str] = None created_at: Optional[str] = None enabled: Optional[bool] = None @@ -6519,14 +7081,17 @@ class EmbedSecret(model.Model): user_id: Optional[str] = None secret_type: Optional["SecretType"] = None - def __init__(self, *, - algorithm: Optional[str] = None, - created_at: Optional[str] = None, - enabled: Optional[bool] = None, - id: Optional[str] = None, - secret: Optional[str] = None, - user_id: Optional[str] = None, - secret_type: Optional["SecretType"] = None): + def __init__( + self, + *, + algorithm: Optional[str] = None, + created_at: Optional[str] = None, + enabled: Optional[bool] = None, + id: Optional[str] = None, + secret: Optional[str] = None, + user_id: Optional[str] = None, + secret_type: Optional["SecretType"] = None + ): self.algorithm = algorithm self.created_at = created_at self.enabled = enabled @@ -6555,6 +7120,7 @@ class EmbedSsoParams(model.Model): secret_id: Id of the embed secret to use to sign this SSO url. If specified, the value must be an id of a valid (active) secret defined in the Looker instance. If not specified, the URL will be signed with the newest active embed secret defined in the Looker instance. embed_domain: Optional. URL of the domain hosting the signed embed URL. If provided and valid, the embed_domain will be added to the embed domain allowlist if it is not currently in the list """ + target_url: str session_length: Optional[int] = None force_logout_login: Optional[bool] = None @@ -6570,21 +7136,24 @@ class EmbedSsoParams(model.Model): secret_id: Optional[str] = None embed_domain: Optional[str] = None - def __init__(self, *, - target_url: str, - session_length: Optional[int] = None, - force_logout_login: Optional[bool] = None, - external_user_id: Optional[str] = None, - first_name: Optional[str] = None, - last_name: Optional[str] = None, - user_timezone: Optional[str] = None, - permissions: Optional[Sequence[str]] = None, - models: Optional[Sequence[str]] = None, - group_ids: Optional[Sequence[str]] = None, - external_group_id: Optional[str] = None, - user_attributes: Optional[MutableMapping[str, Any]] = None, - secret_id: Optional[str] = None, - embed_domain: Optional[str] = None): + def __init__( + self, + *, + target_url: str, + session_length: Optional[int] = None, + force_logout_login: Optional[bool] = None, + external_user_id: Optional[str] = None, + first_name: Optional[str] = None, + last_name: Optional[str] = None, + user_timezone: Optional[str] = None, + permissions: Optional[Sequence[str]] = None, + models: Optional[Sequence[str]] = None, + group_ids: Optional[Sequence[str]] = None, + external_group_id: Optional[str] = None, + user_attributes: Optional[MutableMapping[str, Any]] = None, + secret_id: Optional[str] = None, + embed_domain: Optional[str] = None + ): self.target_url = target_url self.session_length = session_length self.force_logout_login = force_logout_login @@ -6607,10 +7176,10 @@ class EmbedUrlResponse(model.Model): Attributes: url: The embed URL. Any modification to this string will make the URL unusable. """ + url: Optional[str] = None - def __init__(self, *, - url: Optional[str] = None): + def __init__(self, *, url: Optional[str] = None): self.url = url @@ -6619,6 +7188,7 @@ class Enhancements(enum.Enum): Enum of additional alert properties. Valid values are: "NONE", "STRATEGIC_NARRATIVE". (Enum defined in Alert) """ + NONE = "NONE" STRATEGIC_NARRATIVE = "STRATEGIC_NARRATIVE" invalid_api_enum_value = "invalid_api_enum_value" @@ -6635,12 +7205,11 @@ class Error(model.Model): message: Error details documentation_url: Documentation link """ + message: str documentation_url: str - def __init__(self, *, - message: str, - documentation_url: str): + def __init__(self, *, message: str, documentation_url: str): self.message = message self.documentation_url = documentation_url @@ -6651,10 +7220,10 @@ class ErrorMessage(model.Model): Attributes: text: The text of the error. """ + text: Optional[str] = None - def __init__(self, *, - text: Optional[str] = None): + def __init__(self, *, text: Optional[str] = None): self.text = text @@ -6664,10 +7233,10 @@ class ExampleQueries(model.Model): Attributes: exampleQueries: A list of derived and authored example queries. """ + exampleQueries: Optional[Sequence["ExampleQuery"]] = None - def __init__(self, *, - exampleQueries: Optional[Sequence["ExampleQuery"]] = None): + def __init__(self, *, exampleQueries: Optional[Sequence["ExampleQuery"]] = None): self.exampleQueries = exampleQueries @@ -6678,12 +7247,16 @@ class ExampleQuery(model.Model): naturalLanguageQuestion: A natural language question that a user might ask. sqlQuery: The SQL query that should be generated to answer the natural language question. """ + naturalLanguageQuestion: Optional[str] = None sqlQuery: Optional[str] = None - def __init__(self, *, - naturalLanguageQuestion: Optional[str] = None, - sqlQuery: Optional[str] = None): + def __init__( + self, + *, + naturalLanguageQuestion: Optional[str] = None, + sqlQuery: Optional[str] = None + ): self.naturalLanguageQuestion = naturalLanguageQuestion self.sqlQuery = sqlQuery @@ -6702,6 +7275,7 @@ class ExternalOauthApplication(model.Model): bi_directional_data_access: Whether this application supports bi-directional data access. created_at: Creation time for this application """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -6712,16 +7286,19 @@ class ExternalOauthApplication(model.Model): bi_directional_data_access: Optional[bool] = None created_at: Optional[datetime.datetime] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - name: Optional[str] = None, - client_id: Optional[str] = None, - client_secret: Optional[str] = None, - tenant_id: Optional[str] = None, - dialect_name: Optional[str] = None, - bi_directional_data_access: Optional[bool] = None, - created_at: Optional[datetime.datetime] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + name: Optional[str] = None, + client_id: Optional[str] = None, + client_secret: Optional[str] = None, + tenant_id: Optional[str] = None, + dialect_name: Optional[str] = None, + bi_directional_data_access: Optional[bool] = None, + created_at: Optional[datetime.datetime] = None + ): self.can = can self.id = id self.name = name @@ -6748,6 +7325,7 @@ class Field(model.Model): category: Field category. valueFormat: Looker only. Value format of the field. """ + name: Optional[str] = None type: Optional[str] = None description: Optional[str] = None @@ -6759,17 +7337,20 @@ class Field(model.Model): category: Optional[str] = None valueFormat: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - type: Optional[str] = None, - description: Optional[str] = None, - mode: Optional[str] = None, - synonyms: Optional[Sequence[str]] = None, - tags: Optional[Sequence[str]] = None, - displayName: Optional[str] = None, - subfields: Optional[Sequence[Any]] = None, - category: Optional[str] = None, - valueFormat: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + type: Optional[str] = None, + description: Optional[str] = None, + mode: Optional[str] = None, + synonyms: Optional[Sequence[str]] = None, + tags: Optional[Sequence[str]] = None, + displayName: Optional[str] = None, + subfields: Optional[Sequence[Any]] = None, + category: Optional[str] = None, + valueFormat: Optional[str] = None + ): self.name = name self.type = type self.description = description @@ -6787,6 +7368,7 @@ class FillStyle(enum.Enum): The style of dimension fill that is possible for this field. Null if no dimension fill is possible. Valid values are: "enumeration", "range". (Enum defined in LookmlModelExploreField) """ + enumeration = "enumeration" range = "range" invalid_api_enum_value = "invalid_api_enum_value" @@ -6819,6 +7401,7 @@ class Folder(model.Model): dashboards: Dashboards looks: Looks """ + name: str parent_id: Optional[str] = None id: Optional[str] = None @@ -6838,25 +7421,28 @@ class Folder(model.Model): dashboards: Optional[Sequence["DashboardBase"]] = None looks: Optional[Sequence["LookWithDashboards"]] = None - def __init__(self, *, - name: str, - parent_id: Optional[str] = None, - id: Optional[str] = None, - content_metadata_id: Optional[str] = None, - created_at: Optional[datetime.datetime] = None, - creator_id: Optional[str] = None, - child_count: Optional[int] = None, - external_id: Optional[str] = None, - is_embed: Optional[bool] = None, - is_embed_shared_root: Optional[bool] = None, - is_embed_users_root: Optional[bool] = None, - is_personal: Optional[bool] = None, - is_personal_descendant: Optional[bool] = None, - is_shared_root: Optional[bool] = None, - is_users_root: Optional[bool] = None, - can: Optional[MutableMapping[str, bool]] = None, - dashboards: Optional[Sequence["DashboardBase"]] = None, - looks: Optional[Sequence["LookWithDashboards"]] = None): + def __init__( + self, + *, + name: str, + parent_id: Optional[str] = None, + id: Optional[str] = None, + content_metadata_id: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + creator_id: Optional[str] = None, + child_count: Optional[int] = None, + external_id: Optional[str] = None, + is_embed: Optional[bool] = None, + is_embed_shared_root: Optional[bool] = None, + is_embed_users_root: Optional[bool] = None, + is_personal: Optional[bool] = None, + is_personal_descendant: Optional[bool] = None, + is_shared_root: Optional[bool] = None, + is_users_root: Optional[bool] = None, + can: Optional[MutableMapping[str, bool]] = None, + dashboards: Optional[Sequence["DashboardBase"]] = None, + looks: Optional[Sequence["LookWithDashboards"]] = None + ): self.name = name self.parent_id = parent_id self.id = id @@ -6898,6 +7484,7 @@ class FolderBase(model.Model): is_users_root: Folder is the root user folder can: Operations the current user is able to perform on this object """ + name: str parent_id: Optional[str] = None id: Optional[str] = None @@ -6915,23 +7502,26 @@ class FolderBase(model.Model): is_users_root: Optional[bool] = None can: Optional[MutableMapping[str, bool]] = None - def __init__(self, *, - name: str, - parent_id: Optional[str] = None, - id: Optional[str] = None, - content_metadata_id: Optional[str] = None, - created_at: Optional[datetime.datetime] = None, - creator_id: Optional[str] = None, - child_count: Optional[int] = None, - external_id: Optional[str] = None, - is_embed: Optional[bool] = None, - is_embed_shared_root: Optional[bool] = None, - is_embed_users_root: Optional[bool] = None, - is_personal: Optional[bool] = None, - is_personal_descendant: Optional[bool] = None, - is_shared_root: Optional[bool] = None, - is_users_root: Optional[bool] = None, - can: Optional[MutableMapping[str, bool]] = None): + def __init__( + self, + *, + name: str, + parent_id: Optional[str] = None, + id: Optional[str] = None, + content_metadata_id: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + creator_id: Optional[str] = None, + child_count: Optional[int] = None, + external_id: Optional[str] = None, + is_embed: Optional[bool] = None, + is_embed_shared_root: Optional[bool] = None, + is_embed_users_root: Optional[bool] = None, + is_personal: Optional[bool] = None, + is_personal_descendant: Optional[bool] = None, + is_shared_root: Optional[bool] = None, + is_users_root: Optional[bool] = None, + can: Optional[MutableMapping[str, bool]] = None + ): self.name = name self.parent_id = parent_id self.id = id @@ -6955,6 +7545,7 @@ class Format(enum.Enum): Specifies the data format of the region information. Valid values are: "topojson", "vector_tile_region". (Enum defined in LookmlModelExploreFieldMapLayer) """ + topojson = "topojson" vector_tile_region = "vector_tile_region" invalid_api_enum_value = "invalid_api_enum_value" @@ -6974,18 +7565,22 @@ class GenericError(model.Model): status: The HTTP status code for the problem instance: URI reference that identifies the specific occurrence of the problem """ + type: Optional[str] = None title: Optional[str] = None detail: Optional[str] = None status: Optional[str] = None instance: Optional[str] = None - def __init__(self, *, - type: Optional[str] = None, - title: Optional[str] = None, - detail: Optional[str] = None, - status: Optional[str] = None, - instance: Optional[str] = None): + def __init__( + self, + *, + type: Optional[str] = None, + title: Optional[str] = None, + detail: Optional[str] = None, + status: Optional[str] = None, + instance: Optional[str] = None + ): self.type = type self.title = title self.detail = detail @@ -7015,6 +7610,7 @@ class GitBranch(model.Model): ref: The resolved ref of this branch. Updating `ref` results in `git reset --hard ``. remote_ref: The resolved ref of this branch remote. """ + can: Optional[MutableMapping[str, bool]] = None name: Optional[str] = None remote: Optional[str] = None @@ -7033,24 +7629,27 @@ class GitBranch(model.Model): ref: Optional[str] = None remote_ref: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - name: Optional[str] = None, - remote: Optional[str] = None, - remote_name: Optional[str] = None, - error: Optional[str] = None, - message: Optional[str] = None, - owner_name: Optional[str] = None, - readonly: Optional[bool] = None, - personal: Optional[bool] = None, - is_local: Optional[bool] = None, - is_remote: Optional[bool] = None, - is_production: Optional[bool] = None, - ahead_count: Optional[int] = None, - behind_count: Optional[int] = None, - commit_at: Optional[int] = None, - ref: Optional[str] = None, - remote_ref: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + name: Optional[str] = None, + remote: Optional[str] = None, + remote_name: Optional[str] = None, + error: Optional[str] = None, + message: Optional[str] = None, + owner_name: Optional[str] = None, + readonly: Optional[bool] = None, + personal: Optional[bool] = None, + is_local: Optional[bool] = None, + is_remote: Optional[bool] = None, + is_production: Optional[bool] = None, + ahead_count: Optional[int] = None, + behind_count: Optional[int] = None, + commit_at: Optional[int] = None, + ref: Optional[str] = None, + remote_ref: Optional[str] = None + ): self.can = can self.name = name self.remote = remote @@ -7078,14 +7677,18 @@ class GitConnectionTest(model.Model): description: Human readable string describing the test id: A short string, uniquely naming this test """ + can: Optional[MutableMapping[str, bool]] = None description: Optional[str] = None id: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - description: Optional[str] = None, - id: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + description: Optional[str] = None, + id: Optional[str] = None + ): self.can = can self.description = description self.id = id @@ -7100,22 +7703,132 @@ class GitConnectionTestResult(model.Model): message: Additional data from the test status: Either 'pass' or 'fail' """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None message: Optional[str] = None status: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - message: Optional[str] = None, - status: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + message: Optional[str] = None, + status: Optional[str] = None + ): self.can = can self.id = id self.message = message self.status = status +@attr.s(auto_attribs=True, init=False) +class GitDiagnosticIssue(model.Model): + """ + Attributes: + can: Operations the current user is able to perform on this object + id: Unique ID of the diagnostic issue. + report_id: Parent diagnostic report ID. + project_id: Target Looker Project ID. + project_type: Environment scope (developer/production). + issue_type: Git diagnostic issue category. + issue_version: Version schema. + state: Current execution status. + created_at: Creation timestamp. + updated_at: Last update timestamp. + """ + + can: Optional[MutableMapping[str, bool]] = None + id: Optional[str] = None + report_id: Optional[str] = None + project_id: Optional[str] = None + project_type: Optional[str] = None + issue_type: Optional[str] = None + issue_version: Optional[str] = None + state: Optional[str] = None + created_at: Optional[datetime.datetime] = None + updated_at: Optional[datetime.datetime] = None + + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + report_id: Optional[str] = None, + project_id: Optional[str] = None, + project_type: Optional[str] = None, + issue_type: Optional[str] = None, + issue_version: Optional[str] = None, + state: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + updated_at: Optional[datetime.datetime] = None + ): + self.can = can + self.id = id + self.report_id = report_id + self.project_id = project_id + self.project_type = project_type + self.issue_type = issue_type + self.issue_version = issue_version + self.state = state + self.created_at = created_at + self.updated_at = updated_at + + +@attr.s(auto_attribs=True, init=False) +class GitDiagnosticReport(model.Model): + """ + Attributes: + can: Operations the current user is able to perform on this object + id: Unique ID of the git diagnostic report. + project_id: Target Looker Project ID. + user_id: ID of the user initiating the diagnosis. + state: Raw lifecycle state. + status: Status derived from state. + created_at: Creation time. + updated_at: Update time. + project_type: Project structure type. + issues: Diagnostic issues associated with this report. + """ + + can: Optional[MutableMapping[str, bool]] = None + id: Optional[str] = None + project_id: Optional[str] = None + user_id: Optional[str] = None + state: Optional[str] = None + status: Optional[str] = None + created_at: Optional[datetime.datetime] = None + updated_at: Optional[datetime.datetime] = None + project_type: Optional[str] = None + issues: Optional[Sequence["GitDiagnosticIssue"]] = None + + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + project_id: Optional[str] = None, + user_id: Optional[str] = None, + state: Optional[str] = None, + status: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + updated_at: Optional[datetime.datetime] = None, + project_type: Optional[str] = None, + issues: Optional[Sequence["GitDiagnosticIssue"]] = None + ): + self.can = can + self.id = id + self.project_id = project_id + self.user_id = user_id + self.state = state + self.status = status + self.created_at = created_at + self.updated_at = updated_at + self.project_type = project_type + self.issues = issues + + @attr.s(auto_attribs=True, init=False) class GitStatus(model.Model): """ @@ -7125,16 +7838,20 @@ class GitStatus(model.Model): revertable: When true, the file can be reverted to an earlier state text: Git description of the action """ + action: Optional[str] = None conflict: Optional[bool] = None revertable: Optional[bool] = None text: Optional[str] = None - def __init__(self, *, - action: Optional[str] = None, - conflict: Optional[bool] = None, - revertable: Optional[bool] = None, - text: Optional[str] = None): + def __init__( + self, + *, + action: Optional[str] = None, + conflict: Optional[bool] = None, + revertable: Optional[bool] = None, + text: Optional[str] = None + ): self.action = action self.conflict = conflict self.revertable = revertable @@ -7155,7 +7872,15 @@ class GoldenQuery(model.Model): last_updated_by_user_id: ID of the user who last updated the question created_at: Time when the question was created last_updated_at: Time when the question was last updated + explore: The explore name of the golden query + model: The LookML model name of the golden query + fields: Fields of the associated Looker Query + filters: Filters of the associated Looker Query + sorts: Sorts of the associated Looker Query + limit: Limit of the associated Looker Query + client_id: Client ID of the associated Looker Query """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[int] = None query_id: Optional[int] = None @@ -7166,18 +7891,35 @@ class GoldenQuery(model.Model): last_updated_by_user_id: Optional[int] = None created_at: Optional[datetime.datetime] = None last_updated_at: Optional[datetime.datetime] = None + explore: Optional[str] = None + model: Optional[str] = None + fields: Optional[Sequence[str]] = None + filters: Optional[MutableMapping[str, Any]] = None + sorts: Optional[Sequence[str]] = None + limit: Optional[str] = None + client_id: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = None, - query_id: Optional[int] = None, - questions: Optional[Sequence[str]] = None, - answer: Optional[str] = None, - is_active: Optional[bool] = None, - created_by_user_id: Optional[int] = None, - last_updated_by_user_id: Optional[int] = None, - created_at: Optional[datetime.datetime] = None, - last_updated_at: Optional[datetime.datetime] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = None, + query_id: Optional[int] = None, + questions: Optional[Sequence[str]] = None, + answer: Optional[str] = None, + is_active: Optional[bool] = None, + created_by_user_id: Optional[int] = None, + last_updated_by_user_id: Optional[int] = None, + created_at: Optional[datetime.datetime] = None, + last_updated_at: Optional[datetime.datetime] = None, + explore: Optional[str] = None, + model: Optional[str] = None, + fields: Optional[Sequence[str]] = None, + filters: Optional[MutableMapping[str, Any]] = None, + sorts: Optional[Sequence[str]] = None, + limit: Optional[str] = None, + client_id: Optional[str] = None + ): self.can = can self.id = id self.query_id = query_id @@ -7188,6 +7930,13 @@ def __init__(self, *, self.last_updated_by_user_id = last_updated_by_user_id self.created_at = created_at self.last_updated_at = last_updated_at + self.explore = explore + self.model = model + self.fields = fields + self.filters = filters + self.sorts = sorts + self.limit = limit + self.client_id = client_id @attr.s(auto_attribs=True, init=False) @@ -7204,6 +7953,7 @@ class Group(model.Model): name: Name of group user_count: Number of users included in this group """ + can: Optional[MutableMapping[str, bool]] = None can_add_to_content_metadata: Optional[bool] = None contains_current_user: Optional[bool] = None @@ -7214,16 +7964,19 @@ class Group(model.Model): name: Optional[str] = None user_count: Optional[int] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - can_add_to_content_metadata: Optional[bool] = None, - contains_current_user: Optional[bool] = None, - external_group_id: Optional[str] = None, - externally_managed: Optional[bool] = None, - id: Optional[str] = None, - include_by_default: Optional[bool] = None, - name: Optional[str] = None, - user_count: Optional[int] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + can_add_to_content_metadata: Optional[bool] = None, + contains_current_user: Optional[bool] = None, + external_group_id: Optional[str] = None, + externally_managed: Optional[bool] = None, + id: Optional[str] = None, + include_by_default: Optional[bool] = None, + name: Optional[str] = None, + user_count: Optional[int] = None + ): self.can = can self.can_add_to_content_metadata = can_add_to_content_metadata self.contains_current_user = contains_current_user @@ -7251,6 +8004,7 @@ class GroupHierarchy(model.Model): parent_group_ids: IDs of parents of this group role_ids: Role IDs assigned to group """ + can: Optional[MutableMapping[str, bool]] = None can_add_to_content_metadata: Optional[bool] = None contains_current_user: Optional[bool] = None @@ -7263,18 +8017,21 @@ class GroupHierarchy(model.Model): parent_group_ids: Optional[Sequence[str]] = None role_ids: Optional[Sequence[str]] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - can_add_to_content_metadata: Optional[bool] = None, - contains_current_user: Optional[bool] = None, - external_group_id: Optional[str] = None, - externally_managed: Optional[bool] = None, - id: Optional[str] = None, - include_by_default: Optional[bool] = None, - name: Optional[str] = None, - user_count: Optional[int] = None, - parent_group_ids: Optional[Sequence[str]] = None, - role_ids: Optional[Sequence[str]] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + can_add_to_content_metadata: Optional[bool] = None, + contains_current_user: Optional[bool] = None, + external_group_id: Optional[str] = None, + externally_managed: Optional[bool] = None, + id: Optional[str] = None, + include_by_default: Optional[bool] = None, + name: Optional[str] = None, + user_count: Optional[int] = None, + parent_group_ids: Optional[Sequence[str]] = None, + role_ids: Optional[Sequence[str]] = None + ): self.can = can self.can_add_to_content_metadata = can_add_to_content_metadata self.contains_current_user = contains_current_user @@ -7296,10 +8053,10 @@ class GroupIdForGroupInclusion(model.Model): Attributes: group_id: Id of group """ + group_id: Optional[str] = None - def __init__(self, *, - group_id: Optional[str] = None): + def __init__(self, *, group_id: Optional[str] = None): self.group_id = group_id @@ -7311,10 +8068,10 @@ class GroupIdForGroupUserInclusion(model.Model): Attributes: user_id: Id of user """ + user_id: Optional[str] = None - def __init__(self, *, - user_id: Optional[str] = None): + def __init__(self, *, user_id: Optional[str] = None): self.user_id = user_id @@ -7333,6 +8090,7 @@ class GroupSearch(model.Model): user_count: Number of users included in this group roles: Roles assigned to group """ + can: Optional[MutableMapping[str, bool]] = None can_add_to_content_metadata: Optional[bool] = None contains_current_user: Optional[bool] = None @@ -7344,17 +8102,20 @@ class GroupSearch(model.Model): user_count: Optional[int] = None roles: Optional[Sequence["Role"]] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - can_add_to_content_metadata: Optional[bool] = None, - contains_current_user: Optional[bool] = None, - external_group_id: Optional[str] = None, - externally_managed: Optional[bool] = None, - id: Optional[str] = None, - include_by_default: Optional[bool] = None, - name: Optional[str] = None, - user_count: Optional[int] = None, - roles: Optional[Sequence["Role"]] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + can_add_to_content_metadata: Optional[bool] = None, + contains_current_user: Optional[bool] = None, + external_group_id: Optional[str] = None, + externally_managed: Optional[bool] = None, + id: Optional[str] = None, + include_by_default: Optional[bool] = None, + name: Optional[str] = None, + user_count: Optional[int] = None, + roles: Optional[Sequence["Role"]] = None + ): self.can = can self.can_add_to_content_metadata = can_add_to_content_metadata self.contains_current_user = contains_current_user @@ -7400,6 +8161,7 @@ class HomepageItem(model.Model): use_custom_url: Whether the custom url should be used instead of the content url, if the item is associated with content view_count: Number of times content has been viewed, if present """ + can: Optional[MutableMapping[str, bool]] = None content_created_by: Optional[str] = None content_favorite_id: Optional[str] = None @@ -7429,35 +8191,38 @@ class HomepageItem(model.Model): use_custom_url: Optional[bool] = None view_count: Optional[int] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_created_by: Optional[str] = None, - content_favorite_id: Optional[str] = None, - content_metadata_id: Optional[str] = None, - content_updated_at: Optional[str] = None, - custom_description: Optional[str] = None, - custom_image_data_base64: Optional[str] = None, - custom_image_url: Optional[str] = None, - custom_title: Optional[str] = None, - custom_url: Optional[str] = None, - dashboard_id: Optional[str] = None, - description: Optional[str] = None, - favorite_count: Optional[int] = None, - homepage_section_id: Optional[str] = None, - id: Optional[str] = None, - image_url: Optional[str] = None, - location: Optional[str] = None, - look_id: Optional[str] = None, - lookml_dashboard_id: Optional[str] = None, - order: Optional[int] = None, - section_fetch_time: Optional[float] = None, - title: Optional[str] = None, - url: Optional[str] = None, - use_custom_description: Optional[bool] = None, - use_custom_image: Optional[bool] = None, - use_custom_title: Optional[bool] = None, - use_custom_url: Optional[bool] = None, - view_count: Optional[int] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_created_by: Optional[str] = None, + content_favorite_id: Optional[str] = None, + content_metadata_id: Optional[str] = None, + content_updated_at: Optional[str] = None, + custom_description: Optional[str] = None, + custom_image_data_base64: Optional[str] = None, + custom_image_url: Optional[str] = None, + custom_title: Optional[str] = None, + custom_url: Optional[str] = None, + dashboard_id: Optional[str] = None, + description: Optional[str] = None, + favorite_count: Optional[int] = None, + homepage_section_id: Optional[str] = None, + id: Optional[str] = None, + image_url: Optional[str] = None, + location: Optional[str] = None, + look_id: Optional[str] = None, + lookml_dashboard_id: Optional[str] = None, + order: Optional[int] = None, + section_fetch_time: Optional[float] = None, + title: Optional[str] = None, + url: Optional[str] = None, + use_custom_description: Optional[bool] = None, + use_custom_image: Optional[bool] = None, + use_custom_title: Optional[bool] = None, + use_custom_url: Optional[bool] = None, + view_count: Optional[int] = None + ): self.can = can self.content_created_by = content_created_by self.content_favorite_id = content_favorite_id @@ -7506,6 +8271,7 @@ class HomepageSection(model.Model): description: Description of the content found in this section. visible_item_order: ids of the homepage items the user can see in the order they should be displayed """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[datetime.datetime] = None deleted_at: Optional[datetime.datetime] = None @@ -7520,20 +8286,23 @@ class HomepageSection(model.Model): description: Optional[str] = None visible_item_order: Optional[Sequence[str]] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[datetime.datetime] = None, - deleted_at: Optional[datetime.datetime] = None, - detail_url: Optional[str] = None, - homepage_id: Optional[str] = None, - homepage_items: Optional[Sequence["HomepageItem"]] = None, - id: Optional[str] = None, - is_header: Optional[bool] = None, - item_order: Optional[Sequence[str]] = None, - title: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - description: Optional[str] = None, - visible_item_order: Optional[Sequence[str]] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[datetime.datetime] = None, + deleted_at: Optional[datetime.datetime] = None, + detail_url: Optional[str] = None, + homepage_id: Optional[str] = None, + homepage_items: Optional[Sequence["HomepageItem"]] = None, + id: Optional[str] = None, + is_header: Optional[bool] = None, + item_order: Optional[Sequence[str]] = None, + title: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + description: Optional[str] = None, + visible_item_order: Optional[Sequence[str]] = None + ): self.can = can self.created_at = created_at self.deleted_at = deleted_at @@ -7558,16 +8327,20 @@ class ImportedProject(model.Model): ref: Ref for a remote dependency is_remote: Flag signifying if a dependency is remote or local """ + name: Optional[str] = None url: Optional[str] = None ref: Optional[str] = None is_remote: Optional[bool] = None - def __init__(self, *, - name: Optional[str] = None, - url: Optional[str] = None, - ref: Optional[str] = None, - is_remote: Optional[bool] = None): + def __init__( + self, + *, + name: Optional[str] = None, + url: Optional[str] = None, + ref: Optional[str] = None, + is_remote: Optional[bool] = None + ): self.name = name self.url = url self.ref = ref @@ -7581,12 +8354,16 @@ class InstanceConfig(model.Model): feature_flags: Feature flags enabled on the instance license_features: License features enabled on the instance """ + feature_flags: Optional[MutableMapping[str, bool]] = None license_features: Optional[MutableMapping[str, bool]] = None - def __init__(self, *, - feature_flags: Optional[MutableMapping[str, bool]] = None, - license_features: Optional[MutableMapping[str, bool]] = None): + def __init__( + self, + *, + feature_flags: Optional[MutableMapping[str, bool]] = None, + license_features: Optional[MutableMapping[str, bool]] = None + ): self.feature_flags = feature_flags self.license_features = license_features @@ -7614,6 +8391,7 @@ class Integration(model.Model): delegate_oauth: Whether the integration uses delegate oauth, which allows federation between an integration installation scope specific entity (like org, group, and team, etc.) and Looker. installed_delegate_oauth_targets: Whether the integration is available to users. """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None integration_hub_id: Optional[str] = None @@ -7624,7 +8402,9 @@ class Integration(model.Model): supported_formats: Optional[Sequence["SupportedFormats"]] = None supported_action_types: Optional[Sequence["SupportedActionTypes"]] = None supported_formattings: Optional[Sequence["SupportedFormattings"]] = None - supported_visualization_formattings: Optional[Sequence["SupportedVisualizationFormattings"]] = None + supported_visualization_formattings: Optional[ + Sequence["SupportedVisualizationFormattings"] + ] = None supported_download_settings: Optional[Sequence["SupportedDownloadSettings"]] = None icon_url: Optional[str] = None uses_oauth: Optional[bool] = None @@ -7633,25 +8413,32 @@ class Integration(model.Model): delegate_oauth: Optional[bool] = None installed_delegate_oauth_targets: Optional[Sequence[str]] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - integration_hub_id: Optional[str] = None, - label: Optional[str] = None, - description: Optional[str] = None, - enabled: Optional[bool] = None, - params: Optional[Sequence["IntegrationParam"]] = None, - supported_formats: Optional[Sequence["SupportedFormats"]] = None, - supported_action_types: Optional[Sequence["SupportedActionTypes"]] = None, - supported_formattings: Optional[Sequence["SupportedFormattings"]] = None, - supported_visualization_formattings: Optional[Sequence["SupportedVisualizationFormattings"]] = None, - supported_download_settings: Optional[Sequence["SupportedDownloadSettings"]] = None, - icon_url: Optional[str] = None, - uses_oauth: Optional[bool] = None, - required_fields: Optional[Sequence["IntegrationRequiredField"]] = None, - privacy_link: Optional[str] = None, - delegate_oauth: Optional[bool] = None, - installed_delegate_oauth_targets: Optional[Sequence[str]] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + integration_hub_id: Optional[str] = None, + label: Optional[str] = None, + description: Optional[str] = None, + enabled: Optional[bool] = None, + params: Optional[Sequence["IntegrationParam"]] = None, + supported_formats: Optional[Sequence["SupportedFormats"]] = None, + supported_action_types: Optional[Sequence["SupportedActionTypes"]] = None, + supported_formattings: Optional[Sequence["SupportedFormattings"]] = None, + supported_visualization_formattings: Optional[ + Sequence["SupportedVisualizationFormattings"] + ] = None, + supported_download_settings: Optional[ + Sequence["SupportedDownloadSettings"] + ] = None, + icon_url: Optional[str] = None, + uses_oauth: Optional[bool] = None, + required_fields: Optional[Sequence["IntegrationRequiredField"]] = None, + privacy_link: Optional[str] = None, + delegate_oauth: Optional[bool] = None, + installed_delegate_oauth_targets: Optional[Sequence[str]] = None + ): self.can = can self.id = id self.integration_hub_id = integration_hub_id @@ -7688,6 +8475,7 @@ class IntegrationHub(model.Model): legal_agreement_required: Whether the legal terms for the integration hub are required before use. legal_agreement_text: The legal agreement text for this integration hub. """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None url: Optional[str] = None @@ -7700,18 +8488,21 @@ class IntegrationHub(model.Model): legal_agreement_required: Optional[bool] = None legal_agreement_text: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - url: Optional[str] = None, - label: Optional[str] = None, - official: Optional[bool] = None, - fetch_error_message: Optional[str] = None, - authorization_token: Optional[str] = None, - has_authorization_token: Optional[bool] = None, - legal_agreement_signed: Optional[bool] = None, - legal_agreement_required: Optional[bool] = None, - legal_agreement_text: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + url: Optional[str] = None, + label: Optional[str] = None, + official: Optional[bool] = None, + fetch_error_message: Optional[str] = None, + authorization_token: Optional[str] = None, + has_authorization_token: Optional[bool] = None, + legal_agreement_signed: Optional[bool] = None, + legal_agreement_required: Optional[bool] = None, + legal_agreement_text: Optional[str] = None + ): self.can = can self.id = id self.url = url @@ -7732,12 +8523,13 @@ class IntegrationHubHealthResult(model.Model): success: Whether or not the health check was successful message: A message representing the results of the health check. """ + success: Optional[bool] = None message: Optional[str] = None - def __init__(self, *, - success: Optional[bool] = None, - message: Optional[str] = None): + def __init__( + self, *, success: Optional[bool] = None, message: Optional[str] = None + ): self.success = success self.message = message @@ -7757,6 +8549,7 @@ class IntegrationParam(model.Model): per_user: When true, this parameter must be assigned to a user attribute in the admin panel (instead of a constant value), and that value may be updated by the user as part of the integration flow. delegate_oauth_url: When present, the param represents the oauth url the user will be taken to. """ + name: Optional[str] = None label: Optional[str] = None description: Optional[str] = None @@ -7768,17 +8561,20 @@ class IntegrationParam(model.Model): per_user: Optional[bool] = None delegate_oauth_url: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - label: Optional[str] = None, - description: Optional[str] = None, - required: Optional[bool] = None, - has_value: Optional[bool] = None, - value: Optional[str] = None, - user_attribute_name: Optional[str] = None, - sensitive: Optional[bool] = None, - per_user: Optional[bool] = None, - delegate_oauth_url: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + label: Optional[str] = None, + description: Optional[str] = None, + required: Optional[bool] = None, + has_value: Optional[bool] = None, + value: Optional[str] = None, + user_attribute_name: Optional[str] = None, + sensitive: Optional[bool] = None, + per_user: Optional[bool] = None, + delegate_oauth_url: Optional[str] = None + ): self.name = name self.label = label self.description = description @@ -7799,14 +8595,18 @@ class IntegrationRequiredField(model.Model): any_tag: If present, supersedes 'tag' and matches a field that has any of the provided tags. all_tags: If present, supersedes 'tag' and matches a field that has all of the provided tags. """ + tag: Optional[str] = None any_tag: Optional[Sequence[str]] = None all_tags: Optional[Sequence[str]] = None - def __init__(self, *, - tag: Optional[str] = None, - any_tag: Optional[Sequence[str]] = None, - all_tags: Optional[Sequence[str]] = None): + def __init__( + self, + *, + tag: Optional[str] = None, + any_tag: Optional[Sequence[str]] = None, + all_tags: Optional[Sequence[str]] = None + ): self.tag = tag self.any_tag = any_tag self.all_tags = all_tags @@ -7820,14 +8620,18 @@ class IntegrationTestResult(model.Model): message: A message representing the results of the test. delegate_oauth_result: An array of connection test result for delegate oauth actions. """ + success: Optional[bool] = None message: Optional[str] = None delegate_oauth_result: Optional[Sequence["DelegateOauthTest"]] = None - def __init__(self, *, - success: Optional[bool] = None, - message: Optional[str] = None, - delegate_oauth_result: Optional[Sequence["DelegateOauthTest"]] = None): + def __init__( + self, + *, + success: Optional[bool] = None, + message: Optional[str] = None, + delegate_oauth_result: Optional[Sequence["DelegateOauthTest"]] = None + ): self.success = success self.message = message self.delegate_oauth_result = delegate_oauth_result @@ -7840,12 +8644,16 @@ class InternalHelpResources(model.Model): can: Operations the current user is able to perform on this object enabled: If true and internal help resources content is not blank then the link for internal help resources will be shown in the help menu and the content displayed within Looker """ + can: Optional[MutableMapping[str, bool]] = None enabled: Optional[bool] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - enabled: Optional[bool] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + enabled: Optional[bool] = None + ): self.can = can self.enabled = enabled @@ -7858,14 +8666,18 @@ class InternalHelpResourcesContent(model.Model): organization_name: Text to display in the help menu item which will display the internal help resources markdown_content: Content to be displayed in the internal help resources page/modal """ + can: Optional[MutableMapping[str, bool]] = None organization_name: Optional[str] = None markdown_content: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - organization_name: Optional[str] = None, - markdown_content: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + organization_name: Optional[str] = None, + markdown_content: Optional[str] = None + ): self.can = can self.organization_name = organization_name self.markdown_content = markdown_content @@ -7876,6 +8688,7 @@ class InvestigativeContentType(enum.Enum): The type of the investigative content Valid values are: "dashboard". (Enum defined in Alert) """ + dashboard = "dashboard" invalid_api_enum_value = "invalid_api_enum_value" @@ -7891,16 +8704,12 @@ class JsonBi(model.Model): metadata: rows: Json query results """ + metadata: "JsonBiMetadata" rows: Sequence[str] - __annotations__ = { - "metadata": ForwardRef("JsonBiMetadata"), - "rows": Sequence[str] - } + __annotations__ = {"metadata": ForwardRef("JsonBiMetadata"), "rows": Sequence[str]} - def __init__(self, *, - metadata: "JsonBiMetadata", - rows: Sequence[str]): + def __init__(self, *, metadata: "JsonBiMetadata", rows: Sequence[str]): self.metadata = metadata self.rows = rows @@ -7912,12 +8721,11 @@ class JsonBiBigQueryMetadata(model.Model): total_bytes_processed: Total bytes processed by the BigQuery job backend_cache_hit: Return whether or not query results were served from the BigQuery cache. """ + total_bytes_processed: int backend_cache_hit: bool - def __init__(self, *, - total_bytes_processed: int, - backend_cache_hit: bool): + def __init__(self, *, total_bytes_processed: int, backend_cache_hit: bool): self.total_bytes_processed = total_bytes_processed self.backend_cache_hit = backend_cache_hit @@ -7939,6 +8747,7 @@ class JsonBiField(model.Model): hidden: If the field is marked as hidden in the Lookml description: Field Description """ + sql: str view: str dimension_group: str @@ -7952,19 +8761,22 @@ class JsonBiField(model.Model): hidden: bool description: str - def __init__(self, *, - sql: str, - view: str, - dimension_group: str, - category: str, - field_group_label: str, - name: str, - type: str, - view_label: str, - label: str, - field_group_variant: str, - hidden: bool, - description: str): + def __init__( + self, + *, + sql: str, + view: str, + dimension_group: str, + category: str, + field_group_label: str, + name: str, + type: str, + view_label: str, + label: str, + field_group_variant: str, + hidden: bool, + description: str + ): self.sql = sql self.view = view self.dimension_group = dimension_group @@ -7988,16 +8800,20 @@ class JsonBiFields(model.Model): pivots: Pivots table_calculations: Table Calculations """ + dimensions: Sequence["JsonBiField"] measures: Sequence["JsonBiField"] pivots: Sequence["JsonBiField"] table_calculations: Sequence["JsonBiTableCalc"] - def __init__(self, *, - dimensions: Sequence["JsonBiField"], - measures: Sequence["JsonBiField"], - pivots: Sequence["JsonBiField"], - table_calculations: Sequence["JsonBiTableCalc"]): + def __init__( + self, + *, + dimensions: Sequence["JsonBiField"], + measures: Sequence["JsonBiField"], + pivots: Sequence["JsonBiField"], + table_calculations: Sequence["JsonBiTableCalc"] + ): self.dimensions = dimensions self.measures = measures self.pivots = pivots @@ -8018,6 +8834,7 @@ class JsonBiMetadata(model.Model): filters: Filters applied to the query results sql: Raw sql query. Null if user does not have permission to view sql """ + big_query_metadata: "JsonBiBigQueryMetadata" fields: "JsonBiFields" pivots: Sequence["JsonBiPivots"] @@ -8036,19 +8853,22 @@ class JsonBiMetadata(model.Model): "columns_truncated": str, "filter_expression": str, "filters": MutableMapping[str, Any], - "sql": str + "sql": str, } - def __init__(self, *, - big_query_metadata: "JsonBiBigQueryMetadata", - fields: "JsonBiFields", - pivots: Sequence["JsonBiPivots"], - has_subtotals: bool, - has_totals: bool, - columns_truncated: str, - filter_expression: str, - filters: MutableMapping[str, Any], - sql: str): + def __init__( + self, + *, + big_query_metadata: "JsonBiBigQueryMetadata", + fields: "JsonBiFields", + pivots: Sequence["JsonBiPivots"], + has_subtotals: bool, + has_totals: bool, + columns_truncated: str, + filter_expression: str, + filters: MutableMapping[str, Any], + sql: str + ): self.big_query_metadata = big_query_metadata self.fields = fields self.pivots = pivots @@ -8069,16 +8889,20 @@ class JsonBiPivots(model.Model): sort_values: Pivot Sort Values is_total: If the value is a total """ + key: str data: MutableMapping[str, Any] sort_values: MutableMapping[str, Any] is_total: bool - def __init__(self, *, - key: str, - data: MutableMapping[str, Any], - sort_values: MutableMapping[str, Any], - is_total: bool): + def __init__( + self, + *, + key: str, + data: MutableMapping[str, Any], + sort_values: MutableMapping[str, Any], + is_total: bool + ): self.key = key self.data = data self.sort_values = sort_values @@ -8096,6 +8920,7 @@ class JsonBiTableCalc(model.Model): value_format: Value format measure: If table calculation is a measure """ + name: str label: str align: str @@ -8103,13 +8928,16 @@ class JsonBiTableCalc(model.Model): value_format: str measure: bool - def __init__(self, *, - name: str, - label: str, - align: str, - expression: str, - value_format: str, - measure: bool): + def __init__( + self, + *, + name: str, + label: str, + align: str, + expression: str, + value_format: str, + measure: bool + ): self.name = name self.label = label self.align = align @@ -8126,14 +8954,18 @@ class KdaDataSource(model.Model): model_name: explore_name: """ + query_id: Optional[str] = None model_name: Optional[str] = None explore_name: Optional[str] = None - def __init__(self, *, - query_id: Optional[str] = None, - model_name: Optional[str] = None, - explore_name: Optional[str] = None): + def __init__( + self, + *, + query_id: Optional[str] = None, + model_name: Optional[str] = None, + explore_name: Optional[str] = None + ): self.query_id = query_id self.model_name = model_name self.explore_name = explore_name @@ -8150,6 +8982,7 @@ class KdaRequestPayload(model.Model): baseline_filters: Defines the EXPECTED, PAST, or NORMAL group (State A). For time KDA, put the past date filter here (e.g., {'orders.created_date': 'last week'}). For cohort KDA, put the baseline segment here (e.g., {'users.status': 'Active'}). breach_filters: Defines the ANOMALOUS, CURRENT, or COMPARISON group (State B). For time KDA, put the current date here. For 'Rest of Population' cohort comparisons, use a minus sign to negate the baseline (e.g., {'users.status': '-Active'}). """ + data_source: "KdaDataSource" contribution_metric: str dimensions: Sequence[str] @@ -8162,16 +8995,19 @@ class KdaRequestPayload(model.Model): "dimensions": Sequence[str], "base_filters": Optional[MutableMapping[str, Any]], "baseline_filters": Optional[MutableMapping[str, Any]], - "breach_filters": Optional[MutableMapping[str, Any]] + "breach_filters": Optional[MutableMapping[str, Any]], } - def __init__(self, *, - data_source: "KdaDataSource", - contribution_metric: str, - dimensions: Sequence[str], - base_filters: Optional[MutableMapping[str, Any]] = None, - baseline_filters: Optional[MutableMapping[str, Any]] = None, - breach_filters: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + data_source: "KdaDataSource", + contribution_metric: str, + dimensions: Sequence[str], + base_filters: Optional[MutableMapping[str, Any]] = None, + baseline_filters: Optional[MutableMapping[str, Any]] = None, + breach_filters: Optional[MutableMapping[str, Any]] = None + ): self.data_source = data_source self.contribution_metric = contribution_metric self.dimensions = dimensions @@ -8188,14 +9024,14 @@ class KdaResponsePayload(model.Model): dimensions: Dimensions that were analyzed drivers: List of identified key drivers """ + status: str dimensions: Sequence[str] drivers: Sequence[Any] - def __init__(self, *, - status: str, - dimensions: Sequence[str], - drivers: Sequence[Any]): + def __init__( + self, *, status: str, dimensions: Sequence[str], drivers: Sequence[Any] + ): self.status = status self.dimensions = dimensions self.drivers = drivers @@ -8206,6 +9042,7 @@ class Kind(enum.Enum): The type of calculation for the period_over_period measure. Valid values are: "previous", "difference", "relative_change". (Enum defined in LookmlModelExploreFieldPeriodOverPeriodParams) """ + previous = "previous" difference = "difference" relative_change = "relative_change" @@ -8264,6 +9101,7 @@ class LDAPConfig(model.Model): allow_direct_roles: Allows roles to be directly assigned to LDAP auth'd users. url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None alternate_email_login_allowed: Optional[bool] = None auth_password: Optional[str] = None @@ -8308,50 +9146,53 @@ class LDAPConfig(model.Model): allow_direct_roles: Optional[bool] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - alternate_email_login_allowed: Optional[bool] = None, - auth_password: Optional[str] = None, - auth_requires_role: Optional[bool] = None, - auth_username: Optional[str] = None, - connection_host: Optional[str] = None, - connection_port: Optional[str] = None, - connection_tls: Optional[bool] = None, - connection_tls_no_verify: Optional[bool] = None, - default_new_user_group_ids: Optional[Sequence[str]] = None, - default_new_user_groups: Optional[Sequence["Group"]] = None, - default_new_user_role_ids: Optional[Sequence[str]] = None, - default_new_user_roles: Optional[Sequence["Role"]] = None, - enabled: Optional[bool] = None, - force_no_page: Optional[bool] = None, - groups: Optional[Sequence["LDAPGroupRead"]] = None, - groups_base_dn: Optional[str] = None, - groups_finder_type: Optional[str] = None, - groups_member_attribute: Optional[str] = None, - groups_objectclasses: Optional[str] = None, - groups_user_attribute: Optional[str] = None, - groups_with_role_ids: Optional[Sequence["LDAPGroupWrite"]] = None, - has_auth_password: Optional[bool] = None, - merge_new_users_by_email: Optional[bool] = None, - modified_at: Optional[str] = None, - modified_by: Optional[str] = None, - set_roles_from_groups: Optional[bool] = None, - test_ldap_password: Optional[str] = None, - test_ldap_user: Optional[str] = None, - user_attribute_map_email: Optional[str] = None, - user_attribute_map_first_name: Optional[str] = None, - user_attribute_map_last_name: Optional[str] = None, - user_attribute_map_ldap_id: Optional[str] = None, - user_attributes: Optional[Sequence["LDAPUserAttributeRead"]] = None, - user_attributes_with_ids: Optional[Sequence["LDAPUserAttributeWrite"]] = None, - user_bind_base_dn: Optional[str] = None, - user_custom_filter: Optional[str] = None, - user_id_attribute_names: Optional[str] = None, - user_objectclass: Optional[str] = None, - allow_normal_group_membership: Optional[bool] = None, - allow_roles_from_normal_groups: Optional[bool] = None, - allow_direct_roles: Optional[bool] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + alternate_email_login_allowed: Optional[bool] = None, + auth_password: Optional[str] = None, + auth_requires_role: Optional[bool] = None, + auth_username: Optional[str] = None, + connection_host: Optional[str] = None, + connection_port: Optional[str] = None, + connection_tls: Optional[bool] = None, + connection_tls_no_verify: Optional[bool] = None, + default_new_user_group_ids: Optional[Sequence[str]] = None, + default_new_user_groups: Optional[Sequence["Group"]] = None, + default_new_user_role_ids: Optional[Sequence[str]] = None, + default_new_user_roles: Optional[Sequence["Role"]] = None, + enabled: Optional[bool] = None, + force_no_page: Optional[bool] = None, + groups: Optional[Sequence["LDAPGroupRead"]] = None, + groups_base_dn: Optional[str] = None, + groups_finder_type: Optional[str] = None, + groups_member_attribute: Optional[str] = None, + groups_objectclasses: Optional[str] = None, + groups_user_attribute: Optional[str] = None, + groups_with_role_ids: Optional[Sequence["LDAPGroupWrite"]] = None, + has_auth_password: Optional[bool] = None, + merge_new_users_by_email: Optional[bool] = None, + modified_at: Optional[str] = None, + modified_by: Optional[str] = None, + set_roles_from_groups: Optional[bool] = None, + test_ldap_password: Optional[str] = None, + test_ldap_user: Optional[str] = None, + user_attribute_map_email: Optional[str] = None, + user_attribute_map_first_name: Optional[str] = None, + user_attribute_map_last_name: Optional[str] = None, + user_attribute_map_ldap_id: Optional[str] = None, + user_attributes: Optional[Sequence["LDAPUserAttributeRead"]] = None, + user_attributes_with_ids: Optional[Sequence["LDAPUserAttributeWrite"]] = None, + user_bind_base_dn: Optional[str] = None, + user_custom_filter: Optional[str] = None, + user_id_attribute_names: Optional[str] = None, + user_objectclass: Optional[str] = None, + allow_normal_group_membership: Optional[bool] = None, + allow_roles_from_normal_groups: Optional[bool] = None, + allow_direct_roles: Optional[bool] = None, + url: Optional[str] = None + ): self.can = can self.alternate_email_login_allowed = alternate_email_login_allowed self.auth_password = auth_password @@ -8404,12 +9245,13 @@ class LDAPConfigTestIssue(model.Model): severity: Severity of the issue. Error or Warning message: Message describing the issue """ + severity: Optional[str] = None message: Optional[str] = None - def __init__(self, *, - severity: Optional[str] = None, - message: Optional[str] = None): + def __init__( + self, *, severity: Optional[str] = None, message: Optional[str] = None + ): self.severity = severity self.message = message @@ -8426,6 +9268,7 @@ class LDAPConfigTestResult(model.Model): user: url: Link to ldap config """ + details: Optional[str] = None issues: Optional[Sequence["LDAPConfigTestIssue"]] = None message: Optional[str] = None @@ -8434,14 +9277,17 @@ class LDAPConfigTestResult(model.Model): user: Optional["LDAPUser"] = None url: Optional[str] = None - def __init__(self, *, - details: Optional[str] = None, - issues: Optional[Sequence["LDAPConfigTestIssue"]] = None, - message: Optional[str] = None, - status: Optional[str] = None, - trace: Optional[str] = None, - user: Optional["LDAPUser"] = None, - url: Optional[str] = None): + def __init__( + self, + *, + details: Optional[str] = None, + issues: Optional[Sequence["LDAPConfigTestIssue"]] = None, + message: Optional[str] = None, + status: Optional[str] = None, + trace: Optional[str] = None, + user: Optional["LDAPUser"] = None, + url: Optional[str] = None + ): self.details = details self.issues = issues self.message = message @@ -8462,6 +9308,7 @@ class LDAPGroupRead(model.Model): roles: Looker Roles url: Link to ldap config """ + id: Optional[str] = None looker_group_id: Optional[str] = None looker_group_name: Optional[str] = None @@ -8469,13 +9316,16 @@ class LDAPGroupRead(model.Model): roles: Optional[Sequence["Role"]] = None url: Optional[str] = None - def __init__(self, *, - id: Optional[str] = None, - looker_group_id: Optional[str] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - roles: Optional[Sequence["Role"]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + id: Optional[str] = None, + looker_group_id: Optional[str] = None, + looker_group_name: Optional[str] = None, + name: Optional[str] = None, + roles: Optional[Sequence["Role"]] = None, + url: Optional[str] = None + ): self.id = id self.looker_group_id = looker_group_id self.looker_group_name = looker_group_name @@ -8495,6 +9345,7 @@ class LDAPGroupWrite(model.Model): role_ids: Looker Role Ids url: Link to ldap config """ + id: Optional[str] = None looker_group_id: Optional[str] = None looker_group_name: Optional[str] = None @@ -8502,13 +9353,16 @@ class LDAPGroupWrite(model.Model): role_ids: Optional[Sequence[str]] = None url: Optional[str] = None - def __init__(self, *, - id: Optional[str] = None, - looker_group_id: Optional[str] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - role_ids: Optional[Sequence[str]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + id: Optional[str] = None, + looker_group_id: Optional[str] = None, + looker_group_name: Optional[str] = None, + name: Optional[str] = None, + role_ids: Optional[Sequence[str]] = None, + url: Optional[str] = None + ): self.id = id self.looker_group_id = looker_group_id self.looker_group_name = looker_group_name @@ -8532,6 +9386,7 @@ class LDAPUser(model.Model): roles: Array of user's roles (role names only) url: Link to ldap config """ + all_emails: Optional[Sequence[str]] = None attributes: Optional[MutableMapping[str, Any]] = None email: Optional[str] = None @@ -8543,17 +9398,20 @@ class LDAPUser(model.Model): roles: Optional[Sequence[str]] = None url: Optional[str] = None - def __init__(self, *, - all_emails: Optional[Sequence[str]] = None, - attributes: Optional[MutableMapping[str, Any]] = None, - email: Optional[str] = None, - first_name: Optional[str] = None, - groups: Optional[Sequence[str]] = None, - last_name: Optional[str] = None, - ldap_dn: Optional[str] = None, - ldap_id: Optional[str] = None, - roles: Optional[Sequence[str]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + all_emails: Optional[Sequence[str]] = None, + attributes: Optional[MutableMapping[str, Any]] = None, + email: Optional[str] = None, + first_name: Optional[str] = None, + groups: Optional[Sequence[str]] = None, + last_name: Optional[str] = None, + ldap_dn: Optional[str] = None, + ldap_id: Optional[str] = None, + roles: Optional[Sequence[str]] = None, + url: Optional[str] = None + ): self.all_emails = all_emails self.attributes = attributes self.email = email @@ -8575,16 +9433,20 @@ class LDAPUserAttributeRead(model.Model): user_attributes: Looker User Attributes url: Link to ldap config """ + name: Optional[str] = None required: Optional[bool] = None user_attributes: Optional[Sequence["UserAttribute"]] = None url: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - required: Optional[bool] = None, - user_attributes: Optional[Sequence["UserAttribute"]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + required: Optional[bool] = None, + user_attributes: Optional[Sequence["UserAttribute"]] = None, + url: Optional[str] = None + ): self.name = name self.required = required self.user_attributes = user_attributes @@ -8600,16 +9462,20 @@ class LDAPUserAttributeWrite(model.Model): user_attribute_ids: Looker User Attribute Ids url: Link to ldap config """ + name: Optional[str] = None required: Optional[bool] = None user_attribute_ids: Optional[Sequence[str]] = None url: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - required: Optional[bool] = None, - user_attribute_ids: Optional[Sequence[str]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + required: Optional[bool] = None, + user_attribute_ids: Optional[Sequence[str]] = None, + url: Optional[str] = None + ): self.name = name self.required = required self.user_attribute_ids = user_attribute_ids @@ -8634,6 +9500,7 @@ class LegacyFeature(model.Model): approximate_end_of_life_date: Approximate date that this feature will be removed. has_disabled_on_upgrade: Whether this legacy feature may have been automatically disabled when upgrading to the current version. """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -8648,20 +9515,23 @@ class LegacyFeature(model.Model): approximate_end_of_life_date: Optional[datetime.datetime] = None has_disabled_on_upgrade: Optional[bool] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - name: Optional[str] = None, - description: Optional[str] = None, - enabled_locally: Optional[bool] = None, - enabled: Optional[bool] = None, - disallowed_as_of_version: Optional[str] = None, - disable_on_upgrade_to_version: Optional[str] = None, - end_of_life_version: Optional[str] = None, - documentation_url: Optional[str] = None, - approximate_disable_date: Optional[datetime.datetime] = None, - approximate_end_of_life_date: Optional[datetime.datetime] = None, - has_disabled_on_upgrade: Optional[bool] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + name: Optional[str] = None, + description: Optional[str] = None, + enabled_locally: Optional[bool] = None, + enabled: Optional[bool] = None, + disallowed_as_of_version: Optional[str] = None, + disable_on_upgrade_to_version: Optional[str] = None, + end_of_life_version: Optional[str] = None, + documentation_url: Optional[str] = None, + approximate_disable_date: Optional[datetime.datetime] = None, + approximate_end_of_life_date: Optional[datetime.datetime] = None, + has_disabled_on_upgrade: Optional[bool] = None + ): self.can = can self.id = id self.name = name @@ -8685,14 +9555,18 @@ class Locale(model.Model): native_name: Name of Locale in its own language english_name: Name of Locale in English """ + code: Optional[str] = None native_name: Optional[str] = None english_name: Optional[str] = None - def __init__(self, *, - code: Optional[str] = None, - native_name: Optional[str] = None, - english_name: Optional[str] = None): + def __init__( + self, + *, + code: Optional[str] = None, + native_name: Optional[str] = None, + english_name: Optional[str] = None + ): self.code = code self.native_name = native_name self.english_name = english_name @@ -8705,12 +9579,16 @@ class LocalizationSettings(model.Model): default_locale: Default locale for localization localization_level: Localization level - strict or permissive """ + default_locale: Optional[str] = None localization_level: Optional[str] = None - def __init__(self, *, - default_locale: Optional[str] = None, - localization_level: Optional[str] = None): + def __init__( + self, + *, + default_locale: Optional[str] = None, + localization_level: Optional[str] = None + ): self.default_locale = default_locale self.localization_level = localization_level @@ -8754,6 +9632,7 @@ class Look(model.Model): usage_count: Number of queries executed on this look in the last N days is_owner_disabled: Is the owner disabled """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[str] = None id: Optional[str] = None @@ -8789,41 +9668,44 @@ class Look(model.Model): usage_count: Optional[int] = None is_owner_disabled: Optional[bool] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[str] = None, - id: Optional[str] = None, - title: Optional[str] = None, - user_id: Optional[str] = None, - certification_metadata: Optional["Certification"] = None, - content_favorite_id: Optional[str] = None, - created_at: Optional[datetime.datetime] = None, - deleted: Optional[bool] = None, - deleted_at: Optional[datetime.datetime] = None, - deleter_id: Optional[str] = None, - description: Optional[str] = None, - embed_url: Optional[str] = None, - excel_file_url: Optional[str] = None, - favorite_count: Optional[int] = None, - google_spreadsheet_formula: Optional[str] = None, - image_embed_url: Optional[str] = None, - is_run_on_load: Optional[bool] = None, - last_accessed_at: Optional[datetime.datetime] = None, - last_updater_id: Optional[str] = None, - last_viewed_at: Optional[datetime.datetime] = None, - model: Optional["LookModel"] = None, - public: Optional[bool] = None, - public_slug: Optional[str] = None, - public_url: Optional[str] = None, - query_id: Optional[str] = None, - short_url: Optional[str] = None, - folder: Optional["FolderBase"] = None, - folder_id: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - user_name: Optional[str] = None, - view_count: Optional[int] = None, - usage_count: Optional[int] = None, - is_owner_disabled: Optional[bool] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[str] = None, + id: Optional[str] = None, + title: Optional[str] = None, + user_id: Optional[str] = None, + certification_metadata: Optional["Certification"] = None, + content_favorite_id: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + deleted: Optional[bool] = None, + deleted_at: Optional[datetime.datetime] = None, + deleter_id: Optional[str] = None, + description: Optional[str] = None, + embed_url: Optional[str] = None, + excel_file_url: Optional[str] = None, + favorite_count: Optional[int] = None, + google_spreadsheet_formula: Optional[str] = None, + image_embed_url: Optional[str] = None, + is_run_on_load: Optional[bool] = None, + last_accessed_at: Optional[datetime.datetime] = None, + last_updater_id: Optional[str] = None, + last_viewed_at: Optional[datetime.datetime] = None, + model: Optional["LookModel"] = None, + public: Optional[bool] = None, + public_slug: Optional[str] = None, + public_url: Optional[str] = None, + query_id: Optional[str] = None, + short_url: Optional[str] = None, + folder: Optional["FolderBase"] = None, + folder_id: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + user_name: Optional[str] = None, + view_count: Optional[int] = None, + usage_count: Optional[int] = None, + is_owner_disabled: Optional[bool] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -8871,6 +9753,7 @@ class LookBasic(model.Model): user_id: User Id certification_metadata: """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[str] = None id: Optional[str] = None @@ -8878,13 +9761,16 @@ class LookBasic(model.Model): user_id: Optional[str] = None certification_metadata: Optional["Certification"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[str] = None, - id: Optional[str] = None, - title: Optional[str] = None, - user_id: Optional[str] = None, - certification_metadata: Optional["Certification"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[str] = None, + id: Optional[str] = None, + title: Optional[str] = None, + user_id: Optional[str] = None, + certification_metadata: Optional["Certification"] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -8903,18 +9789,22 @@ class LookerExploreReference(model.Model): explore: Name of the LookML Explore. schema: """ + lookerInstanceUri: Optional[str] = None privateLookerInstanceInfo: Optional["PrivateLookerInstanceInfo"] = None lookmlModel: Optional[str] = None explore: Optional[str] = None schema: Optional["DataSourceSchema"] = None - def __init__(self, *, - lookerInstanceUri: Optional[str] = None, - privateLookerInstanceInfo: Optional["PrivateLookerInstanceInfo"] = None, - lookmlModel: Optional[str] = None, - explore: Optional[str] = None, - schema: Optional["DataSourceSchema"] = None): + def __init__( + self, + *, + lookerInstanceUri: Optional[str] = None, + privateLookerInstanceInfo: Optional["PrivateLookerInstanceInfo"] = None, + lookmlModel: Optional[str] = None, + explore: Optional[str] = None, + schema: Optional["DataSourceSchema"] = None + ): self.lookerInstanceUri = lookerInstanceUri self.privateLookerInstanceInfo = privateLookerInstanceInfo self.lookmlModel = lookmlModel @@ -8930,14 +9820,18 @@ class LookmlFieldLink(model.Model): url: URL the link will go to. icon_url: A URL containing an image file to display with a link. """ + label: Optional[str] = None url: Optional[str] = None icon_url: Optional[str] = None - def __init__(self, *, - label: Optional[str] = None, - url: Optional[str] = None, - icon_url: Optional[str] = None): + def __init__( + self, + *, + label: Optional[str] = None, + url: Optional[str] = None, + icon_url: Optional[str] = None + ): self.label = label self.url = url self.icon_url = icon_url @@ -8956,6 +9850,7 @@ class LookmlModel(model.Model): project_name: Name of project containing the model unlimited_db_connections: Is this model allowed to use all current and future connections """ + can: Optional[MutableMapping[str, bool]] = None allowed_db_connection_names: Optional[Sequence[str]] = None explores: Optional[Sequence["LookmlModelNavExplore"]] = None @@ -8965,15 +9860,18 @@ class LookmlModel(model.Model): project_name: Optional[str] = None unlimited_db_connections: Optional[bool] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - allowed_db_connection_names: Optional[Sequence[str]] = None, - explores: Optional[Sequence["LookmlModelNavExplore"]] = None, - has_content: Optional[bool] = None, - label: Optional[str] = None, - name: Optional[str] = None, - project_name: Optional[str] = None, - unlimited_db_connections: Optional[bool] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + allowed_db_connection_names: Optional[Sequence[str]] = None, + explores: Optional[Sequence["LookmlModelNavExplore"]] = None, + has_content: Optional[bool] = None, + label: Optional[str] = None, + name: Optional[str] = None, + project_name: Optional[str] = None, + unlimited_db_connections: Optional[bool] = None + ): self.can = can self.allowed_db_connection_names = allowed_db_connection_names self.explores = explores @@ -9030,6 +9928,7 @@ class LookmlModelExplore(model.Model): supported_measure_types: An array of items describing which custom measure types are supported for creating a custom measure 'based_on' each possible dimension type. always_join: An array of joins that will always be included in the SQL for this explore, even if the user has not selected a field from the joined view. """ + id: Optional[str] = None name: Optional[str] = None description: Optional[str] = None @@ -9061,7 +9960,9 @@ class LookmlModelExplore(model.Model): access_filters: Optional[Sequence["LookmlModelExploreAccessFilter"]] = None aliases: Optional[Sequence["LookmlModelExploreAlias"]] = None always_filter: Optional[Sequence["LookmlModelExploreAlwaysFilter"]] = None - conditionally_filter: Optional[Sequence["LookmlModelExploreConditionallyFilter"]] = None + conditionally_filter: Optional[ + Sequence["LookmlModelExploreConditionallyFilter"] + ] = None index_fields: Optional[Sequence[str]] = None sets: Optional[Sequence["LookmlModelExploreSet"]] = None tags: Optional[Sequence[str]] = None @@ -9069,51 +9970,60 @@ class LookmlModelExplore(model.Model): fields: Optional["LookmlModelExploreFieldset"] = None joins: Optional[Sequence["LookmlModelExploreJoins"]] = None group_label: Optional[str] = None - supported_measure_types: Optional[Sequence["LookmlModelExploreSupportedMeasureType"]] = None + supported_measure_types: Optional[ + Sequence["LookmlModelExploreSupportedMeasureType"] + ] = None always_join: Optional[Sequence[str]] = None - def __init__(self, *, - id: Optional[str] = None, - name: Optional[str] = None, - description: Optional[str] = None, - label: Optional[str] = None, - title: Optional[str] = None, - scopes: Optional[Sequence[str]] = None, - can_total: Optional[bool] = None, - can_develop: Optional[bool] = None, - can_see_lookml: Optional[bool] = None, - lookml_link: Optional[str] = None, - can_save: Optional[bool] = None, - can_explain: Optional[bool] = None, - can_pivot_in_db: Optional[bool] = None, - can_subtotal: Optional[bool] = None, - has_timezone_support: Optional[bool] = None, - self_service_explore_data: Optional["SelfServiceModelUploadData"] = None, - supports_cost_estimate: Optional[bool] = None, - connection_name: Optional[str] = None, - dialect_name: Optional[str] = None, - null_sort_treatment: Optional[str] = None, - files: Optional[Sequence[str]] = None, - source_file: Optional[str] = None, - project_name: Optional[str] = None, - model_name: Optional[str] = None, - view_name: Optional[str] = None, - hidden: Optional[bool] = None, - sql_table_name: Optional[str] = None, - access_filter_fields: Optional[Sequence[str]] = None, - access_filters: Optional[Sequence["LookmlModelExploreAccessFilter"]] = None, - aliases: Optional[Sequence["LookmlModelExploreAlias"]] = None, - always_filter: Optional[Sequence["LookmlModelExploreAlwaysFilter"]] = None, - conditionally_filter: Optional[Sequence["LookmlModelExploreConditionallyFilter"]] = None, - index_fields: Optional[Sequence[str]] = None, - sets: Optional[Sequence["LookmlModelExploreSet"]] = None, - tags: Optional[Sequence[str]] = None, - errors: Optional[Sequence["LookmlModelExploreError"]] = None, - fields: Optional["LookmlModelExploreFieldset"] = None, - joins: Optional[Sequence["LookmlModelExploreJoins"]] = None, - group_label: Optional[str] = None, - supported_measure_types: Optional[Sequence["LookmlModelExploreSupportedMeasureType"]] = None, - always_join: Optional[Sequence[str]] = None): + def __init__( + self, + *, + id: Optional[str] = None, + name: Optional[str] = None, + description: Optional[str] = None, + label: Optional[str] = None, + title: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + can_total: Optional[bool] = None, + can_develop: Optional[bool] = None, + can_see_lookml: Optional[bool] = None, + lookml_link: Optional[str] = None, + can_save: Optional[bool] = None, + can_explain: Optional[bool] = None, + can_pivot_in_db: Optional[bool] = None, + can_subtotal: Optional[bool] = None, + has_timezone_support: Optional[bool] = None, + self_service_explore_data: Optional["SelfServiceModelUploadData"] = None, + supports_cost_estimate: Optional[bool] = None, + connection_name: Optional[str] = None, + dialect_name: Optional[str] = None, + null_sort_treatment: Optional[str] = None, + files: Optional[Sequence[str]] = None, + source_file: Optional[str] = None, + project_name: Optional[str] = None, + model_name: Optional[str] = None, + view_name: Optional[str] = None, + hidden: Optional[bool] = None, + sql_table_name: Optional[str] = None, + access_filter_fields: Optional[Sequence[str]] = None, + access_filters: Optional[Sequence["LookmlModelExploreAccessFilter"]] = None, + aliases: Optional[Sequence["LookmlModelExploreAlias"]] = None, + always_filter: Optional[Sequence["LookmlModelExploreAlwaysFilter"]] = None, + conditionally_filter: Optional[ + Sequence["LookmlModelExploreConditionallyFilter"] + ] = None, + index_fields: Optional[Sequence[str]] = None, + sets: Optional[Sequence["LookmlModelExploreSet"]] = None, + tags: Optional[Sequence[str]] = None, + errors: Optional[Sequence["LookmlModelExploreError"]] = None, + fields: Optional["LookmlModelExploreFieldset"] = None, + joins: Optional[Sequence["LookmlModelExploreJoins"]] = None, + group_label: Optional[str] = None, + supported_measure_types: Optional[ + Sequence["LookmlModelExploreSupportedMeasureType"] + ] = None, + always_join: Optional[Sequence[str]] = None + ): self.id = id self.name = name self.description = description @@ -9164,12 +10074,13 @@ class LookmlModelExploreAccessFilter(model.Model): field: Field to be filtered user_attribute: User attribute name """ + field: Optional[str] = None user_attribute: Optional[str] = None - def __init__(self, *, - field: Optional[str] = None, - user_attribute: Optional[str] = None): + def __init__( + self, *, field: Optional[str] = None, user_attribute: Optional[str] = None + ): self.field = field self.user_attribute = user_attribute @@ -9181,12 +10092,11 @@ class LookmlModelExploreAlias(model.Model): name: Name value: Value """ + name: Optional[str] = None value: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - value: Optional[str] = None): + def __init__(self, *, name: Optional[str] = None, value: Optional[str] = None): self.name = name self.value = value @@ -9198,12 +10108,11 @@ class LookmlModelExploreAlwaysFilter(model.Model): name: Name value: Value """ + name: Optional[str] = None value: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - value: Optional[str] = None): + def __init__(self, *, name: Optional[str] = None, value: Optional[str] = None): self.name = name self.value = value @@ -9215,12 +10124,11 @@ class LookmlModelExploreConditionallyFilter(model.Model): name: Name value: Value """ + name: Optional[str] = None value: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - value: Optional[str] = None): + def __init__(self, *, name: Optional[str] = None, value: Optional[str] = None): self.name = name self.value = value @@ -9234,16 +10142,20 @@ class LookmlModelExploreError(model.Model): error_pos: Error source location field_error: Is this a field error """ + message: Optional[str] = None details: Optional[Any] = None error_pos: Optional[str] = None field_error: Optional[bool] = None - def __init__(self, *, - message: Optional[str] = None, - details: Optional[Any] = None, - error_pos: Optional[str] = None, - field_error: Optional[bool] = None): + def __init__( + self, + *, + message: Optional[str] = None, + details: Optional[Any] = None, + error_pos: Optional[str] = None, + field_error: Optional[bool] = None + ): self.message = message self.details = details self.error_pos = error_pos @@ -9256,6 +10168,7 @@ class LookmlModelExploreField(model.Model): Attributes: align: The appropriate horizontal text alignment the values of this field should be displayed in. Valid values are: "left", "right". available_custom_timeframes: An array of custom timeframes available for this field for filtering, if applicable. + timeframe_labels: A map of timeframe keys to their localized labels. can_filter: Whether it's possible to filter on this field. category: Field category Valid values are: "parameter", "filter", "measure", "dimension". default_filter_value: The default value that this field uses when filtering. Null if there is no default value. @@ -9318,8 +10231,10 @@ class LookmlModelExploreField(model.Model): datatype: The data_type for a date in lookml convert_tz: Whether time zones should be converted for datetime fields """ + align: Optional["Align"] = None available_custom_timeframes: Optional[Sequence[str]] = None + timeframe_labels: Optional[MutableMapping[str, Any]] = None can_filter: Optional[bool] = None category: Optional["Category"] = None default_filter_value: Optional[str] = None @@ -9351,7 +10266,9 @@ class LookmlModelExploreField(model.Model): name: Optional[str] = None strict_value_format: Optional[bool] = None parameter: Optional[bool] = None - period_over_period_params: Optional["LookmlModelExploreFieldPeriodOverPeriodParams"] = None + period_over_period_params: Optional[ + "LookmlModelExploreFieldPeriodOverPeriodParams" + ] = None permanent: Optional[bool] = None primary_key: Optional[bool] = None project_name: Optional[str] = None @@ -9382,72 +10299,81 @@ class LookmlModelExploreField(model.Model): datatype: Optional[str] = None convert_tz: Optional[bool] = None - def __init__(self, *, - align: Optional["Align"] = None, - available_custom_timeframes: Optional[Sequence[str]] = None, - can_filter: Optional[bool] = None, - category: Optional["Category"] = None, - default_filter_value: Optional[str] = None, - description: Optional[str] = None, - dimension_group: Optional[str] = None, - drill_fields: Optional[Sequence[str]] = None, - enumerations: Optional[Sequence["LookmlModelExploreFieldEnumeration"]] = None, - error: Optional[str] = None, - field_group_label: Optional[str] = None, - field_group_variant: Optional[str] = None, - fill_style: Optional["FillStyle"] = None, - fiscal_month_offset: Optional[int] = None, - has_allowed_values: Optional[bool] = None, - has_drills_metadata: Optional[bool] = None, - hidden: Optional[bool] = None, - is_filter: Optional[bool] = None, - is_fiscal: Optional[bool] = None, - is_numeric: Optional[bool] = None, - is_timeframe: Optional[bool] = None, - can_time_filter: Optional[bool] = None, - time_interval: Optional["LookmlModelExploreFieldTimeInterval"] = None, - label: Optional[str] = None, - label_from_parameter: Optional[str] = None, - label_short: Optional[str] = None, - lookml_link: Optional[str] = None, - links: Optional[Sequence["LookmlFieldLink"]] = None, - map_layer: Optional["LookmlModelExploreFieldMapLayer"] = None, - measure: Optional[bool] = None, - name: Optional[str] = None, - strict_value_format: Optional[bool] = None, - parameter: Optional[bool] = None, - period_over_period_params: Optional["LookmlModelExploreFieldPeriodOverPeriodParams"] = None, - permanent: Optional[bool] = None, - primary_key: Optional[bool] = None, - project_name: Optional[str] = None, - requires_refresh_on_sort: Optional[bool] = None, - scope: Optional[str] = None, - sortable: Optional[bool] = None, - source_file: Optional[str] = None, - source_file_path: Optional[str] = None, - sql: Optional[str] = None, - sql_case: Optional[Sequence["LookmlModelExploreFieldSqlCase"]] = None, - filters: Optional[Sequence["LookmlModelExploreFieldMeasureFilters"]] = None, - suggest_dimension: Optional[str] = None, - suggest_explore: Optional[str] = None, - suggestable: Optional[bool] = None, - suggestions: Optional[Sequence[str]] = None, - synonyms: Optional[Sequence[str]] = None, - tags: Optional[Sequence[str]] = None, - type: Optional[str] = None, - user_attribute_filter_types: Optional[Sequence["UserAttributeFilterTypes"]] = None, - value_format: Optional[str] = None, - value_format_name: Optional[str] = None, - view: Optional[str] = None, - view_label: Optional[str] = None, - dynamic: Optional[bool] = None, - week_start_day: Optional["WeekStartDay"] = None, - times_used: Optional[int] = None, - original_view: Optional[str] = None, - datatype: Optional[str] = None, - convert_tz: Optional[bool] = None): + def __init__( + self, + *, + align: Optional["Align"] = None, + available_custom_timeframes: Optional[Sequence[str]] = None, + timeframe_labels: Optional[MutableMapping[str, Any]] = None, + can_filter: Optional[bool] = None, + category: Optional["Category"] = None, + default_filter_value: Optional[str] = None, + description: Optional[str] = None, + dimension_group: Optional[str] = None, + drill_fields: Optional[Sequence[str]] = None, + enumerations: Optional[Sequence["LookmlModelExploreFieldEnumeration"]] = None, + error: Optional[str] = None, + field_group_label: Optional[str] = None, + field_group_variant: Optional[str] = None, + fill_style: Optional["FillStyle"] = None, + fiscal_month_offset: Optional[int] = None, + has_allowed_values: Optional[bool] = None, + has_drills_metadata: Optional[bool] = None, + hidden: Optional[bool] = None, + is_filter: Optional[bool] = None, + is_fiscal: Optional[bool] = None, + is_numeric: Optional[bool] = None, + is_timeframe: Optional[bool] = None, + can_time_filter: Optional[bool] = None, + time_interval: Optional["LookmlModelExploreFieldTimeInterval"] = None, + label: Optional[str] = None, + label_from_parameter: Optional[str] = None, + label_short: Optional[str] = None, + lookml_link: Optional[str] = None, + links: Optional[Sequence["LookmlFieldLink"]] = None, + map_layer: Optional["LookmlModelExploreFieldMapLayer"] = None, + measure: Optional[bool] = None, + name: Optional[str] = None, + strict_value_format: Optional[bool] = None, + parameter: Optional[bool] = None, + period_over_period_params: Optional[ + "LookmlModelExploreFieldPeriodOverPeriodParams" + ] = None, + permanent: Optional[bool] = None, + primary_key: Optional[bool] = None, + project_name: Optional[str] = None, + requires_refresh_on_sort: Optional[bool] = None, + scope: Optional[str] = None, + sortable: Optional[bool] = None, + source_file: Optional[str] = None, + source_file_path: Optional[str] = None, + sql: Optional[str] = None, + sql_case: Optional[Sequence["LookmlModelExploreFieldSqlCase"]] = None, + filters: Optional[Sequence["LookmlModelExploreFieldMeasureFilters"]] = None, + suggest_dimension: Optional[str] = None, + suggest_explore: Optional[str] = None, + suggestable: Optional[bool] = None, + suggestions: Optional[Sequence[str]] = None, + synonyms: Optional[Sequence[str]] = None, + tags: Optional[Sequence[str]] = None, + type: Optional[str] = None, + user_attribute_filter_types: Optional[ + Sequence["UserAttributeFilterTypes"] + ] = None, + value_format: Optional[str] = None, + value_format_name: Optional[str] = None, + view: Optional[str] = None, + view_label: Optional[str] = None, + dynamic: Optional[bool] = None, + week_start_day: Optional["WeekStartDay"] = None, + times_used: Optional[int] = None, + original_view: Optional[str] = None, + datatype: Optional[str] = None, + convert_tz: Optional[bool] = None + ): self.align = align self.available_custom_timeframes = available_custom_timeframes + self.timeframe_labels = timeframe_labels self.can_filter = can_filter self.category = category self.default_filter_value = default_filter_value @@ -9518,12 +10444,11 @@ class LookmlModelExploreFieldEnumeration(model.Model): label: Label value: Value """ + label: Optional[str] = None value: Optional[Any] = None - def __init__(self, *, - label: Optional[str] = None, - value: Optional[Any] = None): + def __init__(self, *, label: Optional[str] = None, value: Optional[Any] = None): self.label = label self.value = value @@ -9543,6 +10468,7 @@ class LookmlModelExploreFieldMapLayer(model.Model): max_zoom_level: The minimum zoom level that the map layer may be displayed at, for visualizations that support zooming. min_zoom_level: The maximum zoom level that the map layer may be displayed at, for visualizations that support zooming. """ + url: Optional[str] = None name: Optional[str] = None feature_key: Optional[str] = None @@ -9554,17 +10480,20 @@ class LookmlModelExploreFieldMapLayer(model.Model): max_zoom_level: Optional[int] = None min_zoom_level: Optional[int] = None - def __init__(self, *, - url: Optional[str] = None, - name: Optional[str] = None, - feature_key: Optional[str] = None, - property_key: Optional[str] = None, - property_label_key: Optional[str] = None, - projection: Optional[str] = None, - format: Optional["Format"] = None, - extents_json_url: Optional[str] = None, - max_zoom_level: Optional[int] = None, - min_zoom_level: Optional[int] = None): + def __init__( + self, + *, + url: Optional[str] = None, + name: Optional[str] = None, + feature_key: Optional[str] = None, + property_key: Optional[str] = None, + property_label_key: Optional[str] = None, + projection: Optional[str] = None, + format: Optional["Format"] = None, + extents_json_url: Optional[str] = None, + max_zoom_level: Optional[int] = None, + min_zoom_level: Optional[int] = None + ): self.url = url self.name = name self.feature_key = feature_key @@ -9584,12 +10513,11 @@ class LookmlModelExploreFieldMeasureFilters(model.Model): field: Filter field name condition: Filter condition value """ + field: Optional[str] = None condition: Optional[str] = None - def __init__(self, *, - field: Optional[str] = None, - condition: Optional[str] = None): + def __init__(self, *, field: Optional[str] = None, condition: Optional[str] = None): self.field = field self.condition = condition @@ -9604,18 +10532,22 @@ class LookmlModelExploreFieldPeriodOverPeriodParams(model.Model): kind: The type of calculation for the period_over_period measure. Valid values are: "previous", "difference", "relative_change". value_to_date: specifies whether to compare the current partially completed period to an equivalent part of the previous period, or to use the entire previous period. """ + based_on: Optional[str] = None based_on_time: Optional[str] = None period: Optional["Period"] = None kind: Optional["Kind"] = None value_to_date: Optional[bool] = None - def __init__(self, *, - based_on: Optional[str] = None, - based_on_time: Optional[str] = None, - period: Optional["Period"] = None, - kind: Optional["Kind"] = None, - value_to_date: Optional[bool] = None): + def __init__( + self, + *, + based_on: Optional[str] = None, + based_on_time: Optional[str] = None, + period: Optional["Period"] = None, + kind: Optional["Kind"] = None, + value_to_date: Optional[bool] = None + ): self.based_on = based_on self.based_on_time = based_on_time self.period = period @@ -9632,16 +10564,20 @@ class LookmlModelExploreFieldset(model.Model): filters: Array of filters parameters: Array of parameters """ + dimensions: Optional[Sequence["LookmlModelExploreField"]] = None measures: Optional[Sequence["LookmlModelExploreField"]] = None filters: Optional[Sequence["LookmlModelExploreField"]] = None parameters: Optional[Sequence["LookmlModelExploreField"]] = None - def __init__(self, *, - dimensions: Optional[Sequence["LookmlModelExploreField"]] = None, - measures: Optional[Sequence["LookmlModelExploreField"]] = None, - filters: Optional[Sequence["LookmlModelExploreField"]] = None, - parameters: Optional[Sequence["LookmlModelExploreField"]] = None): + def __init__( + self, + *, + dimensions: Optional[Sequence["LookmlModelExploreField"]] = None, + measures: Optional[Sequence["LookmlModelExploreField"]] = None, + filters: Optional[Sequence["LookmlModelExploreField"]] = None, + parameters: Optional[Sequence["LookmlModelExploreField"]] = None + ): self.dimensions = dimensions self.measures = measures self.filters = filters @@ -9655,12 +10591,11 @@ class LookmlModelExploreFieldSqlCase(model.Model): value: SQL Case label value condition: SQL Case condition expression """ + value: Optional[str] = None condition: Optional[str] = None - def __init__(self, *, - value: Optional[str] = None, - condition: Optional[str] = None): + def __init__(self, *, value: Optional[str] = None, condition: Optional[str] = None): self.value = value self.condition = condition @@ -9672,12 +10607,11 @@ class LookmlModelExploreFieldTimeInterval(model.Model): name: The type of time interval this field represents a grouping of. Valid values are: "day", "hour", "minute", "second", "millisecond", "microsecond", "week", "month", "quarter", "year". count: The number of intervals this field represents a grouping of. """ + name: Optional["Name"] = None count: Optional[int] = None - def __init__(self, *, - name: Optional["Name"] = None, - count: Optional[int] = None): + def __init__(self, *, name: Optional["Name"] = None, count: Optional[int] = None): self.name = name self.count = count @@ -9700,6 +10634,7 @@ class LookmlModelExploreJoins(model.Model): type: The join type: left_outer, full_outer, inner, or cross view_label: Label to display in UI selectors """ + name: Optional[str] = None dependent_fields: Optional[Sequence[str]] = None fields: Optional[Sequence[str]] = None @@ -9714,20 +10649,23 @@ class LookmlModelExploreJoins(model.Model): type: Optional[str] = None view_label: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - dependent_fields: Optional[Sequence[str]] = None, - fields: Optional[Sequence[str]] = None, - foreign_key: Optional[str] = None, - from_: Optional[str] = None, - outer_only: Optional[bool] = None, - relationship: Optional[str] = None, - required_joins: Optional[Sequence[str]] = None, - sql_foreign_key: Optional[str] = None, - sql_on: Optional[str] = None, - sql_table_name: Optional[str] = None, - type: Optional[str] = None, - view_label: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + dependent_fields: Optional[Sequence[str]] = None, + fields: Optional[Sequence[str]] = None, + foreign_key: Optional[str] = None, + from_: Optional[str] = None, + outer_only: Optional[bool] = None, + relationship: Optional[str] = None, + required_joins: Optional[Sequence[str]] = None, + sql_foreign_key: Optional[str] = None, + sql_on: Optional[str] = None, + sql_table_name: Optional[str] = None, + type: Optional[str] = None, + view_label: Optional[str] = None + ): self.name = name self.dependent_fields = dependent_fields self.fields = fields @@ -9750,12 +10688,13 @@ class LookmlModelExploreSet(model.Model): name: Name value: Value set """ + name: Optional[str] = None value: Optional[Sequence[str]] = None - def __init__(self, *, - name: Optional[str] = None, - value: Optional[Sequence[str]] = None): + def __init__( + self, *, name: Optional[str] = None, value: Optional[Sequence[str]] = None + ): self.name = name self.value = value @@ -9767,12 +10706,16 @@ class LookmlModelExploreSupportedMeasureType(model.Model): dimension_type: measure_types: """ + dimension_type: Optional[str] = None measure_types: Optional[Sequence[str]] = None - def __init__(self, *, - dimension_type: Optional[str] = None, - measure_types: Optional[Sequence[str]] = None): + def __init__( + self, + *, + dimension_type: Optional[str] = None, + measure_types: Optional[Sequence[str]] = None + ): self.dimension_type = dimension_type self.measure_types = measure_types @@ -9787,18 +10730,22 @@ class LookmlModelNavExplore(model.Model): hidden: Is this explore marked as hidden group_label: Label used to group explores in the navigation menus """ + name: Optional[str] = None description: Optional[str] = None label: Optional[str] = None hidden: Optional[bool] = None group_label: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - description: Optional[str] = None, - label: Optional[str] = None, - hidden: Optional[bool] = None, - group_label: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + description: Optional[str] = None, + label: Optional[str] = None, + hidden: Optional[bool] = None, + group_label: Optional[str] = None + ): self.name = name self.description = description self.label = label @@ -9818,6 +10765,7 @@ class LookmlTest(model.Model): file: Name of the LookML file containing this test. line: Line number of this test in LookML. """ + can: Optional[MutableMapping[str, bool]] = None model_name: Optional[str] = None name: Optional[str] = None @@ -9826,14 +10774,17 @@ class LookmlTest(model.Model): file: Optional[str] = None line: Optional[int] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - model_name: Optional[str] = None, - name: Optional[str] = None, - explore_name: Optional[str] = None, - query_url_params: Optional[str] = None, - file: Optional[str] = None, - line: Optional[int] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + model_name: Optional[str] = None, + name: Optional[str] = None, + explore_name: Optional[str] = None, + query_url_params: Optional[str] = None, + file: Optional[str] = None, + line: Optional[int] = None + ): self.can = can self.model_name = model_name self.name = name @@ -9856,6 +10807,7 @@ class LookmlTestResult(model.Model): warnings: A list of any warnings encountered by the test. success: True if this test passsed without errors. """ + can: Optional[MutableMapping[str, bool]] = None model_name: Optional[str] = None test_name: Optional[str] = None @@ -9865,15 +10817,18 @@ class LookmlTestResult(model.Model): warnings: Optional[Sequence["ProjectError"]] = None success: Optional[bool] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - model_name: Optional[str] = None, - test_name: Optional[str] = None, - assertions_count: Optional[int] = None, - assertions_failed: Optional[int] = None, - errors: Optional[Sequence["ProjectError"]] = None, - warnings: Optional[Sequence["ProjectError"]] = None, - success: Optional[bool] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + model_name: Optional[str] = None, + test_name: Optional[str] = None, + assertions_count: Optional[int] = None, + assertions_failed: Optional[int] = None, + errors: Optional[Sequence["ProjectError"]] = None, + warnings: Optional[Sequence["ProjectError"]] = None, + success: Optional[bool] = None + ): self.can = can self.model_name = model_name self.test_name = test_name @@ -9902,6 +10857,7 @@ class LookMLValidatorError(model.Model): lookml_url: URL to the LookML that caused the error file_path: IDE folder path to the LookML file that caused the error """ + type: Optional[str] = None title: Optional[str] = None detail: Optional[str] = None @@ -9916,20 +10872,23 @@ class LookMLValidatorError(model.Model): lookml_url: Optional[str] = None file_path: Optional[str] = None - def __init__(self, *, - type: Optional[str] = None, - title: Optional[str] = None, - detail: Optional[str] = None, - status: Optional[str] = None, - instance: Optional[str] = None, - model: Optional[str] = None, - explore: Optional[str] = None, - field_name: Optional[str] = None, - message: Optional[str] = None, - severity: Optional[str] = None, - line_number: Optional[str] = None, - lookml_url: Optional[str] = None, - file_path: Optional[str] = None): + def __init__( + self, + *, + type: Optional[str] = None, + title: Optional[str] = None, + detail: Optional[str] = None, + status: Optional[str] = None, + instance: Optional[str] = None, + model: Optional[str] = None, + explore: Optional[str] = None, + field_name: Optional[str] = None, + message: Optional[str] = None, + severity: Optional[str] = None, + line_number: Optional[str] = None, + lookml_url: Optional[str] = None, + file_path: Optional[str] = None + ): self.type = type self.title = title self.detail = detail @@ -9952,12 +10911,16 @@ class LookMLValidatorErrorItem(model.Model): lookml_error: generic_error: """ + lookml_error: Optional["LookMLValidatorError"] = None generic_error: Optional["GenericError"] = None - def __init__(self, *, - lookml_error: Optional["LookMLValidatorError"] = None, - generic_error: Optional["GenericError"] = None): + def __init__( + self, + *, + lookml_error: Optional["LookMLValidatorError"] = None, + generic_error: Optional["GenericError"] = None + ): self.lookml_error = lookml_error self.generic_error = generic_error @@ -9971,16 +10934,20 @@ class LookMLValidatorResult(model.Model): error_count: Total number of failed LookML validations errors: Details of the LookML that failed validation """ + name: Optional[str] = None status: Optional[str] = None error_count: Optional[int] = None errors: Optional[Sequence["LookMLValidatorErrorItem"]] = None - def __init__(self, *, - name: Optional[str] = None, - status: Optional[str] = None, - error_count: Optional[int] = None, - errors: Optional[Sequence["LookMLValidatorErrorItem"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + status: Optional[str] = None, + error_count: Optional[int] = None, + errors: Optional[Sequence["LookMLValidatorErrorItem"]] = None + ): self.name = name self.status = status self.error_count = error_count @@ -9994,12 +10961,11 @@ class LookModel(model.Model): id: Model Id label: Model Label """ + id: Optional[str] = None label: Optional[str] = None - def __init__(self, *, - id: Optional[str] = None, - label: Optional[str] = None): + def __init__(self, *, id: Optional[str] = None, label: Optional[str] = None): self.id = id self.label = label @@ -10044,6 +11010,7 @@ class LookWithDashboards(model.Model): is_owner_disabled: Is the owner disabled dashboards: Dashboards """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[str] = None id: Optional[str] = None @@ -10080,42 +11047,45 @@ class LookWithDashboards(model.Model): is_owner_disabled: Optional[bool] = None dashboards: Optional[Sequence["DashboardBase"]] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[str] = None, - id: Optional[str] = None, - title: Optional[str] = None, - user_id: Optional[str] = None, - certification_metadata: Optional["Certification"] = None, - content_favorite_id: Optional[str] = None, - created_at: Optional[datetime.datetime] = None, - deleted: Optional[bool] = None, - deleted_at: Optional[datetime.datetime] = None, - deleter_id: Optional[str] = None, - description: Optional[str] = None, - embed_url: Optional[str] = None, - excel_file_url: Optional[str] = None, - favorite_count: Optional[int] = None, - google_spreadsheet_formula: Optional[str] = None, - image_embed_url: Optional[str] = None, - is_run_on_load: Optional[bool] = None, - last_accessed_at: Optional[datetime.datetime] = None, - last_updater_id: Optional[str] = None, - last_viewed_at: Optional[datetime.datetime] = None, - model: Optional["LookModel"] = None, - public: Optional[bool] = None, - public_slug: Optional[str] = None, - public_url: Optional[str] = None, - query_id: Optional[str] = None, - short_url: Optional[str] = None, - folder: Optional["FolderBase"] = None, - folder_id: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - user_name: Optional[str] = None, - view_count: Optional[int] = None, - usage_count: Optional[int] = None, - is_owner_disabled: Optional[bool] = None, - dashboards: Optional[Sequence["DashboardBase"]] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[str] = None, + id: Optional[str] = None, + title: Optional[str] = None, + user_id: Optional[str] = None, + certification_metadata: Optional["Certification"] = None, + content_favorite_id: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + deleted: Optional[bool] = None, + deleted_at: Optional[datetime.datetime] = None, + deleter_id: Optional[str] = None, + description: Optional[str] = None, + embed_url: Optional[str] = None, + excel_file_url: Optional[str] = None, + favorite_count: Optional[int] = None, + google_spreadsheet_formula: Optional[str] = None, + image_embed_url: Optional[str] = None, + is_run_on_load: Optional[bool] = None, + last_accessed_at: Optional[datetime.datetime] = None, + last_updater_id: Optional[str] = None, + last_viewed_at: Optional[datetime.datetime] = None, + model: Optional["LookModel"] = None, + public: Optional[bool] = None, + public_slug: Optional[str] = None, + public_url: Optional[str] = None, + query_id: Optional[str] = None, + short_url: Optional[str] = None, + folder: Optional["FolderBase"] = None, + folder_id: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + user_name: Optional[str] = None, + view_count: Optional[int] = None, + usage_count: Optional[int] = None, + is_owner_disabled: Optional[bool] = None, + dashboards: Optional[Sequence["DashboardBase"]] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -10194,6 +11164,7 @@ class LookWithQuery(model.Model): query: url: Url """ + can: Optional[MutableMapping[str, bool]] = None content_metadata_id: Optional[str] = None id: Optional[str] = None @@ -10231,43 +11202,46 @@ class LookWithQuery(model.Model): query: Optional["Query"] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - content_metadata_id: Optional[str] = None, - id: Optional[str] = None, - title: Optional[str] = None, - user_id: Optional[str] = None, - certification_metadata: Optional["Certification"] = None, - content_favorite_id: Optional[str] = None, - created_at: Optional[datetime.datetime] = None, - deleted: Optional[bool] = None, - deleted_at: Optional[datetime.datetime] = None, - deleter_id: Optional[str] = None, - description: Optional[str] = None, - embed_url: Optional[str] = None, - excel_file_url: Optional[str] = None, - favorite_count: Optional[int] = None, - google_spreadsheet_formula: Optional[str] = None, - image_embed_url: Optional[str] = None, - is_run_on_load: Optional[bool] = None, - last_accessed_at: Optional[datetime.datetime] = None, - last_updater_id: Optional[str] = None, - last_viewed_at: Optional[datetime.datetime] = None, - model: Optional["LookModel"] = None, - public: Optional[bool] = None, - public_slug: Optional[str] = None, - public_url: Optional[str] = None, - query_id: Optional[str] = None, - short_url: Optional[str] = None, - folder: Optional["FolderBase"] = None, - folder_id: Optional[str] = None, - updated_at: Optional[datetime.datetime] = None, - user_name: Optional[str] = None, - view_count: Optional[int] = None, - usage_count: Optional[int] = None, - is_owner_disabled: Optional[bool] = None, - query: Optional["Query"] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + content_metadata_id: Optional[str] = None, + id: Optional[str] = None, + title: Optional[str] = None, + user_id: Optional[str] = None, + certification_metadata: Optional["Certification"] = None, + content_favorite_id: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + deleted: Optional[bool] = None, + deleted_at: Optional[datetime.datetime] = None, + deleter_id: Optional[str] = None, + description: Optional[str] = None, + embed_url: Optional[str] = None, + excel_file_url: Optional[str] = None, + favorite_count: Optional[int] = None, + google_spreadsheet_formula: Optional[str] = None, + image_embed_url: Optional[str] = None, + is_run_on_load: Optional[bool] = None, + last_accessed_at: Optional[datetime.datetime] = None, + last_updater_id: Optional[str] = None, + last_viewed_at: Optional[datetime.datetime] = None, + model: Optional["LookModel"] = None, + public: Optional[bool] = None, + public_slug: Optional[str] = None, + public_url: Optional[str] = None, + query_id: Optional[str] = None, + short_url: Optional[str] = None, + folder: Optional["FolderBase"] = None, + folder_id: Optional[str] = None, + updated_at: Optional[datetime.datetime] = None, + user_name: Optional[str] = None, + view_count: Optional[int] = None, + usage_count: Optional[int] = None, + is_owner_disabled: Optional[bool] = None, + query: Optional["Query"] = None, + url: Optional[str] = None + ): self.can = can self.content_metadata_id = content_metadata_id self.id = id @@ -10315,16 +11289,20 @@ class Manifest(model.Model): imports: Imports for a project localization_settings: """ + can: Optional[MutableMapping[str, bool]] = None name: Optional[str] = None imports: Optional[Sequence["ImportedProject"]] = None localization_settings: Optional["LocalizationSettings"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - name: Optional[str] = None, - imports: Optional[Sequence["ImportedProject"]] = None, - localization_settings: Optional["LocalizationSettings"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + name: Optional[str] = None, + imports: Optional[Sequence["ImportedProject"]] = None, + localization_settings: Optional["LocalizationSettings"] = None + ): self.can = can self.name = name self.imports = imports @@ -10339,14 +11317,18 @@ class MarketplaceAutomation(model.Model): update_looker_enabled: Whether marketplace auto update is enabled for looker extensions update_third_party_enabled: Whether marketplace auto update is enabled for third party extensions """ + install_enabled: Optional[bool] = None update_looker_enabled: Optional[bool] = None update_third_party_enabled: Optional[bool] = None - def __init__(self, *, - install_enabled: Optional[bool] = None, - update_looker_enabled: Optional[bool] = None, - update_third_party_enabled: Optional[bool] = None): + def __init__( + self, + *, + install_enabled: Optional[bool] = None, + update_looker_enabled: Optional[bool] = None, + update_third_party_enabled: Optional[bool] = None + ): self.install_enabled = install_enabled self.update_looker_enabled = update_looker_enabled self.update_third_party_enabled = update_third_party_enabled @@ -10359,12 +11341,16 @@ class MaterializePDT(model.Model): materialization_id: The ID of the enqueued materialization task resp_text: Detailed response in text format """ + materialization_id: Optional[str] = None resp_text: Optional[str] = None - def __init__(self, *, - materialization_id: Optional[str] = None, - resp_text: Optional[str] = None): + def __init__( + self, + *, + materialization_id: Optional[str] = None, + resp_text: Optional[str] = None + ): self.materialization_id = materialization_id self.resp_text = resp_text @@ -10415,6 +11401,7 @@ class McpTools(model.Model): run_lookml_tests: create_view_from_table: """ + enable_all: Optional[bool] = None add_dashboard_element: Optional["McpToolSetting"] = None add_dashboard_filter: Optional["McpToolSetting"] = None @@ -10457,48 +11444,51 @@ class McpTools(model.Model): run_lookml_tests: Optional["McpToolSetting"] = None create_view_from_table: Optional["McpToolSetting"] = None - def __init__(self, *, - enable_all: Optional[bool] = None, - add_dashboard_element: Optional["McpToolSetting"] = None, - add_dashboard_filter: Optional["McpToolSetting"] = None, - create_project_file: Optional["McpToolSetting"] = None, - delete_project_file: Optional["McpToolSetting"] = None, - dev_mode: Optional["McpToolSetting"] = None, - generate_embed_url: Optional["McpToolSetting"] = None, - get_connection_databases: Optional["McpToolSetting"] = None, - get_connection_schemas: Optional["McpToolSetting"] = None, - get_connection_table_columns: Optional["McpToolSetting"] = None, - get_connection_tables: Optional["McpToolSetting"] = None, - get_connections: Optional["McpToolSetting"] = None, - get_dashboards: Optional["McpToolSetting"] = None, - get_dimensions: Optional["McpToolSetting"] = None, - get_explores: Optional["McpToolSetting"] = None, - get_filters: Optional["McpToolSetting"] = None, - get_looks: Optional["McpToolSetting"] = None, - get_measures: Optional["McpToolSetting"] = None, - get_models: Optional["McpToolSetting"] = None, - get_parameters: Optional["McpToolSetting"] = None, - get_project_file: Optional["McpToolSetting"] = None, - get_project_files: Optional["McpToolSetting"] = None, - get_projects: Optional["McpToolSetting"] = None, - health_analyze: Optional["McpToolSetting"] = None, - health_pulse: Optional["McpToolSetting"] = None, - health_vacuum: Optional["McpToolSetting"] = None, - make_dashboard: Optional["McpToolSetting"] = None, - make_look: Optional["McpToolSetting"] = None, - query: Optional["McpToolSetting"] = None, - query_sql: Optional["McpToolSetting"] = None, - query_url: Optional["McpToolSetting"] = None, - run_dashboard: Optional["McpToolSetting"] = None, - run_look: Optional["McpToolSetting"] = None, - update_project_file: Optional["McpToolSetting"] = None, - validate_project: Optional["McpToolSetting"] = None, - get_project_directories: Optional["McpToolSetting"] = None, - create_project_directory: Optional["McpToolSetting"] = None, - delete_project_directory: Optional["McpToolSetting"] = None, - get_lookml_tests: Optional["McpToolSetting"] = None, - run_lookml_tests: Optional["McpToolSetting"] = None, - create_view_from_table: Optional["McpToolSetting"] = None): + def __init__( + self, + *, + enable_all: Optional[bool] = None, + add_dashboard_element: Optional["McpToolSetting"] = None, + add_dashboard_filter: Optional["McpToolSetting"] = None, + create_project_file: Optional["McpToolSetting"] = None, + delete_project_file: Optional["McpToolSetting"] = None, + dev_mode: Optional["McpToolSetting"] = None, + generate_embed_url: Optional["McpToolSetting"] = None, + get_connection_databases: Optional["McpToolSetting"] = None, + get_connection_schemas: Optional["McpToolSetting"] = None, + get_connection_table_columns: Optional["McpToolSetting"] = None, + get_connection_tables: Optional["McpToolSetting"] = None, + get_connections: Optional["McpToolSetting"] = None, + get_dashboards: Optional["McpToolSetting"] = None, + get_dimensions: Optional["McpToolSetting"] = None, + get_explores: Optional["McpToolSetting"] = None, + get_filters: Optional["McpToolSetting"] = None, + get_looks: Optional["McpToolSetting"] = None, + get_measures: Optional["McpToolSetting"] = None, + get_models: Optional["McpToolSetting"] = None, + get_parameters: Optional["McpToolSetting"] = None, + get_project_file: Optional["McpToolSetting"] = None, + get_project_files: Optional["McpToolSetting"] = None, + get_projects: Optional["McpToolSetting"] = None, + health_analyze: Optional["McpToolSetting"] = None, + health_pulse: Optional["McpToolSetting"] = None, + health_vacuum: Optional["McpToolSetting"] = None, + make_dashboard: Optional["McpToolSetting"] = None, + make_look: Optional["McpToolSetting"] = None, + query: Optional["McpToolSetting"] = None, + query_sql: Optional["McpToolSetting"] = None, + query_url: Optional["McpToolSetting"] = None, + run_dashboard: Optional["McpToolSetting"] = None, + run_look: Optional["McpToolSetting"] = None, + update_project_file: Optional["McpToolSetting"] = None, + validate_project: Optional["McpToolSetting"] = None, + get_project_directories: Optional["McpToolSetting"] = None, + create_project_directory: Optional["McpToolSetting"] = None, + delete_project_directory: Optional["McpToolSetting"] = None, + get_lookml_tests: Optional["McpToolSetting"] = None, + run_lookml_tests: Optional["McpToolSetting"] = None, + create_view_from_table: Optional["McpToolSetting"] = None + ): self.enable_all = enable_all self.add_dashboard_element = add_dashboard_element self.add_dashboard_filter = add_dashboard_filter @@ -10551,16 +11541,20 @@ class McpToolSetting(model.Model): category: Tool category access_level: Tool access level """ + enabled: Optional[bool] = None description: Optional[str] = None category: Optional[str] = None access_level: Optional[str] = None - def __init__(self, *, - enabled: Optional[bool] = None, - description: Optional[str] = None, - category: Optional[str] = None, - access_level: Optional[str] = None): + def __init__( + self, + *, + enabled: Optional[bool] = None, + description: Optional[str] = None, + category: Optional[str] = None, + access_level: Optional[str] = None + ): self.enabled = enabled self.description = description self.category = category @@ -10574,12 +11568,16 @@ class MergeFields(model.Model): field_name: Field name to map onto in the merged results source_field_name: Field name from the source query """ + field_name: Optional[str] = None source_field_name: Optional[str] = None - def __init__(self, *, - field_name: Optional[str] = None, - source_field_name: Optional[str] = None): + def __init__( + self, + *, + field_name: Optional[str] = None, + source_field_name: Optional[str] = None + ): self.field_name = field_name self.source_field_name = source_field_name @@ -10600,6 +11598,7 @@ class MergeQuery(model.Model): limit: Limit vis_config: Visualization Config """ + can: Optional[MutableMapping[str, bool]] = None column_limit: Optional[str] = None dynamic_fields: Optional[str] = None @@ -10612,18 +11611,21 @@ class MergeQuery(model.Model): limit: Optional[str] = None vis_config: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - column_limit: Optional[str] = None, - dynamic_fields: Optional[str] = None, - id: Optional[str] = None, - pivots: Optional[Sequence[str]] = None, - result_maker_id: Optional[str] = None, - sorts: Optional[Sequence[str]] = None, - source_queries: Optional[Sequence["MergeQuerySourceQuery"]] = None, - total: Optional[bool] = None, - limit: Optional[str] = None, - vis_config: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + column_limit: Optional[str] = None, + dynamic_fields: Optional[str] = None, + id: Optional[str] = None, + pivots: Optional[Sequence[str]] = None, + result_maker_id: Optional[str] = None, + sorts: Optional[Sequence[str]] = None, + source_queries: Optional[Sequence["MergeQuerySourceQuery"]] = None, + total: Optional[bool] = None, + limit: Optional[str] = None, + vis_config: Optional[MutableMapping[str, Any]] = None + ): self.can = can self.column_limit = column_limit self.dynamic_fields = dynamic_fields @@ -10646,16 +11648,20 @@ class MergeQuerySourceQuery(model.Model): query_id: Id of the query to merge query_slug: Slug of the query to merge """ + merge_fields: Optional[Sequence["MergeFields"]] = None name: Optional[str] = None query_id: Optional[str] = None query_slug: Optional[str] = None - def __init__(self, *, - merge_fields: Optional[Sequence["MergeFields"]] = None, - name: Optional[str] = None, - query_id: Optional[str] = None, - query_slug: Optional[str] = None): + def __init__( + self, + *, + merge_fields: Optional[Sequence["MergeFields"]] = None, + name: Optional[str] = None, + query_id: Optional[str] = None, + query_slug: Optional[str] = None + ): self.merge_fields = merge_fields self.name = name self.query_id = query_id @@ -10669,12 +11675,16 @@ class MobileFeatureFlags(model.Model): feature_flag_name: Specifies the name of feature flag. feature_flag_state: Specifies the state of feature flag """ + feature_flag_name: Optional[str] = None feature_flag_state: Optional[bool] = None - def __init__(self, *, - feature_flag_name: Optional[str] = None, - feature_flag_state: Optional[bool] = None): + def __init__( + self, + *, + feature_flag_name: Optional[str] = None, + feature_flag_state: Optional[bool] = None + ): self.feature_flag_name = feature_flag_name self.feature_flag_state = feature_flag_state @@ -10691,6 +11701,7 @@ class MobilePayload(model.Model): query_slug: Slug of the query which runs the alert queries. query_id: ID of the query """ + alert_id: str title: Optional[str] = None investigative_content_id: Optional[str] = None @@ -10699,14 +11710,17 @@ class MobilePayload(model.Model): query_slug: Optional[str] = None query_id: Optional[str] = None - def __init__(self, *, - alert_id: str, - title: Optional[str] = None, - investigative_content_id: Optional[str] = None, - dashboard_name: Optional[str] = None, - dashboard_id: Optional[str] = None, - query_slug: Optional[str] = None, - query_id: Optional[str] = None): + def __init__( + self, + *, + alert_id: str, + title: Optional[str] = None, + investigative_content_id: Optional[str] = None, + dashboard_name: Optional[str] = None, + dashboard_id: Optional[str] = None, + query_slug: Optional[str] = None, + query_id: Optional[str] = None + ): self.alert_id = alert_id self.title = title self.investigative_content_id = investigative_content_id @@ -10724,14 +11738,18 @@ class MobileSettings(model.Model): mobile_app_integration: Specifies whether mobile access for this instance is enabled. mobile_feature_flags: Specifies feature flag and state relevant to mobile. """ + mobile_force_authentication: Optional[bool] = None mobile_app_integration: Optional[bool] = None mobile_feature_flags: Optional[Sequence["MobileFeatureFlags"]] = None - def __init__(self, *, - mobile_force_authentication: Optional[bool] = None, - mobile_app_integration: Optional[bool] = None, - mobile_feature_flags: Optional[Sequence["MobileFeatureFlags"]] = None): + def __init__( + self, + *, + mobile_force_authentication: Optional[bool] = None, + mobile_app_integration: Optional[bool] = None, + mobile_feature_flags: Optional[Sequence["MobileFeatureFlags"]] = None + ): self.mobile_force_authentication = mobile_force_authentication self.mobile_app_integration = mobile_app_integration self.mobile_feature_flags = mobile_feature_flags @@ -10745,19 +11763,19 @@ class MobileToken(model.Model): device_type: Specifies type of device. Valid values are: "android", "ios". id: Unique ID. """ + device_token: str device_type: "DeviceType" id: Optional[str] = None __annotations__ = { "device_token": str, "device_type": ForwardRef("DeviceType"), - "id": Optional[str] + "id": Optional[str], } - def __init__(self, *, - device_token: str, - device_type: "DeviceType", - id: Optional[str] = None): + def __init__( + self, *, device_token: str, device_type: "DeviceType", id: Optional[str] = None + ): self.device_token = device_token self.device_type = device_type self.id = id @@ -10771,14 +11789,18 @@ class Model(model.Model): name: value_formats: Array of named value formats """ + connection: Optional[str] = None name: Optional[str] = None value_formats: Optional[Sequence["ModelNamedValueFormats"]] = None - def __init__(self, *, - connection: Optional[str] = None, - name: Optional[str] = None, - value_formats: Optional[Sequence["ModelNamedValueFormats"]] = None): + def __init__( + self, + *, + connection: Optional[str] = None, + name: Optional[str] = None, + value_formats: Optional[Sequence["ModelNamedValueFormats"]] = None + ): self.connection = connection self.name = name self.value_formats = value_formats @@ -10794,18 +11816,22 @@ class ModelFieldSuggestions(model.Model): hit_limit: True if this was a hit limit used_calcite_materialization: True if calcite was used """ + suggestions: Optional[Sequence[str]] = None error: Optional[str] = None from_cache: Optional[bool] = None hit_limit: Optional[bool] = None used_calcite_materialization: Optional[bool] = None - def __init__(self, *, - suggestions: Optional[Sequence[str]] = None, - error: Optional[str] = None, - from_cache: Optional[bool] = None, - hit_limit: Optional[bool] = None, - used_calcite_materialization: Optional[bool] = None): + def __init__( + self, + *, + suggestions: Optional[Sequence[str]] = None, + error: Optional[str] = None, + from_cache: Optional[bool] = None, + hit_limit: Optional[bool] = None, + used_calcite_materialization: Optional[bool] = None + ): self.suggestions = suggestions self.error = error self.from_cache = from_cache @@ -10822,16 +11848,20 @@ class ModelNamedValueFormats(model.Model): name: strict_value_format: """ + format_string: Optional[str] = None label: Optional[str] = None name: Optional[str] = None strict_value_format: Optional[bool] = None - def __init__(self, *, - format_string: Optional[str] = None, - label: Optional[str] = None, - name: Optional[str] = None, - strict_value_format: Optional[bool] = None): + def __init__( + self, + *, + format_string: Optional[str] = None, + label: Optional[str] = None, + name: Optional[str] = None, + strict_value_format: Optional[bool] = None + ): self.format_string = format_string self.label = label self.name = name @@ -10850,6 +11880,7 @@ class ModelSet(model.Model): name: Name of ModelSet url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None all_access: Optional[bool] = None built_in: Optional[bool] = None @@ -10858,14 +11889,17 @@ class ModelSet(model.Model): name: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - all_access: Optional[bool] = None, - built_in: Optional[bool] = None, - id: Optional[str] = None, - models: Optional[Sequence[str]] = None, - name: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + all_access: Optional[bool] = None, + built_in: Optional[bool] = None, + id: Optional[str] = None, + models: Optional[Sequence[str]] = None, + name: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.all_access = all_access self.built_in = built_in @@ -10882,12 +11916,13 @@ class ModelsNotValidated(model.Model): name: Model name project_file_id: Project file """ + name: Optional[str] = None project_file_id: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - project_file_id: Optional[str] = None): + def __init__( + self, *, name: Optional[str] = None, project_file_id: Optional[str] = None + ): self.name = name self.project_file_id = project_file_id @@ -10897,6 +11932,7 @@ class Name(enum.Enum): The type of time interval this field represents a grouping of. Valid values are: "day", "hour", "minute", "second", "millisecond", "microsecond", "week", "month", "quarter", "year". (Enum defined in LookmlModelExploreFieldTimeInterval) """ + day = "day" hour = "hour" minute = "minute" @@ -10928,6 +11964,7 @@ class OauthClientApp(model.Model): tokens_invalid_before: All auth codes, access tokens, and refresh tokens issued for this application prior to this date-time for ALL USERS will be invalid. activated_users: All users who have been activated to use this app """ + can: Optional[MutableMapping[str, bool]] = None client_guid: Optional[str] = None redirect_uri: Optional[str] = None @@ -10938,16 +11975,19 @@ class OauthClientApp(model.Model): tokens_invalid_before: Optional[datetime.datetime] = None activated_users: Optional[Sequence["UserPublic"]] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - client_guid: Optional[str] = None, - redirect_uri: Optional[str] = None, - display_name: Optional[str] = None, - description: Optional[str] = None, - enabled: Optional[bool] = None, - group_id: Optional[str] = None, - tokens_invalid_before: Optional[datetime.datetime] = None, - activated_users: Optional[Sequence["UserPublic"]] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + client_guid: Optional[str] = None, + redirect_uri: Optional[str] = None, + display_name: Optional[str] = None, + description: Optional[str] = None, + enabled: Optional[bool] = None, + group_id: Optional[str] = None, + tokens_invalid_before: Optional[datetime.datetime] = None, + activated_users: Optional[Sequence["UserPublic"]] = None + ): self.can = can self.client_guid = client_guid self.redirect_uri = redirect_uri @@ -10997,6 +12037,7 @@ class OIDCConfig(model.Model): allow_direct_roles: Allows roles to be directly assigned to OIDC auth'd users. url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None alternate_email_login_allowed: Optional[bool] = None audience: Optional[str] = None @@ -11031,40 +12072,43 @@ class OIDCConfig(model.Model): allow_direct_roles: Optional[bool] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - alternate_email_login_allowed: Optional[bool] = None, - audience: Optional[str] = None, - auth_requires_role: Optional[bool] = None, - authorization_endpoint: Optional[str] = None, - default_new_user_group_ids: Optional[Sequence[str]] = None, - default_new_user_groups: Optional[Sequence["Group"]] = None, - default_new_user_role_ids: Optional[Sequence[str]] = None, - default_new_user_roles: Optional[Sequence["Role"]] = None, - enabled: Optional[bool] = None, - groups: Optional[Sequence["OIDCGroupRead"]] = None, - groups_attribute: Optional[str] = None, - groups_with_role_ids: Optional[Sequence["OIDCGroupWrite"]] = None, - identifier: Optional[str] = None, - issuer: Optional[str] = None, - modified_at: Optional[datetime.datetime] = None, - modified_by: Optional[str] = None, - new_user_migration_types: Optional[str] = None, - scopes: Optional[Sequence[str]] = None, - secret: Optional[str] = None, - set_roles_from_groups: Optional[bool] = None, - test_slug: Optional[str] = None, - token_endpoint: Optional[str] = None, - user_attribute_map_email: Optional[str] = None, - user_attribute_map_first_name: Optional[str] = None, - user_attribute_map_last_name: Optional[str] = None, - user_attributes: Optional[Sequence["OIDCUserAttributeRead"]] = None, - user_attributes_with_ids: Optional[Sequence["OIDCUserAttributeWrite"]] = None, - userinfo_endpoint: Optional[str] = None, - allow_normal_group_membership: Optional[bool] = None, - allow_roles_from_normal_groups: Optional[bool] = None, - allow_direct_roles: Optional[bool] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + alternate_email_login_allowed: Optional[bool] = None, + audience: Optional[str] = None, + auth_requires_role: Optional[bool] = None, + authorization_endpoint: Optional[str] = None, + default_new_user_group_ids: Optional[Sequence[str]] = None, + default_new_user_groups: Optional[Sequence["Group"]] = None, + default_new_user_role_ids: Optional[Sequence[str]] = None, + default_new_user_roles: Optional[Sequence["Role"]] = None, + enabled: Optional[bool] = None, + groups: Optional[Sequence["OIDCGroupRead"]] = None, + groups_attribute: Optional[str] = None, + groups_with_role_ids: Optional[Sequence["OIDCGroupWrite"]] = None, + identifier: Optional[str] = None, + issuer: Optional[str] = None, + modified_at: Optional[datetime.datetime] = None, + modified_by: Optional[str] = None, + new_user_migration_types: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + secret: Optional[str] = None, + set_roles_from_groups: Optional[bool] = None, + test_slug: Optional[str] = None, + token_endpoint: Optional[str] = None, + user_attribute_map_email: Optional[str] = None, + user_attribute_map_first_name: Optional[str] = None, + user_attribute_map_last_name: Optional[str] = None, + user_attributes: Optional[Sequence["OIDCUserAttributeRead"]] = None, + user_attributes_with_ids: Optional[Sequence["OIDCUserAttributeWrite"]] = None, + userinfo_endpoint: Optional[str] = None, + allow_normal_group_membership: Optional[bool] = None, + allow_roles_from_normal_groups: Optional[bool] = None, + allow_direct_roles: Optional[bool] = None, + url: Optional[str] = None + ): self.can = can self.alternate_email_login_allowed = alternate_email_login_allowed self.audience = audience @@ -11110,18 +12154,22 @@ class OIDCGroupRead(model.Model): name: Name of group in OIDC roles: Looker Roles """ + id: Optional[str] = None looker_group_id: Optional[str] = None looker_group_name: Optional[str] = None name: Optional[str] = None roles: Optional[Sequence["Role"]] = None - def __init__(self, *, - id: Optional[str] = None, - looker_group_id: Optional[str] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - roles: Optional[Sequence["Role"]] = None): + def __init__( + self, + *, + id: Optional[str] = None, + looker_group_id: Optional[str] = None, + looker_group_name: Optional[str] = None, + name: Optional[str] = None, + roles: Optional[Sequence["Role"]] = None + ): self.id = id self.looker_group_id = looker_group_id self.looker_group_name = looker_group_name @@ -11139,18 +12187,22 @@ class OIDCGroupWrite(model.Model): name: Name of group in OIDC role_ids: Looker Role Ids """ + id: Optional[str] = None looker_group_id: Optional[str] = None looker_group_name: Optional[str] = None name: Optional[str] = None role_ids: Optional[Sequence[str]] = None - def __init__(self, *, - id: Optional[str] = None, - looker_group_id: Optional[str] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - role_ids: Optional[Sequence[str]] = None): + def __init__( + self, + *, + id: Optional[str] = None, + looker_group_id: Optional[str] = None, + looker_group_name: Optional[str] = None, + name: Optional[str] = None, + role_ids: Optional[Sequence[str]] = None + ): self.id = id self.looker_group_id = looker_group_id self.looker_group_name = looker_group_name @@ -11166,14 +12218,18 @@ class OIDCUserAttributeRead(model.Model): required: Required to be in OIDC assertion for login to be allowed to succeed user_attributes: Looker User Attributes """ + name: Optional[str] = None required: Optional[bool] = None user_attributes: Optional[Sequence["UserAttribute"]] = None - def __init__(self, *, - name: Optional[str] = None, - required: Optional[bool] = None, - user_attributes: Optional[Sequence["UserAttribute"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + required: Optional[bool] = None, + user_attributes: Optional[Sequence["UserAttribute"]] = None + ): self.name = name self.required = required self.user_attributes = user_attributes @@ -11187,14 +12243,18 @@ class OIDCUserAttributeWrite(model.Model): required: Required to be in OIDC assertion for login to be allowed to succeed user_attribute_ids: Looker User Attribute Ids """ + name: Optional[str] = None required: Optional[bool] = None user_attribute_ids: Optional[Sequence[str]] = None - def __init__(self, *, - name: Optional[str] = None, - required: Optional[bool] = None, - user_attribute_ids: Optional[Sequence[str]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + required: Optional[bool] = None, + user_attribute_ids: Optional[Sequence[str]] = None + ): self.name = name self.required = required self.user_attribute_ids = user_attribute_ids @@ -11213,6 +12273,7 @@ class PasswordConfig(model.Model): expiration_duration_days: Number of days before passwords expire. Must be between 30 and 365. policy_enabled_at: The timestamp of when the password expiration policy was last enabled. """ + can: Optional[MutableMapping[str, bool]] = None min_length: Optional[int] = None require_numeric: Optional[bool] = None @@ -11222,15 +12283,18 @@ class PasswordConfig(model.Model): expiration_duration_days: Optional[int] = None policy_enabled_at: Optional[datetime.datetime] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - min_length: Optional[int] = None, - require_numeric: Optional[bool] = None, - require_upperlower: Optional[bool] = None, - require_special: Optional[bool] = None, - expiration_enabled: Optional[bool] = None, - expiration_duration_days: Optional[int] = None, - policy_enabled_at: Optional[datetime.datetime] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + min_length: Optional[int] = None, + require_numeric: Optional[bool] = None, + require_upperlower: Optional[bool] = None, + require_special: Optional[bool] = None, + expiration_enabled: Optional[bool] = None, + expiration_duration_days: Optional[int] = None, + policy_enabled_at: Optional[datetime.datetime] = None + ): self.can = can self.min_length = min_length self.require_numeric = require_numeric @@ -11246,6 +12310,7 @@ class Period(enum.Enum): Specifies the time frame for the comparison. Valid values are: "year", "fiscal_year", "quarter", "fiscal_quarter", "month", "week", "date". (Enum defined in LookmlModelExploreFieldPeriodOverPeriodParams) """ + year = "year" fiscal_year = "fiscal_year" quarter = "quarter" @@ -11269,16 +12334,20 @@ class Permission(model.Model): parent: Dependency parent symbol description: Description """ + can: Optional[MutableMapping[str, bool]] = None permission: Optional[str] = None parent: Optional[str] = None description: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - permission: Optional[str] = None, - parent: Optional[str] = None, - description: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + permission: Optional[str] = None, + parent: Optional[str] = None, + description: Optional[str] = None + ): self.can = can self.permission = permission self.parent = parent @@ -11297,6 +12366,7 @@ class PermissionSet(model.Model): permissions: url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None all_access: Optional[bool] = None built_in: Optional[bool] = None @@ -11305,14 +12375,17 @@ class PermissionSet(model.Model): permissions: Optional[Sequence[str]] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - all_access: Optional[bool] = None, - built_in: Optional[bool] = None, - id: Optional[str] = None, - name: Optional[str] = None, - permissions: Optional[Sequence[str]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + all_access: Optional[bool] = None, + built_in: Optional[bool] = None, + id: Optional[str] = None, + name: Optional[str] = None, + permissions: Optional[Sequence[str]] = None, + url: Optional[str] = None + ): self.can = can self.all_access = all_access self.built_in = built_in @@ -11327,6 +12400,7 @@ class PermissionType(enum.Enum): Type of permission: "view" or "edit" Valid values are: "view", "edit". (Enum defined in ContentMetaGroupUser) """ + view = "view" edit = "edit" invalid_api_enum_value = "invalid_api_enum_value" @@ -11356,6 +12430,7 @@ class PrivatelabelConfiguration(model.Model): alerts_links: Remove Looker links from Alerts folders_mentions: Remove Looker mentions in home folder page when you don’t have any items saved """ + logo_file: Optional[str] = None logo_url: Optional[str] = None favicon_file: Optional[str] = None @@ -11372,22 +12447,25 @@ class PrivatelabelConfiguration(model.Model): alerts_links: Optional[bool] = None folders_mentions: Optional[bool] = None - def __init__(self, *, - logo_file: Optional[str] = None, - logo_url: Optional[str] = None, - favicon_file: Optional[str] = None, - favicon_url: Optional[str] = None, - default_title: Optional[str] = None, - show_help_menu: Optional[bool] = None, - show_docs: Optional[bool] = None, - show_email_sub_options: Optional[bool] = None, - allow_looker_mentions: Optional[bool] = None, - allow_looker_links: Optional[bool] = None, - custom_welcome_email_advanced: Optional[bool] = None, - setup_mentions: Optional[bool] = None, - alerts_logo: Optional[bool] = None, - alerts_links: Optional[bool] = None, - folders_mentions: Optional[bool] = None): + def __init__( + self, + *, + logo_file: Optional[str] = None, + logo_url: Optional[str] = None, + favicon_file: Optional[str] = None, + favicon_url: Optional[str] = None, + default_title: Optional[str] = None, + show_help_menu: Optional[bool] = None, + show_docs: Optional[bool] = None, + show_email_sub_options: Optional[bool] = None, + allow_looker_mentions: Optional[bool] = None, + allow_looker_links: Optional[bool] = None, + custom_welcome_email_advanced: Optional[bool] = None, + setup_mentions: Optional[bool] = None, + alerts_logo: Optional[bool] = None, + alerts_links: Optional[bool] = None, + folders_mentions: Optional[bool] = None + ): self.logo_file = logo_file self.logo_url = logo_url self.favicon_file = favicon_file @@ -11412,12 +12490,16 @@ class PrivateLookerInstanceInfo(model.Model): lookerInstanceId: The Looker instance id. serviceDirectoryName: The service directory name of the Looker instance. """ + lookerInstanceId: Optional[str] = None serviceDirectoryName: Optional[str] = None - def __init__(self, *, - lookerInstanceId: Optional[str] = None, - serviceDirectoryName: Optional[str] = None): + def __init__( + self, + *, + lookerInstanceId: Optional[str] = None, + serviceDirectoryName: Optional[str] = None + ): self.lookerInstanceId = lookerInstanceId self.serviceDirectoryName = serviceDirectoryName @@ -11451,6 +12533,7 @@ class Project(model.Model): has_production_counterpart: If true the project has been pushed to production. dependency_status: Status of dependencies in your manifest & lockfile """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -11476,31 +12559,34 @@ class Project(model.Model): has_production_counterpart: Optional[bool] = None dependency_status: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - name: Optional[str] = None, - uses_git: Optional[bool] = None, - is_git_dev_locked: Optional[bool] = None, - git_remote_url: Optional[str] = None, - git_username: Optional[str] = None, - git_password: Optional[str] = None, - git_production_branch_name: Optional[str] = None, - use_git_cookie_auth: Optional[bool] = None, - git_username_user_attribute: Optional[str] = None, - git_password_user_attribute: Optional[str] = None, - git_service_name: Optional[str] = None, - git_application_server_http_port: Optional[int] = None, - git_application_server_http_scheme: Optional[str] = None, - deploy_secret: Optional[str] = None, - unset_deploy_secret: Optional[bool] = None, - pull_request_mode: Optional["PullRequestMode"] = None, - validation_required: Optional[bool] = None, - git_release_mgmt_enabled: Optional[bool] = None, - allow_warnings: Optional[bool] = None, - is_example: Optional[bool] = None, - has_production_counterpart: Optional[bool] = None, - dependency_status: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + name: Optional[str] = None, + uses_git: Optional[bool] = None, + is_git_dev_locked: Optional[bool] = None, + git_remote_url: Optional[str] = None, + git_username: Optional[str] = None, + git_password: Optional[str] = None, + git_production_branch_name: Optional[str] = None, + use_git_cookie_auth: Optional[bool] = None, + git_username_user_attribute: Optional[str] = None, + git_password_user_attribute: Optional[str] = None, + git_service_name: Optional[str] = None, + git_application_server_http_port: Optional[int] = None, + git_application_server_http_scheme: Optional[str] = None, + deploy_secret: Optional[str] = None, + unset_deploy_secret: Optional[bool] = None, + pull_request_mode: Optional["PullRequestMode"] = None, + validation_required: Optional[bool] = None, + git_release_mgmt_enabled: Optional[bool] = None, + allow_warnings: Optional[bool] = None, + is_example: Optional[bool] = None, + has_production_counterpart: Optional[bool] = None, + dependency_status: Optional[str] = None + ): self.can = can self.id = id self.name = name @@ -11544,6 +12630,7 @@ class ProjectError(model.Model): params: Error parameters sanitized_message: A version of the error message that does not contain potentially sensitive information. Suitable for situations in which messages are stored or sent to consumers outside of Looker, such as external logs. Sanitized messages will display "(?)" where sensitive information would appear in the corresponding non-sanitized message """ + code: Optional[str] = None severity: Optional[str] = None kind: Optional[str] = None @@ -11557,19 +12644,22 @@ class ProjectError(model.Model): params: Optional[MutableMapping[str, Any]] = None sanitized_message: Optional[str] = None - def __init__(self, *, - code: Optional[str] = None, - severity: Optional[str] = None, - kind: Optional[str] = None, - message: Optional[str] = None, - field_name: Optional[str] = None, - file_path: Optional[str] = None, - line_number: Optional[int] = None, - model_id: Optional[str] = None, - explore: Optional[str] = None, - help_url: Optional[str] = None, - params: Optional[MutableMapping[str, Any]] = None, - sanitized_message: Optional[str] = None): + def __init__( + self, + *, + code: Optional[str] = None, + severity: Optional[str] = None, + kind: Optional[str] = None, + message: Optional[str] = None, + field_name: Optional[str] = None, + file_path: Optional[str] = None, + line_number: Optional[int] = None, + model_id: Optional[str] = None, + explore: Optional[str] = None, + help_url: Optional[str] = None, + params: Optional[MutableMapping[str, Any]] = None, + sanitized_message: Optional[str] = None + ): self.code = code self.severity = severity self.kind = kind @@ -11598,6 +12688,7 @@ class ProjectFile(model.Model): editable: State of editability for the file. git_status: """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None path: Optional[str] = None @@ -11608,16 +12699,19 @@ class ProjectFile(model.Model): editable: Optional[bool] = None git_status: Optional["GitStatus"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - path: Optional[str] = None, - title: Optional[str] = None, - type: Optional[str] = None, - extension: Optional[str] = None, - mime_type: Optional[str] = None, - editable: Optional[bool] = None, - git_status: Optional["GitStatus"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + path: Optional[str] = None, + title: Optional[str] = None, + type: Optional[str] = None, + extension: Optional[str] = None, + mime_type: Optional[str] = None, + editable: Optional[bool] = None, + git_status: Optional["GitStatus"] = None + ): self.can = can self.id = id self.path = path @@ -11635,10 +12729,10 @@ class ProjectRun(model.Model): Attributes: run: """ + run: Optional["Run"] = None - def __init__(self, *, - run: Optional["Run"] = None): + def __init__(self, *, run: Optional["Run"] = None): self.run = run @@ -11651,16 +12745,20 @@ class ProjectValidation(model.Model): models_not_validated: A list of models which were not fully validated computation_time: Duration of project validation in seconds """ + errors: Optional[Sequence["ProjectError"]] = None project_digest: Optional[str] = None models_not_validated: Optional[Sequence["ModelsNotValidated"]] = None computation_time: Optional[float] = None - def __init__(self, *, - errors: Optional[Sequence["ProjectError"]] = None, - project_digest: Optional[str] = None, - models_not_validated: Optional[Sequence["ModelsNotValidated"]] = None, - computation_time: Optional[float] = None): + def __init__( + self, + *, + errors: Optional[Sequence["ProjectError"]] = None, + project_digest: Optional[str] = None, + models_not_validated: Optional[Sequence["ModelsNotValidated"]] = None, + computation_time: Optional[float] = None + ): self.errors = errors self.project_digest = project_digest self.models_not_validated = models_not_validated @@ -11677,18 +12775,22 @@ class ProjectValidationCache(model.Model): computation_time: Duration of project validation in seconds stale: If true, the cached project validation results are no longer accurate because the project has changed since the cached results were calculated """ + errors: Optional[Sequence["ProjectError"]] = None project_digest: Optional[str] = None models_not_validated: Optional[Sequence["ModelsNotValidated"]] = None computation_time: Optional[float] = None stale: Optional[bool] = None - def __init__(self, *, - errors: Optional[Sequence["ProjectError"]] = None, - project_digest: Optional[str] = None, - models_not_validated: Optional[Sequence["ModelsNotValidated"]] = None, - computation_time: Optional[float] = None, - stale: Optional[bool] = None): + def __init__( + self, + *, + errors: Optional[Sequence["ProjectError"]] = None, + project_digest: Optional[str] = None, + models_not_validated: Optional[Sequence["ModelsNotValidated"]] = None, + computation_time: Optional[float] = None, + stale: Optional[bool] = None + ): self.errors = errors self.project_digest = project_digest self.models_not_validated = models_not_validated @@ -11709,6 +12811,7 @@ class ProjectWorkspace(model.Model): git_branch: lookml_type: The lookml syntax used by all files in this project """ + can: Optional[MutableMapping[str, bool]] = None project_id: Optional[str] = None workspace_id: Optional[str] = None @@ -11718,15 +12821,18 @@ class ProjectWorkspace(model.Model): git_branch: Optional["GitBranch"] = None lookml_type: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - project_id: Optional[str] = None, - workspace_id: Optional[str] = None, - git_status: Optional[str] = None, - git_head: Optional[str] = None, - dependency_status: Optional["DependencyStatus"] = None, - git_branch: Optional["GitBranch"] = None, - lookml_type: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + project_id: Optional[str] = None, + workspace_id: Optional[str] = None, + git_status: Optional[str] = None, + git_head: Optional[str] = None, + dependency_status: Optional["DependencyStatus"] = None, + git_branch: Optional["GitBranch"] = None, + lookml_type: Optional[str] = None + ): self.can = can self.project_id = project_id self.workspace_id = workspace_id @@ -11742,6 +12848,7 @@ class PullRequestMode(enum.Enum): The git pull request policy for this project. Valid values are: "off", "links", "recommended", "required". (Enum defined in Project) """ + off = "off" links = "links" recommended = "recommended" @@ -11784,6 +12891,7 @@ class Query(model.Model): query_timezone: Query Timezone has_table_calculations: Has Table Calculations """ + model: str view: str can: Optional[MutableMapping[str, bool]] = None @@ -11811,33 +12919,36 @@ class Query(model.Model): query_timezone: Optional[str] = None has_table_calculations: Optional[bool] = None - def __init__(self, *, - model: str, - view: str, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - fields: Optional[Sequence[str]] = None, - pivots: Optional[Sequence[str]] = None, - fill_fields: Optional[Sequence[str]] = None, - filters: Optional[MutableMapping[str, Any]] = None, - filter_expression: Optional[str] = None, - sorts: Optional[Sequence[str]] = None, - limit: Optional[str] = None, - column_limit: Optional[str] = None, - total: Optional[bool] = None, - row_total: Optional[str] = None, - subtotals: Optional[Sequence[str]] = None, - vis_config: Optional[MutableMapping[str, Any]] = None, - filter_config: Optional[MutableMapping[str, Any]] = None, - visible_ui_sections: Optional[str] = None, - slug: Optional[str] = None, - dynamic_fields: Optional[str] = None, - client_id: Optional[str] = None, - share_url: Optional[str] = None, - expanded_share_url: Optional[str] = None, - url: Optional[str] = None, - query_timezone: Optional[str] = None, - has_table_calculations: Optional[bool] = None): + def __init__( + self, + *, + model: str, + view: str, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + fields: Optional[Sequence[str]] = None, + pivots: Optional[Sequence[str]] = None, + fill_fields: Optional[Sequence[str]] = None, + filters: Optional[MutableMapping[str, Any]] = None, + filter_expression: Optional[str] = None, + sorts: Optional[Sequence[str]] = None, + limit: Optional[str] = None, + column_limit: Optional[str] = None, + total: Optional[bool] = None, + row_total: Optional[str] = None, + subtotals: Optional[Sequence[str]] = None, + vis_config: Optional[MutableMapping[str, Any]] = None, + filter_config: Optional[MutableMapping[str, Any]] = None, + visible_ui_sections: Optional[str] = None, + slug: Optional[str] = None, + dynamic_fields: Optional[str] = None, + client_id: Optional[str] = None, + share_url: Optional[str] = None, + expanded_share_url: Optional[str] = None, + url: Optional[str] = None, + query_timezone: Optional[str] = None, + has_table_calculations: Optional[bool] = None + ): self.model = model self.view = view self.can = can @@ -11890,6 +13001,7 @@ class QueryTask(model.Model): dashboard_id: Id of dashboard associated with query. result_format: The data format of the query results. """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None query_id: Optional[str] = None @@ -11910,26 +13022,29 @@ class QueryTask(model.Model): dashboard_id: Optional[str] = None result_format: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - query_id: Optional[str] = None, - query: Optional["Query"] = None, - generate_links: Optional[bool] = None, - force_production: Optional[bool] = None, - path_prefix: Optional[str] = None, - cache: Optional[bool] = None, - server_table_calcs: Optional[bool] = None, - cache_only: Optional[bool] = None, - cache_key: Optional[str] = None, - status: Optional[str] = None, - source: Optional[str] = None, - runtime: Optional[float] = None, - rebuild_pdts: Optional[bool] = None, - result_source: Optional[str] = None, - look_id: Optional[str] = None, - dashboard_id: Optional[str] = None, - result_format: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + query_id: Optional[str] = None, + query: Optional["Query"] = None, + generate_links: Optional[bool] = None, + force_production: Optional[bool] = None, + path_prefix: Optional[str] = None, + cache: Optional[bool] = None, + server_table_calcs: Optional[bool] = None, + cache_only: Optional[bool] = None, + cache_key: Optional[str] = None, + status: Optional[str] = None, + source: Optional[str] = None, + runtime: Optional[float] = None, + rebuild_pdts: Optional[bool] = None, + result_source: Optional[str] = None, + look_id: Optional[str] = None, + dashboard_id: Optional[str] = None, + result_format: Optional[str] = None + ): self.can = can self.id = id self.query_id = query_id @@ -11976,6 +13091,7 @@ class RenderTask(model.Model): user_id: The user account permissions in which the render task will execute width: Output width in pixels """ + can: Optional[MutableMapping[str, bool]] = None created_at: Optional[str] = None dashboard_filters: Optional[str] = None @@ -11997,27 +13113,30 @@ class RenderTask(model.Model): user_id: Optional[str] = None width: Optional[int] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - created_at: Optional[str] = None, - dashboard_filters: Optional[str] = None, - dashboard_id: Optional[str] = None, - dashboard_style: Optional[str] = None, - finalized_at: Optional[str] = None, - height: Optional[int] = None, - id: Optional[str] = None, - look_id: Optional[str] = None, - lookml_dashboard_id: Optional[str] = None, - query_id: Optional[str] = None, - dashboard_element_id: Optional[str] = None, - query_runtime: Optional[float] = None, - render_runtime: Optional[float] = None, - result_format: Optional[str] = None, - runtime: Optional[float] = None, - status: Optional[str] = None, - status_detail: Optional[str] = None, - user_id: Optional[str] = None, - width: Optional[int] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + created_at: Optional[str] = None, + dashboard_filters: Optional[str] = None, + dashboard_id: Optional[str] = None, + dashboard_style: Optional[str] = None, + finalized_at: Optional[str] = None, + height: Optional[int] = None, + id: Optional[str] = None, + look_id: Optional[str] = None, + lookml_dashboard_id: Optional[str] = None, + query_id: Optional[str] = None, + dashboard_element_id: Optional[str] = None, + query_runtime: Optional[float] = None, + render_runtime: Optional[float] = None, + result_format: Optional[str] = None, + runtime: Optional[float] = None, + status: Optional[str] = None, + status_detail: Optional[str] = None, + user_id: Optional[str] = None, + width: Optional[int] = None + ): self.can = can self.created_at = created_at self.dashboard_filters = dashboard_filters @@ -12064,6 +13183,7 @@ class Report(model.Model): deleter_user_name: Name of User that deleted the Report. schedule_count: Count of schedules on the report. """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None title: Optional[str] = None @@ -12084,26 +13204,29 @@ class Report(model.Model): deleter_user_name: Optional[str] = None schedule_count: Optional[int] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - title: Optional[str] = None, - user_id: Optional[str] = None, - created_at: Optional[datetime.datetime] = None, - updated_at: Optional[datetime.datetime] = None, - last_viewed_at: Optional[datetime.datetime] = None, - favorite: Optional[bool] = None, - favorite_count: Optional[int] = None, - view_count: Optional[int] = None, - folder: Optional["FolderBase"] = None, - folder_id: Optional[str] = None, - url: Optional[str] = None, - user_name: Optional[str] = None, - deleted_at: Optional[datetime.datetime] = None, - last_accessed_at: Optional[datetime.datetime] = None, - deleter_user_id: Optional[str] = None, - deleter_user_name: Optional[str] = None, - schedule_count: Optional[int] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + title: Optional[str] = None, + user_id: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + updated_at: Optional[datetime.datetime] = None, + last_viewed_at: Optional[datetime.datetime] = None, + favorite: Optional[bool] = None, + favorite_count: Optional[int] = None, + view_count: Optional[int] = None, + folder: Optional["FolderBase"] = None, + folder_id: Optional[str] = None, + url: Optional[str] = None, + user_name: Optional[str] = None, + deleted_at: Optional[datetime.datetime] = None, + last_accessed_at: Optional[datetime.datetime] = None, + deleter_user_id: Optional[str] = None, + deleter_user_name: Optional[str] = None, + schedule_count: Optional[int] = None + ): self.can = can self.id = id self.title = title @@ -12138,6 +13261,7 @@ class RepositoryCredential(model.Model): ssh_public_key: Public deploy key for SSH authentication. is_configured: Whether the credentials have been configured for the Git Repository. """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None root_project_id: Optional[str] = None @@ -12147,15 +13271,18 @@ class RepositoryCredential(model.Model): ssh_public_key: Optional[str] = None is_configured: Optional[bool] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - root_project_id: Optional[str] = None, - remote_url: Optional[str] = None, - git_username: Optional[str] = None, - git_password: Optional[str] = None, - ssh_public_key: Optional[str] = None, - is_configured: Optional[bool] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + root_project_id: Optional[str] = None, + remote_url: Optional[str] = None, + git_username: Optional[str] = None, + git_password: Optional[str] = None, + ssh_public_key: Optional[str] = None, + is_configured: Optional[bool] = None + ): self.can = can self.id = id self.root_project_id = root_project_id @@ -12171,6 +13298,7 @@ class ResultFormat(enum.Enum): Desired async query result format. Valid values are: "inline_json", "json", "json_detail", "json_fe", "json_bi", "csv", "html", "md", "txt", "xlsx", "gsxml", "sql", "odc". (Enum defined in CreateQueryTask) """ + inline_json = "inline_json" json = "json" json_detail = "json_detail" @@ -12200,16 +13328,20 @@ class ResultMakerFilterables(model.Model): name: The name of the filterable thing (Query or Merged Results). listen: array of dashboard_filter_name: and field: objects. """ + model: Optional[str] = None view: Optional[str] = None name: Optional[str] = None listen: Optional[Sequence["ResultMakerFilterablesListen"]] = None - def __init__(self, *, - model: Optional[str] = None, - view: Optional[str] = None, - name: Optional[str] = None, - listen: Optional[Sequence["ResultMakerFilterablesListen"]] = None): + def __init__( + self, + *, + model: Optional[str] = None, + view: Optional[str] = None, + name: Optional[str] = None, + listen: Optional[Sequence["ResultMakerFilterablesListen"]] = None + ): self.model = model self.view = view self.name = name @@ -12223,12 +13355,16 @@ class ResultMakerFilterablesListen(model.Model): dashboard_filter_name: The name of a dashboard filter to listen to. field: The name of the field in the filterable to filter with the value of the dashboard filter. """ + dashboard_filter_name: Optional[str] = None field: Optional[str] = None - def __init__(self, *, - dashboard_filter_name: Optional[str] = None, - field: Optional[str] = None): + def __init__( + self, + *, + dashboard_filter_name: Optional[str] = None, + field: Optional[str] = None + ): self.dashboard_filter_name = dashboard_filter_name self.field = field @@ -12248,6 +13384,7 @@ class ResultMakerWithIdVisConfigAndDynamicFields(model.Model): query: vis_config: Vis config of the constituent Query, or Merge Query. """ + id: Optional[str] = None dynamic_fields: Optional[str] = None filterables: Optional[Sequence["ResultMakerFilterables"]] = None @@ -12259,17 +13396,20 @@ class ResultMakerWithIdVisConfigAndDynamicFields(model.Model): query: Optional["Query"] = None vis_config: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - id: Optional[str] = None, - dynamic_fields: Optional[str] = None, - filterables: Optional[Sequence["ResultMakerFilterables"]] = None, - sorts: Optional[Sequence[str]] = None, - merge_result_id: Optional[str] = None, - total: Optional[bool] = None, - query_id: Optional[str] = None, - sql_query_id: Optional[str] = None, - query: Optional["Query"] = None, - vis_config: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + id: Optional[str] = None, + dynamic_fields: Optional[str] = None, + filterables: Optional[Sequence["ResultMakerFilterables"]] = None, + sorts: Optional[Sequence[str]] = None, + merge_result_id: Optional[str] = None, + total: Optional[bool] = None, + query_id: Optional[str] = None, + sql_query_id: Optional[str] = None, + query: Optional["Query"] = None, + vis_config: Optional[MutableMapping[str, Any]] = None + ): self.id = id self.dynamic_fields = dynamic_fields self.filterables = filterables @@ -12297,6 +13437,7 @@ class Role(model.Model): url: Link to get this item users_url: Link to get list of users with this role """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -12308,17 +13449,20 @@ class Role(model.Model): url: Optional[str] = None users_url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - name: Optional[str] = None, - permission_set: Optional["PermissionSet"] = None, - permission_set_id: Optional[str] = None, - model_set: Optional["ModelSet"] = None, - model_set_id: Optional[str] = None, - internal: Optional[bool] = None, - url: Optional[str] = None, - users_url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + name: Optional[str] = None, + permission_set: Optional["PermissionSet"] = None, + permission_set_id: Optional[str] = None, + model_set: Optional["ModelSet"] = None, + model_set_id: Optional[str] = None, + internal: Optional[bool] = None, + url: Optional[str] = None, + users_url: Optional[str] = None + ): self.can = can self.id = id self.name = name @@ -12347,6 +13491,7 @@ class RoleSearch(model.Model): url: Link to get this item users_url: Link to get list of users with this role """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None name: Optional[str] = None @@ -12359,18 +13504,21 @@ class RoleSearch(model.Model): url: Optional[str] = None users_url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - name: Optional[str] = None, - permission_set: Optional["PermissionSet"] = None, - permission_set_id: Optional[str] = None, - model_set: Optional["ModelSet"] = None, - model_set_id: Optional[str] = None, - internal: Optional[bool] = None, - user_count: Optional[int] = None, - url: Optional[str] = None, - users_url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + name: Optional[str] = None, + permission_set: Optional["PermissionSet"] = None, + permission_set_id: Optional[str] = None, + model_set: Optional["ModelSet"] = None, + model_set_id: Optional[str] = None, + internal: Optional[bool] = None, + user_count: Optional[int] = None, + url: Optional[str] = None, + users_url: Optional[str] = None + ): self.can = can self.id = id self.name = name @@ -12405,6 +13553,7 @@ class Run(model.Model): suite_id: ID of the CI suite username: Username of the user who triggered the CI run, if the CI run was manually triggered """ + run_id: Optional[str] = None created_at: Optional[datetime.datetime] = None started_at: Optional[datetime.datetime] = None @@ -12422,23 +13571,26 @@ class Run(model.Model): suite_id: Optional[str] = None username: Optional[str] = None - def __init__(self, *, - run_id: Optional[str] = None, - created_at: Optional[datetime.datetime] = None, - started_at: Optional[datetime.datetime] = None, - finished_at: Optional[datetime.datetime] = None, - status_url: Optional[str] = None, - status: Optional[str] = None, - git_service: Optional[str] = None, - git_state: Optional["CIGitState"] = None, - result: Optional["RunResult"] = None, - schedule: Optional["CIScheduleTrigger"] = None, - target_branch: Optional[str] = None, - title: Optional[str] = None, - trigger: Optional[str] = None, - change_request: Optional["CIChangeRequest"] = None, - suite_id: Optional[str] = None, - username: Optional[str] = None): + def __init__( + self, + *, + run_id: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + started_at: Optional[datetime.datetime] = None, + finished_at: Optional[datetime.datetime] = None, + status_url: Optional[str] = None, + status: Optional[str] = None, + git_service: Optional[str] = None, + git_state: Optional["CIGitState"] = None, + result: Optional["RunResult"] = None, + schedule: Optional["CIScheduleTrigger"] = None, + target_branch: Optional[str] = None, + title: Optional[str] = None, + trigger: Optional[str] = None, + change_request: Optional["CIChangeRequest"] = None, + suite_id: Optional[str] = None, + username: Optional[str] = None + ): self.run_id = run_id self.created_at = created_at self.started_at = started_at @@ -12484,6 +13636,7 @@ class RunningQueries(model.Model): sql: SQL text of the query as run sql_interface_sql: SQL text of the SQL Interface query as run """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None user: Optional["UserPublic"] = None @@ -12507,29 +13660,32 @@ class RunningQueries(model.Model): sql: Optional[str] = None sql_interface_sql: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - user: Optional["UserPublic"] = None, - query: Optional["Query"] = None, - sql_query: Optional["SqlQuery"] = None, - look: Optional["LookBasic"] = None, - created_at: Optional[str] = None, - completed_at: Optional[str] = None, - query_id: Optional[str] = None, - source: Optional[str] = None, - node_id: Optional[str] = None, - slug: Optional[str] = None, - query_task_id: Optional[str] = None, - cache_key: Optional[str] = None, - connection_name: Optional[str] = None, - dialect: Optional[str] = None, - connection_id: Optional[str] = None, - message: Optional[str] = None, - status: Optional[str] = None, - runtime: Optional[float] = None, - sql: Optional[str] = None, - sql_interface_sql: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + user: Optional["UserPublic"] = None, + query: Optional["Query"] = None, + sql_query: Optional["SqlQuery"] = None, + look: Optional["LookBasic"] = None, + created_at: Optional[str] = None, + completed_at: Optional[str] = None, + query_id: Optional[str] = None, + source: Optional[str] = None, + node_id: Optional[str] = None, + slug: Optional[str] = None, + query_task_id: Optional[str] = None, + cache_key: Optional[str] = None, + connection_name: Optional[str] = None, + dialect: Optional[str] = None, + connection_id: Optional[str] = None, + message: Optional[str] = None, + status: Optional[str] = None, + runtime: Optional[float] = None, + sql: Optional[str] = None, + sql_interface_sql: Optional[str] = None + ): self.can = can self.id = id self.user = user @@ -12568,6 +13724,7 @@ class RunResult(model.Model): lookml_error: generic_error: """ + sql_result: Optional["SqlValidatorResult"] = None sql_error: Optional["GenericError"] = None assert_result: Optional["AssertValidatorResult"] = None @@ -12578,16 +13735,19 @@ class RunResult(model.Model): lookml_error: Optional["GenericError"] = None generic_error: Optional["GenericError"] = None - def __init__(self, *, - sql_result: Optional["SqlValidatorResult"] = None, - sql_error: Optional["GenericError"] = None, - assert_result: Optional["AssertValidatorResult"] = None, - assert_error: Optional["GenericError"] = None, - content_result: Optional["ContentValidatorResult"] = None, - content_error: Optional["GenericError"] = None, - lookml_result: Optional["LookMLValidatorResult"] = None, - lookml_error: Optional["GenericError"] = None, - generic_error: Optional["GenericError"] = None): + def __init__( + self, + *, + sql_result: Optional["SqlValidatorResult"] = None, + sql_error: Optional["GenericError"] = None, + assert_result: Optional["AssertValidatorResult"] = None, + assert_error: Optional["GenericError"] = None, + content_result: Optional["ContentValidatorResult"] = None, + content_error: Optional["GenericError"] = None, + lookml_result: Optional["LookMLValidatorResult"] = None, + lookml_error: Optional["GenericError"] = None, + generic_error: Optional["GenericError"] = None + ): self.sql_result = sql_result self.sql_error = sql_error self.assert_result = assert_result @@ -12639,6 +13799,7 @@ class SamlConfig(model.Model): allow_direct_roles: Allows roles to be directly assigned to SAML auth'd users. url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None enabled: Optional[bool] = None idp_cert: Optional[str] = None @@ -12675,42 +13836,45 @@ class SamlConfig(model.Model): allow_direct_roles: Optional[bool] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - enabled: Optional[bool] = None, - idp_cert: Optional[str] = None, - idp_cert_multi: Optional["SamlIdpCertMulti"] = None, - multi_certs_supported: Optional[bool] = None, - idp_url: Optional[str] = None, - idp_issuer: Optional[str] = None, - idp_audience: Optional[str] = None, - allowed_clock_drift: Optional[int] = None, - user_attribute_map_email: Optional[str] = None, - user_attribute_map_first_name: Optional[str] = None, - user_attribute_map_last_name: Optional[str] = None, - new_user_migration_types: Optional[str] = None, - alternate_email_login_allowed: Optional[bool] = None, - test_slug: Optional[str] = None, - modified_at: Optional[str] = None, - modified_by: Optional[str] = None, - default_new_user_roles: Optional[Sequence["Role"]] = None, - default_new_user_groups: Optional[Sequence["Group"]] = None, - default_new_user_role_ids: Optional[Sequence[str]] = None, - default_new_user_group_ids: Optional[Sequence[str]] = None, - set_roles_from_groups: Optional[bool] = None, - groups_attribute: Optional[str] = None, - groups: Optional[Sequence["SamlGroupRead"]] = None, - groups_with_role_ids: Optional[Sequence["SamlGroupWrite"]] = None, - auth_requires_role: Optional[bool] = None, - user_attributes: Optional[Sequence["SamlUserAttributeRead"]] = None, - user_attributes_with_ids: Optional[Sequence["SamlUserAttributeWrite"]] = None, - groups_finder_type: Optional[str] = None, - groups_member_value: Optional[str] = None, - bypass_login_page: Optional[bool] = None, - allow_normal_group_membership: Optional[bool] = None, - allow_roles_from_normal_groups: Optional[bool] = None, - allow_direct_roles: Optional[bool] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + enabled: Optional[bool] = None, + idp_cert: Optional[str] = None, + idp_cert_multi: Optional["SamlIdpCertMulti"] = None, + multi_certs_supported: Optional[bool] = None, + idp_url: Optional[str] = None, + idp_issuer: Optional[str] = None, + idp_audience: Optional[str] = None, + allowed_clock_drift: Optional[int] = None, + user_attribute_map_email: Optional[str] = None, + user_attribute_map_first_name: Optional[str] = None, + user_attribute_map_last_name: Optional[str] = None, + new_user_migration_types: Optional[str] = None, + alternate_email_login_allowed: Optional[bool] = None, + test_slug: Optional[str] = None, + modified_at: Optional[str] = None, + modified_by: Optional[str] = None, + default_new_user_roles: Optional[Sequence["Role"]] = None, + default_new_user_groups: Optional[Sequence["Group"]] = None, + default_new_user_role_ids: Optional[Sequence[str]] = None, + default_new_user_group_ids: Optional[Sequence[str]] = None, + set_roles_from_groups: Optional[bool] = None, + groups_attribute: Optional[str] = None, + groups: Optional[Sequence["SamlGroupRead"]] = None, + groups_with_role_ids: Optional[Sequence["SamlGroupWrite"]] = None, + auth_requires_role: Optional[bool] = None, + user_attributes: Optional[Sequence["SamlUserAttributeRead"]] = None, + user_attributes_with_ids: Optional[Sequence["SamlUserAttributeWrite"]] = None, + groups_finder_type: Optional[str] = None, + groups_member_value: Optional[str] = None, + bypass_login_page: Optional[bool] = None, + allow_normal_group_membership: Optional[bool] = None, + allow_roles_from_normal_groups: Optional[bool] = None, + allow_direct_roles: Optional[bool] = None, + url: Optional[str] = None + ): self.can = can self.enabled = enabled self.idp_cert = idp_cert @@ -12759,6 +13923,7 @@ class SamlGroupRead(model.Model): roles: Looker Roles url: Link to saml config """ + id: Optional[str] = None looker_group_id: Optional[str] = None looker_group_name: Optional[str] = None @@ -12766,13 +13931,16 @@ class SamlGroupRead(model.Model): roles: Optional[Sequence["Role"]] = None url: Optional[str] = None - def __init__(self, *, - id: Optional[str] = None, - looker_group_id: Optional[str] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - roles: Optional[Sequence["Role"]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + id: Optional[str] = None, + looker_group_id: Optional[str] = None, + looker_group_name: Optional[str] = None, + name: Optional[str] = None, + roles: Optional[Sequence["Role"]] = None, + url: Optional[str] = None + ): self.id = id self.looker_group_id = looker_group_id self.looker_group_name = looker_group_name @@ -12792,6 +13960,7 @@ class SamlGroupWrite(model.Model): role_ids: Looker Role Ids url: Link to saml config """ + id: Optional[str] = None looker_group_id: Optional[str] = None looker_group_name: Optional[str] = None @@ -12799,13 +13968,16 @@ class SamlGroupWrite(model.Model): role_ids: Optional[Sequence[str]] = None url: Optional[str] = None - def __init__(self, *, - id: Optional[str] = None, - looker_group_id: Optional[str] = None, - looker_group_name: Optional[str] = None, - name: Optional[str] = None, - role_ids: Optional[Sequence[str]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + id: Optional[str] = None, + looker_group_id: Optional[str] = None, + looker_group_name: Optional[str] = None, + name: Optional[str] = None, + role_ids: Optional[Sequence[str]] = None, + url: Optional[str] = None + ): self.id = id self.looker_group_id = looker_group_id self.looker_group_name = looker_group_name @@ -12820,10 +13992,10 @@ class SamlIdpCertMulti(model.Model): Attributes: signing: List of signing certificates. Values should be without pre-encapsulation and post-encapsulation boundaries """ + signing: Optional[Sequence[str]] = None - def __init__(self, *, - signing: Optional[Sequence[str]] = None): + def __init__(self, *, signing: Optional[Sequence[str]] = None): self.signing = signing @@ -12837,18 +14009,22 @@ class SamlMetadataParseResult(model.Model): idp_cert: Identify Provider Certificate idp_cert_multi: """ + can: Optional[MutableMapping[str, bool]] = None idp_issuer: Optional[str] = None idp_url: Optional[str] = None idp_cert: Optional[str] = None idp_cert_multi: Optional["SamlIdpCertMulti"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - idp_issuer: Optional[str] = None, - idp_url: Optional[str] = None, - idp_cert: Optional[str] = None, - idp_cert_multi: Optional["SamlIdpCertMulti"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + idp_issuer: Optional[str] = None, + idp_url: Optional[str] = None, + idp_cert: Optional[str] = None, + idp_cert_multi: Optional["SamlIdpCertMulti"] = None + ): self.can = can self.idp_issuer = idp_issuer self.idp_url = idp_url @@ -12865,16 +14041,20 @@ class SamlUserAttributeRead(model.Model): user_attributes: Looker User Attributes url: Link to saml config """ + name: Optional[str] = None required: Optional[bool] = None user_attributes: Optional[Sequence["UserAttribute"]] = None url: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - required: Optional[bool] = None, - user_attributes: Optional[Sequence["UserAttribute"]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + required: Optional[bool] = None, + user_attributes: Optional[Sequence["UserAttribute"]] = None, + url: Optional[str] = None + ): self.name = name self.required = required self.user_attributes = user_attributes @@ -12890,16 +14070,20 @@ class SamlUserAttributeWrite(model.Model): user_attribute_ids: Looker User Attribute Ids url: Link to saml config """ + name: Optional[str] = None required: Optional[bool] = None user_attribute_ids: Optional[Sequence[str]] = None url: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - required: Optional[bool] = None, - user_attribute_ids: Optional[Sequence[str]] = None, - url: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + required: Optional[bool] = None, + user_attribute_ids: Optional[Sequence[str]] = None, + url: Optional[str] = None + ): self.name = name self.required = required self.user_attribute_ids = user_attribute_ids @@ -12929,6 +14113,7 @@ class ScheduledPlan(model.Model): scheduled_plan_destination: Scheduled plan destinations run_once: Whether the plan in question should only be run once (usually for testing) include_links: Whether links back to Looker should be included in this ScheduledPlan + include_dashboard_summary: Whether to include a dashboard summary in the scheduled email custom_url_base: Custom url domain for the scheduled entity custom_url_params: Custom url path and parameters for the scheduled entity custom_url_label: Custom url label for the scheduled entity @@ -12951,6 +14136,7 @@ class ScheduledPlan(model.Model): last_run_at: When the ScheduledPlan was last run can: Operations the current user is able to perform on this object """ + name: Optional[str] = None user_id: Optional[str] = None run_as_recipient: Optional[bool] = None @@ -12970,6 +14156,7 @@ class ScheduledPlan(model.Model): scheduled_plan_destination: Optional[Sequence["ScheduledPlanDestination"]] = None run_once: Optional[bool] = None include_links: Optional[bool] = None + include_dashboard_summary: Optional[bool] = None custom_url_base: Optional[str] = None custom_url_params: Optional[str] = None custom_url_label: Optional[str] = None @@ -12992,47 +14179,53 @@ class ScheduledPlan(model.Model): last_run_at: Optional[datetime.datetime] = None can: Optional[MutableMapping[str, bool]] = None - def __init__(self, *, - name: Optional[str] = None, - user_id: Optional[str] = None, - run_as_recipient: Optional[bool] = None, - enabled: Optional[bool] = None, - look_id: Optional[str] = None, - dashboard_id: Optional[str] = None, - lookml_dashboard_id: Optional[str] = None, - filters_string: Optional[str] = None, - dashboard_filters: Optional[str] = None, - require_results: Optional[bool] = None, - require_no_results: Optional[bool] = None, - require_change: Optional[bool] = None, - send_all_results: Optional[bool] = None, - crontab: Optional[str] = None, - datagroup: Optional[str] = None, - timezone: Optional[str] = None, - scheduled_plan_destination: Optional[Sequence["ScheduledPlanDestination"]] = None, - run_once: Optional[bool] = None, - include_links: Optional[bool] = None, - custom_url_base: Optional[str] = None, - custom_url_params: Optional[str] = None, - custom_url_label: Optional[str] = None, - show_custom_url: Optional[bool] = None, - pdf_paper_size: Optional[str] = None, - pdf_landscape: Optional[bool] = None, - embed: Optional[bool] = None, - color_theme: Optional[str] = None, - long_tables: Optional[bool] = None, - pdf_page_breaks: Optional[bool] = None, - tab_ids: Optional[Sequence[str]] = None, - inline_table_width: Optional[int] = None, - query_id: Optional[str] = None, - id: Optional[str] = None, - created_at: Optional[datetime.datetime] = None, - updated_at: Optional[datetime.datetime] = None, - title: Optional[str] = None, - user: Optional["UserPublic"] = None, - next_run_at: Optional[datetime.datetime] = None, - last_run_at: Optional[datetime.datetime] = None, - can: Optional[MutableMapping[str, bool]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + user_id: Optional[str] = None, + run_as_recipient: Optional[bool] = None, + enabled: Optional[bool] = None, + look_id: Optional[str] = None, + dashboard_id: Optional[str] = None, + lookml_dashboard_id: Optional[str] = None, + filters_string: Optional[str] = None, + dashboard_filters: Optional[str] = None, + require_results: Optional[bool] = None, + require_no_results: Optional[bool] = None, + require_change: Optional[bool] = None, + send_all_results: Optional[bool] = None, + crontab: Optional[str] = None, + datagroup: Optional[str] = None, + timezone: Optional[str] = None, + scheduled_plan_destination: Optional[ + Sequence["ScheduledPlanDestination"] + ] = None, + run_once: Optional[bool] = None, + include_links: Optional[bool] = None, + include_dashboard_summary: Optional[bool] = None, + custom_url_base: Optional[str] = None, + custom_url_params: Optional[str] = None, + custom_url_label: Optional[str] = None, + show_custom_url: Optional[bool] = None, + pdf_paper_size: Optional[str] = None, + pdf_landscape: Optional[bool] = None, + embed: Optional[bool] = None, + color_theme: Optional[str] = None, + long_tables: Optional[bool] = None, + pdf_page_breaks: Optional[bool] = None, + tab_ids: Optional[Sequence[str]] = None, + inline_table_width: Optional[int] = None, + query_id: Optional[str] = None, + id: Optional[str] = None, + created_at: Optional[datetime.datetime] = None, + updated_at: Optional[datetime.datetime] = None, + title: Optional[str] = None, + user: Optional["UserPublic"] = None, + next_run_at: Optional[datetime.datetime] = None, + last_run_at: Optional[datetime.datetime] = None, + can: Optional[MutableMapping[str, bool]] = None + ): self.name = name self.user_id = user_id self.run_as_recipient = run_as_recipient @@ -13052,6 +14245,7 @@ def __init__(self, *, self.scheduled_plan_destination = scheduled_plan_destination self.run_once = run_once self.include_links = include_links + self.include_dashboard_summary = include_dashboard_summary self.custom_url_base = custom_url_base self.custom_url_params = custom_url_params self.custom_url_label = custom_url_label @@ -13084,13 +14278,14 @@ class ScheduledPlanDestination(model.Model): format: The data format to send to the given destination. Supported formats vary by destination, but include: "txt", "csv", "inline_json", "json", "json_detail", "xlsx", "html", "wysiwyg_pdf", "assembled_pdf", "wysiwyg_png" apply_formatting: Are values formatted? (containing currency symbols, digit separators, etc. apply_vis: Whether visualization options are applied to the results. - address: Address for recipient. For email e.g. 'user@example.com'. For webhooks e.g. 'https://domain/path'. For Amazon S3 e.g. 's3://bucket-name/path/'. For SFTP e.g. 'sftp://host-name/path/'. + address: Address for recipient. For email e.g. 'user@example.com'. For webhooks e.g. 'https://domain/path'. For Amazon S3 e.g. 's3://bucket-name/path/'. For SFTP e.g. 'sftp://host-name/path/'. looker_recipient: Whether the recipient is a Looker user on the current instance (only applicable for email recipients) type: Type of the address ('email', 'webhook', 's3', or 'sftp') parameters: JSON object containing parameters for external scheduling. For Amazon S3, this requires keys and values for access_key_id and region. For SFTP, this requires a key and value for username. secret_parameters: (Write-Only) JSON object containing secret parameters for external scheduling. For Amazon S3, this requires a key and value for secret_access_key. For SFTP, this requires a key and value for password. message: Optional message to be included in scheduled emails """ + id: Optional[str] = None scheduled_plan_id: Optional[str] = None format: Optional[str] = None @@ -13103,18 +14298,21 @@ class ScheduledPlanDestination(model.Model): secret_parameters: Optional[str] = None message: Optional[str] = None - def __init__(self, *, - id: Optional[str] = None, - scheduled_plan_id: Optional[str] = None, - format: Optional[str] = None, - apply_formatting: Optional[bool] = None, - apply_vis: Optional[bool] = None, - address: Optional[str] = None, - looker_recipient: Optional[bool] = None, - type: Optional[str] = None, - parameters: Optional[str] = None, - secret_parameters: Optional[str] = None, - message: Optional[str] = None): + def __init__( + self, + *, + id: Optional[str] = None, + scheduled_plan_id: Optional[str] = None, + format: Optional[str] = None, + apply_formatting: Optional[bool] = None, + apply_vis: Optional[bool] = None, + address: Optional[str] = None, + looker_recipient: Optional[bool] = None, + type: Optional[str] = None, + parameters: Optional[str] = None, + secret_parameters: Optional[str] = None, + message: Optional[str] = None + ): self.id = id self.scheduled_plan_id = scheduled_plan_id self.format = format @@ -13135,12 +14333,13 @@ class Schema(model.Model): name: Schema name is_default: True if this is the default schema """ + name: Optional[str] = None is_default: Optional[bool] = None - def __init__(self, *, - name: Optional[str] = None, - is_default: Optional[bool] = None): + def __init__( + self, *, name: Optional[str] = None, is_default: Optional[bool] = None + ): self.name = name self.is_default = is_default @@ -13159,6 +14358,7 @@ class SchemaColumn(model.Model): column_size: Column data size snippets: SQL Runner snippets for this connection """ + name: Optional[str] = None sql_escaped_name: Optional[str] = None schema_name: Optional[str] = None @@ -13169,16 +14369,19 @@ class SchemaColumn(model.Model): column_size: Optional[int] = None snippets: Optional[Sequence["Snippet"]] = None - def __init__(self, *, - name: Optional[str] = None, - sql_escaped_name: Optional[str] = None, - schema_name: Optional[str] = None, - data_type_database: Optional[str] = None, - data_type: Optional[str] = None, - data_type_looker: Optional[str] = None, - description: Optional[str] = None, - column_size: Optional[int] = None, - snippets: Optional[Sequence["Snippet"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + sql_escaped_name: Optional[str] = None, + schema_name: Optional[str] = None, + data_type_database: Optional[str] = None, + data_type: Optional[str] = None, + data_type_looker: Optional[str] = None, + description: Optional[str] = None, + column_size: Optional[int] = None, + snippets: Optional[Sequence["Snippet"]] = None + ): self.name = name self.sql_escaped_name = sql_escaped_name self.schema_name = schema_name @@ -13199,16 +14402,20 @@ class SchemaColumns(model.Model): schema_name: Name of schema columns: Columns for this schema """ + name: Optional[str] = None sql_escaped_name: Optional[str] = None schema_name: Optional[str] = None columns: Optional[Sequence["SchemaColumn"]] = None - def __init__(self, *, - name: Optional[str] = None, - sql_escaped_name: Optional[str] = None, - schema_name: Optional[str] = None, - columns: Optional[Sequence["SchemaColumn"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + sql_escaped_name: Optional[str] = None, + schema_name: Optional[str] = None, + columns: Optional[Sequence["SchemaColumn"]] = None + ): self.name = name self.sql_escaped_name = sql_escaped_name self.schema_name = schema_name @@ -13222,12 +14429,16 @@ class SchemaMessage(model.Model): query: result: """ + query: Optional["SchemaQuery"] = None result: Optional["SchemaResult"] = None - def __init__(self, *, - query: Optional["SchemaQuery"] = None, - result: Optional["SchemaResult"] = None): + def __init__( + self, + *, + query: Optional["SchemaQuery"] = None, + result: Optional["SchemaResult"] = None + ): self.query = query self.result = result @@ -13238,10 +14449,10 @@ class SchemaQuery(model.Model): Attributes: question: The question for schema resolution. """ + question: Optional[str] = None - def __init__(self, *, - question: Optional[str] = None): + def __init__(self, *, question: Optional[str] = None): self.question = question @@ -13251,10 +14462,10 @@ class SchemaResult(model.Model): Attributes: datasources: The datasources used to resolve the schema query. """ + datasources: Optional[Sequence["Datasource"]] = None - def __init__(self, *, - datasources: Optional[Sequence["Datasource"]] = None): + def __init__(self, *, datasources: Optional[Sequence["Datasource"]] = None): self.datasources = datasources @@ -13269,6 +14480,7 @@ class SchemaTable(model.Model): external: External reference??? snippets: SQL Runner snippets for connection """ + name: Optional[str] = None sql_escaped_name: Optional[str] = None schema_name: Optional[str] = None @@ -13276,13 +14488,16 @@ class SchemaTable(model.Model): external: Optional[str] = None snippets: Optional[Sequence["Snippet"]] = None - def __init__(self, *, - name: Optional[str] = None, - sql_escaped_name: Optional[str] = None, - schema_name: Optional[str] = None, - rows: Optional[int] = None, - external: Optional[str] = None, - snippets: Optional[Sequence["Snippet"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + sql_escaped_name: Optional[str] = None, + schema_name: Optional[str] = None, + rows: Optional[int] = None, + external: Optional[str] = None, + snippets: Optional[Sequence["Snippet"]] = None + ): self.name = name self.sql_escaped_name = sql_escaped_name self.schema_name = schema_name @@ -13300,16 +14515,20 @@ class SchemaTables(model.Model): tables: Tables for this schema table_limit_hit: True if the table limit was hit while retrieving tables in this schema """ + name: Optional[str] = None is_default: Optional[bool] = None tables: Optional[Sequence["SchemaTable"]] = None table_limit_hit: Optional[bool] = None - def __init__(self, *, - name: Optional[str] = None, - is_default: Optional[bool] = None, - tables: Optional[Sequence["SchemaTable"]] = None, - table_limit_hit: Optional[bool] = None): + def __init__( + self, + *, + name: Optional[str] = None, + is_default: Optional[bool] = None, + tables: Optional[Sequence["SchemaTable"]] = None, + table_limit_hit: Optional[bool] = None + ): self.name = name self.is_default = is_default self.tables = tables @@ -13321,6 +14540,7 @@ class SecretType(enum.Enum): Field to distinguish between SSO secrets and JWT secrets Valid values are: "SSO", "JWT". (Enum defined in EmbedSecret) """ + SSO = "SSO" JWT = "JWT" invalid_api_enum_value = "invalid_api_enum_value" @@ -13337,18 +14557,26 @@ class SelfServiceModelUploadData(model.Model): upload_type: Type of the upload (e.g. 'csv', 'sheet') drive_url: Drive URL owner_id: User ID of the uploaded data owner + canvas_guid: GUID of the visual canvas """ + upload_type: Optional[str] = None drive_url: Optional[str] = None owner_id: Optional[str] = None - - def __init__(self, *, - upload_type: Optional[str] = None, - drive_url: Optional[str] = None, - owner_id: Optional[str] = None): + canvas_guid: Optional[str] = None + + def __init__( + self, + *, + upload_type: Optional[str] = None, + drive_url: Optional[str] = None, + owner_id: Optional[str] = None, + canvas_guid: Optional[str] = None + ): self.upload_type = upload_type self.drive_url = drive_url self.owner_id = owner_id + self.canvas_guid = canvas_guid @attr.s(auto_attribs=True, init=False) @@ -13366,6 +14594,7 @@ class ServiceAccount(model.Model): created_at: Service account creation timestamp url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None service_account_name: Optional[str] = None @@ -13377,17 +14606,20 @@ class ServiceAccount(model.Model): created_at: Optional[datetime.datetime] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - service_account_name: Optional[str] = None, - is_service_account: Optional[bool] = None, - is_disabled: Optional[bool] = None, - group_ids: Optional[Sequence[str]] = None, - role_ids: Optional[Sequence[str]] = None, - credentials_api3: Optional[Sequence["CredentialsApi3"]] = None, - created_at: Optional[datetime.datetime] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + service_account_name: Optional[str] = None, + is_service_account: Optional[bool] = None, + is_disabled: Optional[bool] = None, + group_ids: Optional[Sequence[str]] = None, + role_ids: Optional[Sequence[str]] = None, + credentials_api3: Optional[Sequence["CredentialsApi3"]] = None, + created_at: Optional[datetime.datetime] = None, + url: Optional[str] = None + ): self.can = can self.id = id self.service_account_name = service_account_name @@ -13420,6 +14652,7 @@ class Session(model.Model): expires_at: Time when this session will expire url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None ip_address: Optional[str] = None @@ -13436,22 +14669,25 @@ class Session(model.Model): expires_at: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - ip_address: Optional[str] = None, - browser: Optional[str] = None, - operating_system: Optional[str] = None, - city: Optional[str] = None, - state: Optional[str] = None, - country: Optional[str] = None, - credentials_type: Optional[str] = None, - extended_at: Optional[str] = None, - extended_count: Optional[int] = None, - sudo_user_id: Optional[str] = None, - created_at: Optional[str] = None, - expires_at: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + ip_address: Optional[str] = None, + browser: Optional[str] = None, + operating_system: Optional[str] = None, + city: Optional[str] = None, + state: Optional[str] = None, + country: Optional[str] = None, + credentials_type: Optional[str] = None, + extended_at: Optional[str] = None, + extended_count: Optional[int] = None, + sudo_user_id: Optional[str] = None, + created_at: Optional[str] = None, + expires_at: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.id = id self.ip_address = ip_address @@ -13480,6 +14716,7 @@ class SessionConfig(model.Model): use_inactivity_based_logout: Enforce session logout for sessions that are inactive for 15 minutes. track_session_location: Track location of session when user logs in. """ + can: Optional[MutableMapping[str, bool]] = None allow_persistent_sessions: Optional[bool] = None session_minutes: Optional[int] = None @@ -13487,13 +14724,16 @@ class SessionConfig(model.Model): use_inactivity_based_logout: Optional[bool] = None track_session_location: Optional[bool] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - allow_persistent_sessions: Optional[bool] = None, - session_minutes: Optional[int] = None, - unlimited_sessions_per_user: Optional[bool] = None, - use_inactivity_based_logout: Optional[bool] = None, - track_session_location: Optional[bool] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + allow_persistent_sessions: Optional[bool] = None, + session_minutes: Optional[int] = None, + unlimited_sessions_per_user: Optional[bool] = None, + use_inactivity_based_logout: Optional[bool] = None, + track_session_location: Optional[bool] = None + ): self.can = can self.allow_persistent_sessions = allow_persistent_sessions self.session_minutes = session_minutes @@ -13533,11 +14773,13 @@ class Setting(model.Model): managed_certificate_uri: Array of URIs pointing to the location of a root certificate in Secret Manager content_certification_documentation_link: Link to content certification documentation. revoke_certification_on_edits: Allow content certification to be revoked on edits. + automated_mfa_enabled: Automatically enable Multi-Factor Authentication for users. is_content_certification_enabled: Allow content certification. auto_certify_lookml_content: Allow auto certification of lookml content. - ca_agent_observability: Toggle CA agent observability + ca_agent_observability: Toggle Conversational Analytics Agent Token usage mcp_tools: """ + instance_config: Optional["InstanceConfig"] = None extension_framework_enabled: Optional[bool] = None extension_load_url_enabled: Optional[bool] = None @@ -13565,43 +14807,48 @@ class Setting(model.Model): managed_certificate_uri: Optional[Sequence[str]] = None content_certification_documentation_link: Optional[str] = None revoke_certification_on_edits: Optional[bool] = None + automated_mfa_enabled: Optional[bool] = None is_content_certification_enabled: Optional[bool] = None auto_certify_lookml_content: Optional[bool] = None ca_agent_observability: Optional[bool] = None mcp_tools: Optional["McpTools"] = None - def __init__(self, *, - instance_config: Optional["InstanceConfig"] = None, - extension_framework_enabled: Optional[bool] = None, - extension_load_url_enabled: Optional[bool] = None, - marketplace_auto_install_enabled: Optional[bool] = None, - marketplace_automation: Optional["MarketplaceAutomation"] = None, - marketplace_enabled: Optional[bool] = None, - marketplace_site: Optional[str] = None, - marketplace_terms_accepted: Optional[bool] = None, - privatelabel_configuration: Optional["PrivatelabelConfiguration"] = None, - custom_welcome_email: Optional["CustomWelcomeEmail"] = None, - onboarding_enabled: Optional[bool] = None, - timezone: Optional[str] = None, - allow_user_timezones: Optional[bool] = None, - data_connector_default_enabled: Optional[bool] = None, - host_url: Optional[str] = None, - override_warnings: Optional[bool] = None, - email_domain_allowlist: Optional[Sequence[str]] = None, - embed_cookieless_v2: Optional[bool] = None, - embed_enabled: Optional[bool] = None, - embed_config: Optional["EmbedConfig"] = None, - login_notification_enabled: Optional[bool] = None, - login_notification_text: Optional[str] = None, - dashboard_auto_refresh_restriction: Optional[bool] = None, - dashboard_auto_refresh_minimum_interval: Optional[str] = None, - managed_certificate_uri: Optional[Sequence[str]] = None, - content_certification_documentation_link: Optional[str] = None, - revoke_certification_on_edits: Optional[bool] = None, - is_content_certification_enabled: Optional[bool] = None, - auto_certify_lookml_content: Optional[bool] = None, - ca_agent_observability: Optional[bool] = None, - mcp_tools: Optional["McpTools"] = None): + def __init__( + self, + *, + instance_config: Optional["InstanceConfig"] = None, + extension_framework_enabled: Optional[bool] = None, + extension_load_url_enabled: Optional[bool] = None, + marketplace_auto_install_enabled: Optional[bool] = None, + marketplace_automation: Optional["MarketplaceAutomation"] = None, + marketplace_enabled: Optional[bool] = None, + marketplace_site: Optional[str] = None, + marketplace_terms_accepted: Optional[bool] = None, + privatelabel_configuration: Optional["PrivatelabelConfiguration"] = None, + custom_welcome_email: Optional["CustomWelcomeEmail"] = None, + onboarding_enabled: Optional[bool] = None, + timezone: Optional[str] = None, + allow_user_timezones: Optional[bool] = None, + data_connector_default_enabled: Optional[bool] = None, + host_url: Optional[str] = None, + override_warnings: Optional[bool] = None, + email_domain_allowlist: Optional[Sequence[str]] = None, + embed_cookieless_v2: Optional[bool] = None, + embed_enabled: Optional[bool] = None, + embed_config: Optional["EmbedConfig"] = None, + login_notification_enabled: Optional[bool] = None, + login_notification_text: Optional[str] = None, + dashboard_auto_refresh_restriction: Optional[bool] = None, + dashboard_auto_refresh_minimum_interval: Optional[str] = None, + managed_certificate_uri: Optional[Sequence[str]] = None, + content_certification_documentation_link: Optional[str] = None, + revoke_certification_on_edits: Optional[bool] = None, + automated_mfa_enabled: Optional[bool] = None, + is_content_certification_enabled: Optional[bool] = None, + auto_certify_lookml_content: Optional[bool] = None, + ca_agent_observability: Optional[bool] = None, + mcp_tools: Optional["McpTools"] = None + ): self.instance_config = instance_config self.extension_framework_enabled = extension_framework_enabled self.extension_load_url_enabled = extension_load_url_enabled @@ -13625,10 +14872,15 @@ def __init__(self, *, self.login_notification_enabled = login_notification_enabled self.login_notification_text = login_notification_text self.dashboard_auto_refresh_restriction = dashboard_auto_refresh_restriction - self.dashboard_auto_refresh_minimum_interval = dashboard_auto_refresh_minimum_interval + self.dashboard_auto_refresh_minimum_interval = ( + dashboard_auto_refresh_minimum_interval + ) self.managed_certificate_uri = managed_certificate_uri - self.content_certification_documentation_link = content_certification_documentation_link + self.content_certification_documentation_link = ( + content_certification_documentation_link + ) self.revoke_certification_on_edits = revoke_certification_on_edits + self.automated_mfa_enabled = automated_mfa_enabled self.is_content_certification_enabled = is_content_certification_enabled self.auto_certify_lookml_content = auto_certify_lookml_content self.ca_agent_observability = ca_agent_observability @@ -13643,14 +14895,18 @@ class SmtpNodeStatus(model.Model): message: Error message for node hostname: Host name of node """ + is_valid: Optional[bool] = None message: Optional[str] = None hostname: Optional[str] = None - def __init__(self, *, - is_valid: Optional[bool] = None, - message: Optional[str] = None, - hostname: Optional[str] = None): + def __init__( + self, + *, + is_valid: Optional[bool] = None, + message: Optional[str] = None, + hostname: Optional[str] = None + ): self.is_valid = is_valid self.message = message self.hostname = hostname @@ -13674,6 +14930,7 @@ class SmtpSettings(model.Model): scopes: The OAuth Scopes default_smtp: Whether to enable built-in Looker SMTP """ + address: Optional[str] = None from_: Optional[str] = None user_name: Optional[str] = None @@ -13688,20 +14945,23 @@ class SmtpSettings(model.Model): scopes: Optional[str] = None default_smtp: Optional[bool] = None - def __init__(self, *, - address: Optional[str] = None, - from_: Optional[str] = None, - user_name: Optional[str] = None, - password: Optional[str] = None, - port: Optional[int] = None, - enable_starttls_auto: Optional[bool] = None, - ssl_version: Optional["SslVersion"] = None, - auth_type: Optional[str] = None, - client_id: Optional[str] = None, - client_secret: Optional[str] = None, - token_endpoint: Optional[str] = None, - scopes: Optional[str] = None, - default_smtp: Optional[bool] = None): + def __init__( + self, + *, + address: Optional[str] = None, + from_: Optional[str] = None, + user_name: Optional[str] = None, + password: Optional[str] = None, + port: Optional[int] = None, + enable_starttls_auto: Optional[bool] = None, + ssl_version: Optional["SslVersion"] = None, + auth_type: Optional[str] = None, + client_id: Optional[str] = None, + client_secret: Optional[str] = None, + token_endpoint: Optional[str] = None, + scopes: Optional[str] = None, + default_smtp: Optional[bool] = None + ): self.address = address self.from_ = from_ self.user_name = user_name @@ -13725,14 +14985,18 @@ class SmtpStatus(model.Model): node_count: Total number of nodes in cluster node_status: array of each node's status containing is_valid, message, hostname """ + is_valid: Optional[bool] = None node_count: Optional[int] = None node_status: Optional[Sequence["SmtpNodeStatus"]] = None - def __init__(self, *, - is_valid: Optional[bool] = None, - node_count: Optional[int] = None, - node_status: Optional[Sequence["SmtpNodeStatus"]] = None): + def __init__( + self, + *, + is_valid: Optional[bool] = None, + node_count: Optional[int] = None, + node_status: Optional[Sequence["SmtpNodeStatus"]] = None + ): self.is_valid = is_valid self.node_count = node_count self.node_status = node_status @@ -13746,14 +15010,18 @@ class Snippet(model.Model): label: Label of the snippet sql: SQL text of the snippet """ + name: Optional[str] = None label: Optional[str] = None sql: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - label: Optional[str] = None, - sql: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + label: Optional[str] = None, + sql: Optional[str] = None + ): self.name = name self.label = label self.sql = sql @@ -13766,12 +15034,11 @@ class Source(model.Model): model: Source model explore: Source explore """ + model: Optional[str] = None explore: Optional[str] = None - def __init__(self, *, - model: Optional[str] = None, - explore: Optional[str] = None): + def __init__(self, *, model: Optional[str] = None, explore: Optional[str] = None): self.model = model self.explore = explore @@ -13784,14 +15051,18 @@ class SqlInterfaceQuery(model.Model): can: Operations the current user is able to perform on this object id: Unique Id """ + signature: str can: Optional[MutableMapping[str, bool]] = None id: Optional[int] = None - def __init__(self, *, - signature: str, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[int] = None): + def __init__( + self, + *, + signature: str, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[int] = None + ): self.signature = signature self.can = can self.id = id @@ -13805,14 +15076,18 @@ class SqlInterfaceQueryCreate(model.Model): can: Operations the current user is able to perform on this object jdbc_client: Whether the query should be run for use in a JDBC Client. This changes the formatting of some datetime based values. """ + sql: str can: Optional[MutableMapping[str, bool]] = None jdbc_client: Optional[bool] = None - def __init__(self, *, - sql: str, - can: Optional[MutableMapping[str, bool]] = None, - jdbc_client: Optional[bool] = None): + def __init__( + self, + *, + sql: str, + can: Optional[MutableMapping[str, bool]] = None, + jdbc_client: Optional[bool] = None + ): self.sql = sql self.can = can self.jdbc_client = jdbc_client @@ -13824,10 +15099,10 @@ class SqlInterfaceQueryMetadata(model.Model): Attributes: results: JDBC Metadata to inflate Avatica response classes. """ + results: Optional[str] = None - def __init__(self, *, - results: Optional[str] = None): + def __init__(self, *, results: Optional[str] = None): self.results = results @@ -13850,6 +15125,7 @@ class SqlQuery(model.Model): vis_config: Visualization configuration properties. These properties are typically opaque and differ based on the type of visualization used. There is no specified set of allowed keys. The values can be any type supported by JSON. A "type" key with a string value is often present, and is used by Looker to determine which visualization to present. Visualizations ignore unknown vis_config properties. result_maker_id: ID of the ResultMakerLookup entry. """ + can: Optional[MutableMapping[str, bool]] = None slug: Optional[str] = None last_runtime: Optional[float] = None @@ -13865,21 +15141,24 @@ class SqlQuery(model.Model): vis_config: Optional[MutableMapping[str, Any]] = None result_maker_id: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - slug: Optional[str] = None, - last_runtime: Optional[float] = None, - run_count: Optional[int] = None, - browser_limit: Optional[int] = None, - sql: Optional[str] = None, - last_run_at: Optional[str] = None, - connection: Optional["DBConnectionBase"] = None, - model_name: Optional[str] = None, - creator: Optional["UserPublic"] = None, - explore_url: Optional[str] = None, - plaintext: Optional[bool] = None, - vis_config: Optional[MutableMapping[str, Any]] = None, - result_maker_id: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + slug: Optional[str] = None, + last_runtime: Optional[float] = None, + run_count: Optional[int] = None, + browser_limit: Optional[int] = None, + sql: Optional[str] = None, + last_run_at: Optional[str] = None, + connection: Optional["DBConnectionBase"] = None, + model_name: Optional[str] = None, + creator: Optional["UserPublic"] = None, + explore_url: Optional[str] = None, + plaintext: Optional[bool] = None, + vis_config: Optional[MutableMapping[str, Any]] = None, + result_maker_id: Optional[str] = None + ): self.can = can self.slug = slug self.last_runtime = last_runtime @@ -13906,18 +15185,22 @@ class SqlQueryCreate(model.Model): sql: SQL query vis_config: Visualization configuration properties. These properties are typically opaque and differ based on the type of visualization used. There is no specified set of allowed keys. The values can be any type supported by JSON. A "type" key with a string value is often present, and is used by Looker to determine which visualization to present. Visualizations ignore unknown vis_config properties. """ + connection_name: Optional[str] = None connection_id: Optional[str] = None model_name: Optional[str] = None sql: Optional[str] = None vis_config: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - connection_name: Optional[str] = None, - connection_id: Optional[str] = None, - model_name: Optional[str] = None, - sql: Optional[str] = None, - vis_config: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + connection_name: Optional[str] = None, + connection_id: Optional[str] = None, + model_name: Optional[str] = None, + sql: Optional[str] = None, + vis_config: Optional[MutableMapping[str, Any]] = None + ): self.connection_name = connection_name self.connection_id = connection_id self.model_name = model_name @@ -13942,6 +15225,7 @@ class SqlValidatorError(model.Model): dimension: LookML dimension that caused the error line_number: Line of the error in the LookML file """ + type: Optional[str] = None title: Optional[str] = None detail: Optional[str] = None @@ -13955,19 +15239,22 @@ class SqlValidatorError(model.Model): dimension: Optional[str] = None line_number: Optional[str] = None - def __init__(self, *, - type: Optional[str] = None, - title: Optional[str] = None, - detail: Optional[str] = None, - status: Optional[str] = None, - instance: Optional[str] = None, - model: Optional[str] = None, - explore: Optional[str] = None, - message: Optional[str] = None, - explore_url: Optional[str] = None, - lookml_url: Optional[str] = None, - dimension: Optional[str] = None, - line_number: Optional[str] = None): + def __init__( + self, + *, + type: Optional[str] = None, + title: Optional[str] = None, + detail: Optional[str] = None, + status: Optional[str] = None, + instance: Optional[str] = None, + model: Optional[str] = None, + explore: Optional[str] = None, + message: Optional[str] = None, + explore_url: Optional[str] = None, + lookml_url: Optional[str] = None, + dimension: Optional[str] = None, + line_number: Optional[str] = None + ): self.type = type self.title = title self.detail = detail @@ -13989,12 +15276,16 @@ class SqlValidatorErrorItem(model.Model): sql_error: generic_error: """ + sql_error: Optional["SqlValidatorError"] = None generic_error: Optional["GenericError"] = None - def __init__(self, *, - sql_error: Optional["SqlValidatorError"] = None, - generic_error: Optional["GenericError"] = None): + def __init__( + self, + *, + sql_error: Optional["SqlValidatorError"] = None, + generic_error: Optional["GenericError"] = None + ): self.sql_error = sql_error self.generic_error = generic_error @@ -14008,16 +15299,20 @@ class SqlValidatorResult(model.Model): status: Status of the validation (unknown, failed, passed, skipped, errored, cancelled, queued, running) result: The results of tested Explores """ + name: Optional[str] = None incremental: Optional[bool] = None status: Optional[str] = None result: Optional[Sequence["SqlValidatorTestedExplore"]] = None - def __init__(self, *, - name: Optional[str] = None, - incremental: Optional[bool] = None, - status: Optional[str] = None, - result: Optional[Sequence["SqlValidatorTestedExplore"]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + incremental: Optional[bool] = None, + status: Optional[str] = None, + result: Optional[Sequence["SqlValidatorTestedExplore"]] = None + ): self.name = name self.incremental = incremental self.status = status @@ -14035,6 +15330,7 @@ class SqlValidatorTestedExplore(model.Model): error_count: Total number of failed validations errors: Details of the LookML that failed SQL validation """ + model: Optional[str] = None explore: Optional[str] = None status: Optional[str] = None @@ -14042,13 +15338,16 @@ class SqlValidatorTestedExplore(model.Model): error_count: Optional[int] = None errors: Optional[Sequence["SqlValidatorErrorItem"]] = None - def __init__(self, *, - model: Optional[str] = None, - explore: Optional[str] = None, - status: Optional[str] = None, - skip_reason: Optional[str] = None, - error_count: Optional[int] = None, - errors: Optional[Sequence["SqlValidatorErrorItem"]] = None): + def __init__( + self, + *, + model: Optional[str] = None, + explore: Optional[str] = None, + status: Optional[str] = None, + skip_reason: Optional[str] = None, + error_count: Optional[int] = None, + errors: Optional[Sequence["SqlValidatorErrorItem"]] = None + ): self.model = model self.explore = explore self.status = status @@ -14063,10 +15362,10 @@ class SshPublicKey(model.Model): Attributes: public_key: The SSH public key created for this instance """ + public_key: Optional[str] = None - def __init__(self, *, - public_key: Optional[str] = None): + def __init__(self, *, public_key: Optional[str] = None): self.public_key = public_key @@ -14084,6 +15383,7 @@ class SshServer(model.Model): public_key: The SSH public key created for this instance status: The current connection status to this SSH Server """ + ssh_server_id: Optional[str] = None ssh_server_name: Optional[str] = None ssh_server_host: Optional[str] = None @@ -14094,16 +15394,19 @@ class SshServer(model.Model): public_key: Optional[str] = None status: Optional[str] = None - def __init__(self, *, - ssh_server_id: Optional[str] = None, - ssh_server_name: Optional[str] = None, - ssh_server_host: Optional[str] = None, - ssh_server_port: Optional[int] = None, - ssh_server_user: Optional[str] = None, - finger_print: Optional[str] = None, - sha_finger_print: Optional[str] = None, - public_key: Optional[str] = None, - status: Optional[str] = None): + def __init__( + self, + *, + ssh_server_id: Optional[str] = None, + ssh_server_name: Optional[str] = None, + ssh_server_host: Optional[str] = None, + ssh_server_port: Optional[int] = None, + ssh_server_user: Optional[str] = None, + finger_print: Optional[str] = None, + sha_finger_print: Optional[str] = None, + public_key: Optional[str] = None, + status: Optional[str] = None + ): self.ssh_server_id = ssh_server_id self.ssh_server_name = ssh_server_name self.ssh_server_host = ssh_server_host @@ -14131,6 +15434,7 @@ class SshTunnel(model.Model): database_port: Port that the Database Server is listening on status: Current connection status for this Tunnel """ + tunnel_id: Optional[str] = None ssh_server_id: Optional[str] = None ssh_server_name: Optional[str] = None @@ -14143,18 +15447,21 @@ class SshTunnel(model.Model): database_port: Optional[int] = None status: Optional[str] = None - def __init__(self, *, - tunnel_id: Optional[str] = None, - ssh_server_id: Optional[str] = None, - ssh_server_name: Optional[str] = None, - ssh_server_host: Optional[str] = None, - ssh_server_port: Optional[int] = None, - ssh_server_user: Optional[str] = None, - last_attempt: Optional[str] = None, - local_host_port: Optional[int] = None, - database_host: Optional[str] = None, - database_port: Optional[int] = None, - status: Optional[str] = None): + def __init__( + self, + *, + tunnel_id: Optional[str] = None, + ssh_server_id: Optional[str] = None, + ssh_server_name: Optional[str] = None, + ssh_server_host: Optional[str] = None, + ssh_server_port: Optional[int] = None, + ssh_server_user: Optional[str] = None, + last_attempt: Optional[str] = None, + local_host_port: Optional[int] = None, + database_host: Optional[str] = None, + database_port: Optional[int] = None, + status: Optional[str] = None + ): self.tunnel_id = tunnel_id self.ssh_server_id = ssh_server_id self.ssh_server_name = ssh_server_name @@ -14173,6 +15480,7 @@ class SslVersion(enum.Enum): TLS version selected Valid values are: "TLSv1_1", "SSLv23", "TLSv1_2". (Enum defined in SmtpSettings) """ + TLSv1_1 = "TLSv1_1" SSLv23 = "SSLv23" TLSv1_2 = "TLSv1_2" @@ -14190,12 +15498,13 @@ class SupportAccessAddEntries(model.Model): emails: An array of emails to add to the Allowlist reason: Reason for adding emails to the Allowlist """ + emails: Optional[Sequence[str]] = None reason: Optional[str] = None - def __init__(self, *, - emails: Optional[Sequence[str]] = None, - reason: Optional[str] = None): + def __init__( + self, *, emails: Optional[Sequence[str]] = None, reason: Optional[str] = None + ): self.emails = emails self.reason = reason @@ -14210,18 +15519,22 @@ class SupportAccessAllowlistEntry(model.Model): reason: Reason the Email is included in the Allowlist created_date: Date the Email was added to the Allowlist """ + id: Optional[str] = None email: Optional[str] = None full_name: Optional[str] = None reason: Optional[str] = None created_date: Optional[datetime.datetime] = None - def __init__(self, *, - id: Optional[str] = None, - email: Optional[str] = None, - full_name: Optional[str] = None, - reason: Optional[str] = None, - created_date: Optional[datetime.datetime] = None): + def __init__( + self, + *, + id: Optional[str] = None, + email: Optional[str] = None, + full_name: Optional[str] = None, + reason: Optional[str] = None, + created_date: Optional[datetime.datetime] = None + ): self.id = id self.email = email self.full_name = full_name @@ -14235,10 +15548,10 @@ class SupportAccessEnable(model.Model): Attributes: duration_in_seconds: Duration Support Access will remain enabled """ + duration_in_seconds: int - def __init__(self, *, - duration_in_seconds: int): + def __init__(self, *, duration_in_seconds: int): self.duration_in_seconds = duration_in_seconds @@ -14249,12 +15562,16 @@ class SupportAccessStatus(model.Model): open: Whether or not Support Access is open open_until: Time that Support Access will expire """ + open: Optional[bool] = None open_until: Optional[datetime.datetime] = None - def __init__(self, *, - open: Optional[bool] = None, - open_until: Optional[datetime.datetime] = None): + def __init__( + self, + *, + open: Optional[bool] = None, + open_until: Optional[datetime.datetime] = None + ): self.open = open self.open_until = open_until @@ -14264,6 +15581,7 @@ class SupportedActionTypes(enum.Enum): A list of action types the integration supports. Valid values are: "cell", "query", "dashboard", "none". (Enum defined in Integration) """ + cell = "cell" query = "query" dashboard = "dashboard" @@ -14280,6 +15598,7 @@ class SupportedDownloadSettings(enum.Enum): A list of all the download mechanisms the integration supports. The order of values is not significant: Looker will select the most appropriate supported download mechanism for a given query. The integration must ensure it can handle any of the mechanisms it claims to support. If unspecified, this defaults to all download setting values. Valid values are: "push", "url". (Enum defined in Integration) """ + push = "push" url = "url" invalid_api_enum_value = "invalid_api_enum_value" @@ -14294,6 +15613,7 @@ class SupportedFormats(enum.Enum): A list of data formats the integration supports. If unspecified, the default is all data formats. Valid values are: "txt", "csv", "inline_json", "json", "json_label", "json_detail", "json_detail_lite_stream", "json_bi", "xlsx", "html", "wysiwyg_pdf", "assembled_pdf", "wysiwyg_png", "csv_zip". (Enum defined in Integration) """ + txt = "txt" csv = "csv" inline_json = "inline_json" @@ -14320,6 +15640,7 @@ class SupportedFormattings(enum.Enum): A list of formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: "formatted", "unformatted". (Enum defined in Integration) """ + formatted = "formatted" unformatted = "unformatted" invalid_api_enum_value = "invalid_api_enum_value" @@ -14334,6 +15655,7 @@ class SupportedVisualizationFormattings(enum.Enum): A list of visualization formatting options the integration supports. If unspecified, defaults to all formats. Valid values are: "apply", "noapply". (Enum defined in Integration) """ + apply = "apply" noapply = "noapply" invalid_api_enum_value = "invalid_api_enum_value" @@ -14356,6 +15678,7 @@ class SystemMessage(model.Model): exampleQueries: groupId: Identifies the group that the event belongs to. """ + text: Optional["TextMessage"] = None schema: Optional["SchemaMessage"] = None data: Optional["DataMessage"] = None @@ -14365,15 +15688,18 @@ class SystemMessage(model.Model): exampleQueries: Optional["ExampleQueries"] = None groupId: Optional[int] = None - def __init__(self, *, - text: Optional["TextMessage"] = None, - schema: Optional["SchemaMessage"] = None, - data: Optional["DataMessage"] = None, - analysis: Optional["AnalysisMessage"] = None, - chart: Optional["ChartMessage"] = None, - error: Optional["ErrorMessage"] = None, - exampleQueries: Optional["ExampleQueries"] = None, - groupId: Optional[int] = None): + def __init__( + self, + *, + text: Optional["TextMessage"] = None, + schema: Optional["SchemaMessage"] = None, + data: Optional["DataMessage"] = None, + analysis: Optional["AnalysisMessage"] = None, + chart: Optional["ChartMessage"] = None, + error: Optional["ErrorMessage"] = None, + exampleQueries: Optional["ExampleQueries"] = None, + groupId: Optional[int] = None + ): self.text = text self.schema = schema self.data = data @@ -14391,12 +15717,13 @@ class TextMessage(model.Model): parts: The parts of the message. textType: The type of the text message. """ + parts: Optional[Sequence[str]] = None textType: Optional[str] = None - def __init__(self, *, - parts: Optional[Sequence[str]] = None, - textType: Optional[str] = None): + def __init__( + self, *, parts: Optional[Sequence[str]] = None, textType: Optional[str] = None + ): self.parts = parts self.textType = textType @@ -14412,6 +15739,7 @@ class Theme(model.Model): name: Name of theme. Can only be alphanumeric and underscores. settings: """ + can: Optional[MutableMapping[str, bool]] = None begin_at: Optional[datetime.datetime] = None end_at: Optional[datetime.datetime] = None @@ -14419,13 +15747,16 @@ class Theme(model.Model): name: Optional[str] = None settings: Optional["ThemeSettings"] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - begin_at: Optional[datetime.datetime] = None, - end_at: Optional[datetime.datetime] = None, - id: Optional[str] = None, - name: Optional[str] = None, - settings: Optional["ThemeSettings"] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + begin_at: Optional[datetime.datetime] = None, + end_at: Optional[datetime.datetime] = None, + id: Optional[str] = None, + name: Optional[str] = None, + settings: Optional["ThemeSettings"] = None + ): self.can = can self.begin_at = begin_at self.end_at = end_at @@ -14484,6 +15815,7 @@ class ThemeSettings(model.Model): row_gap_size: The horizontal gap/gutter size between tiles. border_radius: The border radius for tiles. """ + background_color: Optional[str] = None base_font_size: Optional[str] = None color_collection_id: Optional[str] = None @@ -14530,52 +15862,55 @@ class ThemeSettings(model.Model): row_gap_size: Optional[str] = None border_radius: Optional[str] = None - def __init__(self, *, - background_color: Optional[str] = None, - base_font_size: Optional[str] = None, - color_collection_id: Optional[str] = None, - font_color: Optional[str] = None, - font_family: Optional[str] = None, - font_source: Optional[str] = None, - info_button_color: Optional[str] = None, - primary_button_color: Optional[str] = None, - show_filters_bar: Optional[bool] = None, - show_title: Optional[bool] = None, - text_tile_text_color: Optional[str] = None, - tile_background_color: Optional[str] = None, - text_tile_background_color: Optional[str] = None, - tile_text_color: Optional[str] = None, - title_color: Optional[str] = None, - warn_button_color: Optional[str] = None, - tile_title_alignment: Optional[str] = None, - tile_shadow: Optional[bool] = None, - show_last_updated_indicator: Optional[bool] = None, - show_reload_data_icon: Optional[bool] = None, - show_dashboard_menu: Optional[bool] = None, - show_filters_toggle: Optional[bool] = None, - show_dashboard_header: Optional[bool] = None, - center_dashboard_title: Optional[bool] = None, - dashboard_title_font_size: Optional[str] = None, - box_shadow: Optional[str] = None, - page_margin_top: Optional[str] = None, - page_margin_bottom: Optional[str] = None, - page_margin_sides: Optional[str] = None, - show_explore_header: Optional[bool] = None, - show_explore_title: Optional[bool] = None, - show_explore_last_run: Optional[bool] = None, - show_explore_timezone: Optional[bool] = None, - show_explore_run_stop_button: Optional[bool] = None, - show_explore_actions_button: Optional[bool] = None, - show_look_header: Optional[bool] = None, - show_look_title: Optional[bool] = None, - show_look_last_run: Optional[bool] = None, - show_look_timezone: Optional[bool] = None, - show_look_run_stop_button: Optional[bool] = None, - show_look_actions_button: Optional[bool] = None, - tile_title_font_size: Optional[str] = None, - column_gap_size: Optional[str] = None, - row_gap_size: Optional[str] = None, - border_radius: Optional[str] = None): + def __init__( + self, + *, + background_color: Optional[str] = None, + base_font_size: Optional[str] = None, + color_collection_id: Optional[str] = None, + font_color: Optional[str] = None, + font_family: Optional[str] = None, + font_source: Optional[str] = None, + info_button_color: Optional[str] = None, + primary_button_color: Optional[str] = None, + show_filters_bar: Optional[bool] = None, + show_title: Optional[bool] = None, + text_tile_text_color: Optional[str] = None, + tile_background_color: Optional[str] = None, + text_tile_background_color: Optional[str] = None, + tile_text_color: Optional[str] = None, + title_color: Optional[str] = None, + warn_button_color: Optional[str] = None, + tile_title_alignment: Optional[str] = None, + tile_shadow: Optional[bool] = None, + show_last_updated_indicator: Optional[bool] = None, + show_reload_data_icon: Optional[bool] = None, + show_dashboard_menu: Optional[bool] = None, + show_filters_toggle: Optional[bool] = None, + show_dashboard_header: Optional[bool] = None, + center_dashboard_title: Optional[bool] = None, + dashboard_title_font_size: Optional[str] = None, + box_shadow: Optional[str] = None, + page_margin_top: Optional[str] = None, + page_margin_bottom: Optional[str] = None, + page_margin_sides: Optional[str] = None, + show_explore_header: Optional[bool] = None, + show_explore_title: Optional[bool] = None, + show_explore_last_run: Optional[bool] = None, + show_explore_timezone: Optional[bool] = None, + show_explore_run_stop_button: Optional[bool] = None, + show_explore_actions_button: Optional[bool] = None, + show_look_header: Optional[bool] = None, + show_look_title: Optional[bool] = None, + show_look_last_run: Optional[bool] = None, + show_look_timezone: Optional[bool] = None, + show_look_run_stop_button: Optional[bool] = None, + show_look_actions_button: Optional[bool] = None, + tile_title_font_size: Optional[str] = None, + column_gap_size: Optional[str] = None, + row_gap_size: Optional[str] = None, + border_radius: Optional[str] = None + ): self.background_color = background_color self.base_font_size = base_font_size self.color_collection_id = color_collection_id @@ -14631,14 +15966,18 @@ class Timezone(model.Model): label: Description of timezone group: Timezone group (e.g Common, Other, etc.) """ + value: Optional[str] = None label: Optional[str] = None group: Optional[str] = None - def __init__(self, *, - value: Optional[str] = None, - label: Optional[str] = None, - group: Optional[str] = None): + def __init__( + self, + *, + value: Optional[str] = None, + label: Optional[str] = None, + group: Optional[str] = None + ): self.value = value self.label = label self.group = group @@ -14653,16 +15992,20 @@ class UpdateArtifact(model.Model): content_type: MIME type of content. This can only be used to override content that is detected as text/plain. Needed to set application/json content types, which are analyzed as plain text. version: Version number of the stored value. The version must be provided for any updates to an existing artifact. """ + key: str value: str content_type: Optional[str] = None version: Optional[int] = None - def __init__(self, *, - key: str, - value: str, - content_type: Optional[str] = None, - version: Optional[int] = None): + def __init__( + self, + *, + key: str, + value: str, + content_type: Optional[str] = None, + version: Optional[int] = None + ): self.key = key self.value = value self.content_type = content_type @@ -14676,12 +16019,11 @@ class UpdateFolder(model.Model): name: Unique Name parent_id: Id of Parent. If the parent id is null, this is a root-level entry """ + name: Optional[str] = None parent_id: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - parent_id: Optional[str] = None): + def __init__(self, *, name: Optional[str] = None, parent_id: Optional[str] = None): self.name = name self.parent_id = parent_id @@ -14732,6 +16074,7 @@ class User(model.Model): service_account_name: The display name of the service account. This field is omitted for non service account users. url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None avatar_url: Optional[str] = None avatar_url_without_sizing: Optional[str] = None @@ -14774,48 +16117,51 @@ class User(model.Model): service_account_name: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - avatar_url: Optional[str] = None, - avatar_url_without_sizing: Optional[str] = None, - credentials_api3: Optional[Sequence["CredentialsApi3"]] = None, - credentials_email: Optional["CredentialsEmail"] = None, - credentials_embed: Optional[Sequence["CredentialsEmbed"]] = None, - credentials_google: Optional["CredentialsGoogle"] = None, - credentials_ldap: Optional["CredentialsLDAP"] = None, - credentials_looker_openid: Optional["CredentialsLookerOpenid"] = None, - credentials_oidc: Optional["CredentialsOIDC"] = None, - credentials_saml: Optional["CredentialsSaml"] = None, - credentials_totp: Optional["CredentialsTotp"] = None, - credentials_workforce: Optional["CredentialsWorkforce"] = None, - display_name: Optional[str] = None, - email: Optional[str] = None, - embed_group_space_id: Optional[str] = None, - first_name: Optional[str] = None, - group_ids: Optional[Sequence[str]] = None, - home_folder_id: Optional[str] = None, - id: Optional[str] = None, - is_disabled: Optional[bool] = None, - last_name: Optional[str] = None, - locale: Optional[str] = None, - looker_versions: Optional[Sequence[str]] = None, - models_dir_validated: Optional[bool] = None, - personal_folder_id: Optional[str] = None, - presumed_looker_employee: Optional[bool] = None, - role_ids: Optional[Sequence[str]] = None, - sessions: Optional[Sequence["Session"]] = None, - ui_state: Optional[MutableMapping[str, Any]] = None, - verified_looker_employee: Optional[bool] = None, - roles_externally_managed: Optional[bool] = None, - allow_direct_roles: Optional[bool] = None, - allow_normal_group_membership: Optional[bool] = None, - allow_roles_from_normal_groups: Optional[bool] = None, - embed_group_folder_id: Optional[str] = None, - is_iam_admin: Optional[bool] = None, - can_manage_api3_creds: Optional[bool] = None, - is_service_account: Optional[bool] = None, - service_account_name: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + avatar_url: Optional[str] = None, + avatar_url_without_sizing: Optional[str] = None, + credentials_api3: Optional[Sequence["CredentialsApi3"]] = None, + credentials_email: Optional["CredentialsEmail"] = None, + credentials_embed: Optional[Sequence["CredentialsEmbed"]] = None, + credentials_google: Optional["CredentialsGoogle"] = None, + credentials_ldap: Optional["CredentialsLDAP"] = None, + credentials_looker_openid: Optional["CredentialsLookerOpenid"] = None, + credentials_oidc: Optional["CredentialsOIDC"] = None, + credentials_saml: Optional["CredentialsSaml"] = None, + credentials_totp: Optional["CredentialsTotp"] = None, + credentials_workforce: Optional["CredentialsWorkforce"] = None, + display_name: Optional[str] = None, + email: Optional[str] = None, + embed_group_space_id: Optional[str] = None, + first_name: Optional[str] = None, + group_ids: Optional[Sequence[str]] = None, + home_folder_id: Optional[str] = None, + id: Optional[str] = None, + is_disabled: Optional[bool] = None, + last_name: Optional[str] = None, + locale: Optional[str] = None, + looker_versions: Optional[Sequence[str]] = None, + models_dir_validated: Optional[bool] = None, + personal_folder_id: Optional[str] = None, + presumed_looker_employee: Optional[bool] = None, + role_ids: Optional[Sequence[str]] = None, + sessions: Optional[Sequence["Session"]] = None, + ui_state: Optional[MutableMapping[str, Any]] = None, + verified_looker_employee: Optional[bool] = None, + roles_externally_managed: Optional[bool] = None, + allow_direct_roles: Optional[bool] = None, + allow_normal_group_membership: Optional[bool] = None, + allow_roles_from_normal_groups: Optional[bool] = None, + embed_group_folder_id: Optional[str] = None, + is_iam_admin: Optional[bool] = None, + can_manage_api3_creds: Optional[bool] = None, + is_service_account: Optional[bool] = None, + service_account_name: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.avatar_url = avatar_url self.avatar_url_without_sizing = avatar_url_without_sizing @@ -14878,6 +16224,7 @@ class UserAttribute(model.Model): needed_for_ci_run: Whether this user attribute is needed for a CI run value_for_ci_run: The value to use for this user attribute during a CI run """ + name: str label: str type: str @@ -14893,21 +16240,24 @@ class UserAttribute(model.Model): needed_for_ci_run: Optional[bool] = None value_for_ci_run: Optional[str] = None - def __init__(self, *, - name: str, - label: str, - type: str, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - default_value: Optional[str] = None, - is_system: Optional[bool] = None, - is_permanent: Optional[bool] = None, - value_is_hidden: Optional[bool] = None, - user_can_view: Optional[bool] = None, - user_can_edit: Optional[bool] = None, - hidden_value_domain_whitelist: Optional[str] = None, - needed_for_ci_run: Optional[bool] = None, - value_for_ci_run: Optional[str] = None): + def __init__( + self, + *, + name: str, + label: str, + type: str, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + default_value: Optional[str] = None, + is_system: Optional[bool] = None, + is_permanent: Optional[bool] = None, + value_is_hidden: Optional[bool] = None, + user_can_view: Optional[bool] = None, + user_can_edit: Optional[bool] = None, + hidden_value_domain_whitelist: Optional[str] = None, + needed_for_ci_run: Optional[bool] = None, + value_for_ci_run: Optional[str] = None + ): self.name = name self.label = label self.type = type @@ -14929,6 +16279,7 @@ class UserAttributeFilterTypes(enum.Enum): An array of user attribute types that are allowed to be used in filters on this field. Valid values are: "advanced_filter_string", "advanced_filter_number", "advanced_filter_datetime", "string", "number", "datetime", "relative_url", "yesno", "zipcode". (Enum defined in LookmlModelExploreField) """ + advanced_filter_string = "advanced_filter_string" advanced_filter_number = "advanced_filter_number" advanced_filter_datetime = "advanced_filter_datetime" @@ -14959,6 +16310,7 @@ class UserAttributeGroupValue(model.Model): rank: Precedence for resolving value for user value: Value of user attribute for group """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None group_id: Optional[str] = None @@ -14967,14 +16319,17 @@ class UserAttributeGroupValue(model.Model): rank: Optional[int] = None value: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - group_id: Optional[str] = None, - user_attribute_id: Optional[str] = None, - value_is_hidden: Optional[bool] = None, - rank: Optional[int] = None, - value: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + group_id: Optional[str] = None, + user_attribute_id: Optional[str] = None, + value_is_hidden: Optional[bool] = None, + rank: Optional[int] = None, + value: Optional[str] = None + ): self.can = can self.id = id self.group_id = group_id @@ -14991,12 +16346,11 @@ class UserAttributeOverride(model.Model): name: Name of user attribute that should be overridden for CI Run value: Value of user attribute that should be set for CI Run """ + name: Optional[str] = None value: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - value: Optional[str] = None): + def __init__(self, *, name: Optional[str] = None, value: Optional[str] = None): self.name = name self.value = value @@ -15017,6 +16371,7 @@ class UserAttributeWithValue(model.Model): source: How user got this value for this attribute hidden_value_domain_whitelist: If this user attribute is hidden, allowed list of destinations to which it may be sent. """ + can: Optional[MutableMapping[str, bool]] = None name: Optional[str] = None label: Optional[str] = None @@ -15029,18 +16384,21 @@ class UserAttributeWithValue(model.Model): source: Optional[str] = None hidden_value_domain_whitelist: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - name: Optional[str] = None, - label: Optional[str] = None, - rank: Optional[int] = None, - value: Optional[str] = None, - user_id: Optional[str] = None, - user_can_edit: Optional[bool] = None, - value_is_hidden: Optional[bool] = None, - user_attribute_id: Optional[str] = None, - source: Optional[str] = None, - hidden_value_domain_whitelist: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + name: Optional[str] = None, + label: Optional[str] = None, + rank: Optional[int] = None, + value: Optional[str] = None, + user_id: Optional[str] = None, + user_can_edit: Optional[bool] = None, + value_is_hidden: Optional[bool] = None, + user_attribute_id: Optional[str] = None, + source: Optional[str] = None, + hidden_value_domain_whitelist: Optional[str] = None + ): self.can = can self.name = name self.label = label @@ -15060,10 +16418,10 @@ class UserEmailOnly(model.Model): Attributes: email: Email Address """ + email: str - def __init__(self, *, - email: str): + def __init__(self, *, email: str): self.email = email @@ -15082,6 +16440,7 @@ class UserLoginLockout(model.Model): fail_count: Number of failures that triggered the lockout lockout_at: Time when lockout was triggered """ + can: Optional[MutableMapping[str, bool]] = None key: Optional[str] = None auth_type: Optional[str] = None @@ -15093,17 +16452,20 @@ class UserLoginLockout(model.Model): fail_count: Optional[int] = None lockout_at: Optional[datetime.datetime] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - key: Optional[str] = None, - auth_type: Optional[str] = None, - ip: Optional[str] = None, - user_id: Optional[str] = None, - remote_id: Optional[str] = None, - full_name: Optional[str] = None, - email: Optional[str] = None, - fail_count: Optional[int] = None, - lockout_at: Optional[datetime.datetime] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + key: Optional[str] = None, + auth_type: Optional[str] = None, + ip: Optional[str] = None, + user_id: Optional[str] = None, + remote_id: Optional[str] = None, + full_name: Optional[str] = None, + email: Optional[str] = None, + fail_count: Optional[int] = None, + lockout_at: Optional[datetime.datetime] = None + ): self.can = can self.key = key self.auth_type = auth_type @@ -15122,10 +16484,10 @@ class UserMessage(model.Model): Attributes: text: Text content of the user message. """ + text: Optional[str] = None - def __init__(self, *, - text: Optional[str] = None): + def __init__(self, *, text: Optional[str] = None): self.text = text @@ -15141,6 +16503,7 @@ class UserPublic(model.Model): avatar_url: URL for the avatar image (may be generic) url: Link to get this item """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None first_name: Optional[str] = None @@ -15149,14 +16512,17 @@ class UserPublic(model.Model): avatar_url: Optional[str] = None url: Optional[str] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - first_name: Optional[str] = None, - last_name: Optional[str] = None, - display_name: Optional[str] = None, - avatar_url: Optional[str] = None, - url: Optional[str] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + first_name: Optional[str] = None, + last_name: Optional[str] = None, + display_name: Optional[str] = None, + avatar_url: Optional[str] = None, + url: Optional[str] = None + ): self.can = can self.id = id self.first_name = first_name @@ -15174,14 +16540,18 @@ class ValidationError(model.Model): documentation_url: Documentation link errors: Error detail array """ + message: str documentation_url: str errors: Optional[Sequence["ValidationErrorDetail"]] = None - def __init__(self, *, - message: str, - documentation_url: str, - errors: Optional[Sequence["ValidationErrorDetail"]] = None): + def __init__( + self, + *, + message: str, + documentation_url: str, + errors: Optional[Sequence["ValidationErrorDetail"]] = None + ): self.message = message self.documentation_url = documentation_url self.errors = errors @@ -15196,16 +16566,20 @@ class ValidationErrorDetail(model.Model): code: Error code message: Error info message """ + documentation_url: str field: Optional[str] = None code: Optional[str] = None message: Optional[str] = None - def __init__(self, *, - documentation_url: str, - field: Optional[str] = None, - code: Optional[str] = None, - message: Optional[str] = None): + def __init__( + self, + *, + documentation_url: str, + field: Optional[str] = None, + code: Optional[str] = None, + message: Optional[str] = None + ): self.documentation_url = documentation_url self.field = field self.code = code @@ -15217,6 +16591,7 @@ class WeekStartDay(enum.Enum): The name of the starting day of the week. Valid values are: "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday". (Enum defined in LookmlModelExploreField) """ + monday = "monday" tuesday = "tuesday" wednesday = "wednesday" @@ -15239,14 +16614,18 @@ class WelcomeEmailTest(model.Model): subject: The subject that would be sent for the custom welcome email header: The header that would be sent in the body of a custom welcome email """ + content: Optional[str] = None subject: Optional[str] = None header: Optional[str] = None - def __init__(self, *, - content: Optional[str] = None, - subject: Optional[str] = None, - header: Optional[str] = None): + def __init__( + self, + *, + content: Optional[str] = None, + subject: Optional[str] = None, + header: Optional[str] = None + ): self.content = content self.subject = subject self.header = header @@ -15273,6 +16652,7 @@ class WhitelabelConfiguration(model.Model): alerts_links: Remove Looker links from Alerts folders_mentions: Remove Looker mentions in home folder page when you don’t have any items saved """ + id: Optional[str] = None logo_file: Optional[str] = None logo_url: Optional[str] = None @@ -15290,23 +16670,26 @@ class WhitelabelConfiguration(model.Model): alerts_links: Optional[bool] = None folders_mentions: Optional[bool] = None - def __init__(self, *, - id: Optional[str] = None, - logo_file: Optional[str] = None, - logo_url: Optional[str] = None, - favicon_file: Optional[str] = None, - favicon_url: Optional[str] = None, - default_title: Optional[str] = None, - show_help_menu: Optional[bool] = None, - show_docs: Optional[bool] = None, - show_email_sub_options: Optional[bool] = None, - allow_looker_mentions: Optional[bool] = None, - allow_looker_links: Optional[bool] = None, - custom_welcome_email_advanced: Optional[bool] = None, - setup_mentions: Optional[bool] = None, - alerts_logo: Optional[bool] = None, - alerts_links: Optional[bool] = None, - folders_mentions: Optional[bool] = None): + def __init__( + self, + *, + id: Optional[str] = None, + logo_file: Optional[str] = None, + logo_url: Optional[str] = None, + favicon_file: Optional[str] = None, + favicon_url: Optional[str] = None, + default_title: Optional[str] = None, + show_help_menu: Optional[bool] = None, + show_docs: Optional[bool] = None, + show_email_sub_options: Optional[bool] = None, + allow_looker_mentions: Optional[bool] = None, + allow_looker_links: Optional[bool] = None, + custom_welcome_email_advanced: Optional[bool] = None, + setup_mentions: Optional[bool] = None, + alerts_logo: Optional[bool] = None, + alerts_links: Optional[bool] = None, + folders_mentions: Optional[bool] = None + ): self.id = id self.logo_file = logo_file self.logo_url = logo_url @@ -15332,12 +16715,11 @@ class WorkflowDestination(model.Model): type: Defines the delivery mechanism ('email' or 'action_hub'). parameters: The routing configuration. """ + type: Optional[str] = None parameters: Optional[str] = None - def __init__(self, *, - type: Optional[str] = None, - parameters: Optional[str] = None): + def __init__(self, *, type: Optional[str] = None, parameters: Optional[str] = None): self.type = type self.parameters = parameters @@ -15350,14 +16732,18 @@ class WorkflowParams(model.Model): polling_frequency_cron: Crontab specifying the execution frequency destination: """ + primary_agent: Optional[str] = None polling_frequency_cron: Optional[str] = None destination: Optional["WorkflowDestination"] = None - def __init__(self, *, - primary_agent: Optional[str] = None, - polling_frequency_cron: Optional[str] = None, - destination: Optional["WorkflowDestination"] = None): + def __init__( + self, + *, + primary_agent: Optional[str] = None, + polling_frequency_cron: Optional[str] = None, + destination: Optional["WorkflowDestination"] = None + ): self.primary_agent = primary_agent self.polling_frequency_cron = polling_frequency_cron self.destination = destination @@ -15371,14 +16757,18 @@ class Workspace(model.Model): id: The unique id of this user workspace. Predefined workspace ids include "production" and "dev" projects: The local state of each project in the workspace """ + can: Optional[MutableMapping[str, bool]] = None id: Optional[str] = None projects: Optional[Sequence["Project"]] = None - def __init__(self, *, - can: Optional[MutableMapping[str, bool]] = None, - id: Optional[str] = None, - projects: Optional[Sequence["Project"]] = None): + def __init__( + self, + *, + can: Optional[MutableMapping[str, bool]] = None, + id: Optional[str] = None, + projects: Optional[Sequence["Project"]] = None + ): self.can = can self.id = id self.projects = projects @@ -15387,21 +16777,22 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteAgent(model.Model): """ - Dynamic writeable type for Agent removes: -can, id, created_by_name, created_by_first_name, created_by_last_name, created_by_avatar_url, has_inaccessible_source, golden_queries, created_at, updated_at, content_metadata_id, studio_agent_id + Dynamic writeable type for Agent removes: + can, id, created_by_name, created_by_first_name, created_by_last_name, created_by_avatar_url, has_inaccessible_source, golden_queries, created_at, updated_at, content_metadata_id, studio_agent_id - Attributes: - created_by_user_id: User that created the Agent - name: Agent name - description: Agent description - category: The category of the agent (e.g., dashboard, conversation) - sources: Agent sources - golden_query_ids: IDs of golden queries linked to the agent - context: - deleted: Is Agent soft deleted - code_interpreter: Enables Code Interpreter for this Agent - workflow_params: + Attributes: + created_by_user_id: User that created the Agent + name: Agent name + description: Agent description + category: The category of the agent (e.g., dashboard, conversation) + sources: Agent sources + golden_query_ids: IDs of golden queries linked to the agent + context: + deleted: Is Agent soft deleted + code_interpreter: Enables Code Interpreter for this Agent + workflow_params: """ + created_by_user_id: Optional[str] = None name: Optional[str] = None description: Optional[str] = None @@ -15413,17 +16804,20 @@ class WriteAgent(model.Model): code_interpreter: Optional[bool] = None workflow_params: Optional["WorkflowParams"] = None - def __init__(self, *, - created_by_user_id: Optional[str] = None, - name: Optional[str] = None, - description: Optional[str] = None, - category: Optional[str] = None, - sources: Optional[Sequence["Source"]] = None, - golden_query_ids: Optional[Sequence[int]] = None, - context: Optional["Context"] = None, - deleted: Optional[bool] = None, - code_interpreter: Optional[bool] = None, - workflow_params: Optional["WorkflowParams"] = None): + def __init__( + self, + *, + created_by_user_id: Optional[str] = None, + name: Optional[str] = None, + description: Optional[str] = None, + category: Optional[str] = None, + sources: Optional[Sequence["Source"]] = None, + golden_query_ids: Optional[Sequence[int]] = None, + context: Optional["Context"] = None, + deleted: Optional[bool] = None, + code_interpreter: Optional[bool] = None, + workflow_params: Optional["WorkflowParams"] = None + ): self.created_by_user_id = created_by_user_id self.name = name self.description = description @@ -15439,35 +16833,36 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteAlert(model.Model): """ - Dynamic writeable type for Alert removes: -followed, followable, id, investigative_content_title, owner_display_name - - Attributes: - comparison_type: This property informs the check what kind of comparison we are performing. Only certain condition types are valid for time series alerts. For details, refer to [Setting Alert Conditions](https://docs.cloud.google.com/looker/docs/sharing-and-publishing/creating-alerts#setting_alert_conditions) Valid values are: "EQUAL_TO", "GREATER_THAN", "GREATER_THAN_OR_EQUAL_TO", "LESS_THAN", "LESS_THAN_OR_EQUAL_TO", "INCREASES_BY", "DECREASES_BY", "CHANGES_BY". - cron: Vixie-Style crontab specification when to run. At minimum, it has to be longer than 15 minute intervals - destinations: Array of destinations to send alerts to. Must be the same type of destination. Example `[{ "destination_type": "EMAIL", "email_address": "test@test.com" }]` - field: - owner_id: User id of alert owner - threshold: Value of the alert threshold - applied_dashboard_filters: Filters coming from the dashboard that are applied. Example `[{ "filter_title": "Name", "field_name": "distribution_centers.name", "filter_value": "Los Angeles CA" }]` - query_id: ID of the query - custom_url_base: Domain for the custom url selected by the alert creator from the admin defined domain allowlist - custom_url_params: Parameters and path for the custom url defined by the alert creator - custom_url_label: Label for the custom url defined by the alert creator - show_custom_url: Boolean to determine if the custom url should be used - custom_title: An optional, user-defined title for the alert - dashboard_element_id: ID of the dashboard element associated with the alert. Refer to [dashboard_element()](#!/Dashboard/DashboardElement) - description: An optional description for the alert. This supplements the title - enhancements: Enum of additional alert properties. Valid values are: "NONE", "STRATEGIC_NARRATIVE". - is_disabled: Whether or not the alert is disabled - disabled_reason: Reason for disabling alert - is_public: Whether or not the alert is public - investigative_content_type: The type of the investigative content Valid values are: "dashboard". - investigative_content_id: The ID of the investigative content. For dashboards, this will be the dashboard ID - lookml_dashboard_id: ID of the LookML dashboard associated with the alert - lookml_link_id: ID of the LookML dashboard element associated with the alert - time_series_condition_state: + Dynamic writeable type for Alert removes: + followed, followable, id, investigative_content_title, owner_display_name + + Attributes: + comparison_type: This property informs the check what kind of comparison we are performing. Only certain condition types are valid for time series alerts. For details, refer to [Setting Alert Conditions](https://docs.cloud.google.com/looker/docs/sharing-and-publishing/creating-alerts#setting_alert_conditions) Valid values are: "EQUAL_TO", "GREATER_THAN", "GREATER_THAN_OR_EQUAL_TO", "LESS_THAN", "LESS_THAN_OR_EQUAL_TO", "INCREASES_BY", "DECREASES_BY", "CHANGES_BY". + cron: Vixie-Style crontab specification when to run. At minimum, it has to be longer than 15 minute intervals + destinations: Array of destinations to send alerts to. Must be the same type of destination. Example `[{ "destination_type": "EMAIL", "email_address": "test@test.com" }]` + field: + owner_id: User id of alert owner + threshold: Value of the alert threshold + applied_dashboard_filters: Filters coming from the dashboard that are applied. Example `[{ "filter_title": "Name", "field_name": "distribution_centers.name", "filter_value": "Los Angeles CA" }]` + query_id: ID of the query + custom_url_base: Domain for the custom url selected by the alert creator from the admin defined domain allowlist + custom_url_params: Parameters and path for the custom url defined by the alert creator + custom_url_label: Label for the custom url defined by the alert creator + show_custom_url: Boolean to determine if the custom url should be used + custom_title: An optional, user-defined title for the alert + dashboard_element_id: ID of the dashboard element associated with the alert. Refer to [dashboard_element()](#!/Dashboard/DashboardElement) + description: An optional description for the alert. This supplements the title + enhancements: Enum of additional alert properties. Valid values are: "NONE", "STRATEGIC_NARRATIVE". + is_disabled: Whether or not the alert is disabled + disabled_reason: Reason for disabling alert + is_public: Whether or not the alert is public + investigative_content_type: The type of the investigative content Valid values are: "dashboard". + investigative_content_id: The ID of the investigative content. For dashboards, this will be the dashboard ID + lookml_dashboard_id: ID of the LookML dashboard associated with the alert + lookml_link_id: ID of the LookML dashboard element associated with the alert + time_series_condition_state: """ + comparison_type: "ComparisonType" cron: str destinations: Sequence["AlertDestination"] @@ -15516,34 +16911,39 @@ class WriteAlert(model.Model): "investigative_content_id": Optional[str], "lookml_dashboard_id": Optional[str], "lookml_link_id": Optional[str], - "time_series_condition_state": Optional["AlertConditionState"] + "time_series_condition_state": Optional["AlertConditionState"], } - def __init__(self, *, - comparison_type: "ComparisonType", - cron: str, - destinations: Sequence["AlertDestination"], - field: "AlertField", - owner_id: str, - threshold: float, - applied_dashboard_filters: Optional[Sequence["AlertAppliedDashboardFilter"]] = None, - query_id: Optional[str] = None, - custom_url_base: Optional[str] = None, - custom_url_params: Optional[str] = None, - custom_url_label: Optional[str] = None, - show_custom_url: Optional[bool] = None, - custom_title: Optional[str] = None, - dashboard_element_id: Optional[str] = None, - description: Optional[str] = None, - enhancements: Optional["Enhancements"] = None, - is_disabled: Optional[bool] = None, - disabled_reason: Optional[str] = None, - is_public: Optional[bool] = None, - investigative_content_type: Optional["InvestigativeContentType"] = None, - investigative_content_id: Optional[str] = None, - lookml_dashboard_id: Optional[str] = None, - lookml_link_id: Optional[str] = None, - time_series_condition_state: Optional["AlertConditionState"] = None): + def __init__( + self, + *, + comparison_type: "ComparisonType", + cron: str, + destinations: Sequence["AlertDestination"], + field: "AlertField", + owner_id: str, + threshold: float, + applied_dashboard_filters: Optional[ + Sequence["AlertAppliedDashboardFilter"] + ] = None, + query_id: Optional[str] = None, + custom_url_base: Optional[str] = None, + custom_url_params: Optional[str] = None, + custom_url_label: Optional[str] = None, + show_custom_url: Optional[bool] = None, + custom_title: Optional[str] = None, + dashboard_element_id: Optional[str] = None, + description: Optional[str] = None, + enhancements: Optional["Enhancements"] = None, + is_disabled: Optional[bool] = None, + disabled_reason: Optional[str] = None, + is_public: Optional[bool] = None, + investigative_content_type: Optional["InvestigativeContentType"] = None, + investigative_content_id: Optional[str] = None, + lookml_dashboard_id: Optional[str] = None, + lookml_link_id: Optional[str] = None, + time_series_condition_state: Optional["AlertConditionState"] = None + ): self.comparison_type = comparison_type self.cron = cron self.destinations = destinations @@ -15573,44 +16973,48 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteApiSession(model.Model): """ - Dynamic writeable type for ApiSession removes: -can, sudo_user_id + Dynamic writeable type for ApiSession removes: + can, sudo_user_id - Attributes: - workspace_id: The id of active workspace for this session + Attributes: + workspace_id: The id of active workspace for this session """ + workspace_id: Optional[str] = None - def __init__(self, *, - workspace_id: Optional[str] = None): + def __init__(self, *, workspace_id: Optional[str] = None): self.workspace_id = workspace_id @attr.s(auto_attribs=True, init=False) class WriteBackupConfiguration(model.Model): """ - Dynamic writeable type for BackupConfiguration removes: -can, url + Dynamic writeable type for BackupConfiguration removes: + can, url - Attributes: - type: Type of backup: looker-s3 or custom-s3 - custom_s3_bucket: Name of bucket for custom-s3 backups - custom_s3_bucket_region: Name of region where the bucket is located - custom_s3_key: (Write-Only) AWS S3 key used for custom-s3 backups - custom_s3_secret: (Write-Only) AWS S3 secret used for custom-s3 backups + Attributes: + type: Type of backup: looker-s3 or custom-s3 + custom_s3_bucket: Name of bucket for custom-s3 backups + custom_s3_bucket_region: Name of region where the bucket is located + custom_s3_key: (Write-Only) AWS S3 key used for custom-s3 backups + custom_s3_secret: (Write-Only) AWS S3 secret used for custom-s3 backups """ + type: Optional[str] = None custom_s3_bucket: Optional[str] = None custom_s3_bucket_region: Optional[str] = None custom_s3_key: Optional[str] = None custom_s3_secret: Optional[str] = None - def __init__(self, *, - type: Optional[str] = None, - custom_s3_bucket: Optional[str] = None, - custom_s3_bucket_region: Optional[str] = None, - custom_s3_key: Optional[str] = None, - custom_s3_secret: Optional[str] = None): + def __init__( + self, + *, + type: Optional[str] = None, + custom_s3_bucket: Optional[str] = None, + custom_s3_bucket_region: Optional[str] = None, + custom_s3_key: Optional[str] = None, + custom_s3_secret: Optional[str] = None + ): self.type = type self.custom_s3_bucket = custom_s3_bucket self.custom_s3_bucket_region = custom_s3_bucket_region @@ -15621,28 +17025,32 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteBoard(model.Model): """ - Dynamic writeable type for Board removes: -can, content_metadata_id, created_at, board_sections, id, updated_at, primary_homepage + Dynamic writeable type for Board removes: + can, content_metadata_id, created_at, board_sections, id, updated_at, primary_homepage - Attributes: - deleted_at: Date of board deletion - description: Description of the board - section_order: ids of the board sections in the order they should be displayed - title: Title of the board - user_id: User id of board creator + Attributes: + deleted_at: Date of board deletion + description: Description of the board + section_order: ids of the board sections in the order they should be displayed + title: Title of the board + user_id: User id of board creator """ + deleted_at: Optional[datetime.datetime] = None description: Optional[str] = None section_order: Optional[Sequence[str]] = None title: Optional[str] = None user_id: Optional[str] = None - def __init__(self, *, - deleted_at: Optional[datetime.datetime] = None, - description: Optional[str] = None, - section_order: Optional[Sequence[str]] = None, - title: Optional[str] = None, - user_id: Optional[str] = None): + def __init__( + self, + *, + deleted_at: Optional[datetime.datetime] = None, + description: Optional[str] = None, + section_order: Optional[Sequence[str]] = None, + title: Optional[str] = None, + user_id: Optional[str] = None + ): self.deleted_at = deleted_at self.description = description self.section_order = section_order @@ -15653,24 +17061,25 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteBoardItem(model.Model): """ - Dynamic writeable type for BoardItem removes: -can, content_created_by, content_favorite_id, content_metadata_id, content_updated_at, description, favorite_count, id, image_url, location, title, url, view_count, custom_image_url + Dynamic writeable type for BoardItem removes: + can, content_created_by, content_favorite_id, content_metadata_id, content_updated_at, description, favorite_count, id, image_url, location, title, url, view_count, custom_image_url + + Attributes: + custom_description: Custom description entered by the user, if present + custom_title: Custom title entered by the user, if present + custom_url: Custom url entered by the user, if present + dashboard_id: Dashboard to base this item on + board_section_id: Associated Board Section + look_id: Look to base this item on + lookml_dashboard_id: LookML Dashboard to base this item on + order: An arbitrary integer representing the sort order within the section + use_custom_description: Whether the custom description should be used instead of the content description, if the item is associated with content + use_custom_title: Whether the custom title should be used instead of the content title, if the item is associated with content + use_custom_url: Whether the custom url should be used instead of the content url, if the item is associated with content + custom_image_data_base64: (Write-Only) base64 encoded image data + use_custom_image: Whether the custom image should be used instead of the content image, if the item is associated with content + """ - Attributes: - custom_description: Custom description entered by the user, if present - custom_title: Custom title entered by the user, if present - custom_url: Custom url entered by the user, if present - dashboard_id: Dashboard to base this item on - board_section_id: Associated Board Section - look_id: Look to base this item on - lookml_dashboard_id: LookML Dashboard to base this item on - order: An arbitrary integer representing the sort order within the section - use_custom_description: Whether the custom description should be used instead of the content description, if the item is associated with content - use_custom_title: Whether the custom title should be used instead of the content title, if the item is associated with content - use_custom_url: Whether the custom url should be used instead of the content url, if the item is associated with content - custom_image_data_base64: (Write-Only) base64 encoded image data - use_custom_image: Whether the custom image should be used instead of the content image, if the item is associated with content - """ custom_description: Optional[str] = None custom_title: Optional[str] = None custom_url: Optional[str] = None @@ -15685,20 +17094,23 @@ class WriteBoardItem(model.Model): custom_image_data_base64: Optional[str] = None use_custom_image: Optional[bool] = None - def __init__(self, *, - custom_description: Optional[str] = None, - custom_title: Optional[str] = None, - custom_url: Optional[str] = None, - dashboard_id: Optional[str] = None, - board_section_id: Optional[str] = None, - look_id: Optional[str] = None, - lookml_dashboard_id: Optional[str] = None, - order: Optional[int] = None, - use_custom_description: Optional[bool] = None, - use_custom_title: Optional[bool] = None, - use_custom_url: Optional[bool] = None, - custom_image_data_base64: Optional[str] = None, - use_custom_image: Optional[bool] = None): + def __init__( + self, + *, + custom_description: Optional[str] = None, + custom_title: Optional[str] = None, + custom_url: Optional[str] = None, + dashboard_id: Optional[str] = None, + board_section_id: Optional[str] = None, + look_id: Optional[str] = None, + lookml_dashboard_id: Optional[str] = None, + order: Optional[int] = None, + use_custom_description: Optional[bool] = None, + use_custom_title: Optional[bool] = None, + use_custom_url: Optional[bool] = None, + custom_image_data_base64: Optional[str] = None, + use_custom_image: Optional[bool] = None + ): self.custom_description = custom_description self.custom_title = custom_title self.custom_url = custom_url @@ -15717,28 +17129,32 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteBoardSection(model.Model): """ - Dynamic writeable type for BoardSection removes: -can, created_at, board_items, id, visible_item_order, updated_at + Dynamic writeable type for BoardSection removes: + can, created_at, board_items, id, visible_item_order, updated_at - Attributes: - deleted_at: Time at which this section was deleted. - description: Description of the content found in this section. - board_id: Id reference to parent board - item_order: ids of the board items in the order they should be displayed - title: Name of row + Attributes: + deleted_at: Time at which this section was deleted. + description: Description of the content found in this section. + board_id: Id reference to parent board + item_order: ids of the board items in the order they should be displayed + title: Name of row """ + deleted_at: Optional[datetime.datetime] = None description: Optional[str] = None board_id: Optional[str] = None item_order: Optional[Sequence[str]] = None title: Optional[str] = None - def __init__(self, *, - deleted_at: Optional[datetime.datetime] = None, - description: Optional[str] = None, - board_id: Optional[str] = None, - item_order: Optional[Sequence[str]] = None, - title: Optional[str] = None): + def __init__( + self, + *, + deleted_at: Optional[datetime.datetime] = None, + description: Optional[str] = None, + board_id: Optional[str] = None, + item_order: Optional[Sequence[str]] = None, + title: Optional[str] = None + ): self.deleted_at = deleted_at self.description = description self.board_id = board_id @@ -15749,19 +17165,23 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteCertification(model.Model): """ - Dynamic writeable type for Certification removes: -ui_status, user_name, updated_at + Dynamic writeable type for Certification removes: + ui_status, user_name, updated_at - Attributes: - certification_status: Certification status: "certified" or "revoked" Valid values are: "certified", "revoked". - notes: Certification notes + Attributes: + certification_status: Certification status: "certified" or "revoked" Valid values are: "certified", "revoked". + notes: Certification notes """ + certification_status: Optional["CertificationStatus"] = None notes: Optional[str] = None - def __init__(self, *, - certification_status: Optional["CertificationStatus"] = None, - notes: Optional[str] = None): + def __init__( + self, + *, + certification_status: Optional["CertificationStatus"] = None, + notes: Optional[str] = None + ): self.certification_status = certification_status self.notes = notes @@ -15769,25 +17189,29 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteColorCollection(model.Model): """ - Dynamic writeable type for ColorCollection removes: -id + Dynamic writeable type for ColorCollection removes: + id - Attributes: - label: Label of color collection - categoricalPalettes: Array of categorical palette definitions - sequentialPalettes: Array of discrete palette definitions - divergingPalettes: Array of diverging palette definitions + Attributes: + label: Label of color collection + categoricalPalettes: Array of categorical palette definitions + sequentialPalettes: Array of discrete palette definitions + divergingPalettes: Array of diverging palette definitions """ + label: Optional[str] = None categoricalPalettes: Optional[Sequence["DiscretePalette"]] = None sequentialPalettes: Optional[Sequence["ContinuousPalette"]] = None divergingPalettes: Optional[Sequence["ContinuousPalette"]] = None - def __init__(self, *, - label: Optional[str] = None, - categoricalPalettes: Optional[Sequence["DiscretePalette"]] = None, - sequentialPalettes: Optional[Sequence["ContinuousPalette"]] = None, - divergingPalettes: Optional[Sequence["ContinuousPalette"]] = None): + def __init__( + self, + *, + label: Optional[str] = None, + categoricalPalettes: Optional[Sequence["DiscretePalette"]] = None, + sequentialPalettes: Optional[Sequence["ContinuousPalette"]] = None, + divergingPalettes: Optional[Sequence["ContinuousPalette"]] = None + ): self.label = label self.categoricalPalettes = categoricalPalettes self.sequentialPalettes = sequentialPalettes @@ -15797,31 +17221,35 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteContentFavorite(model.Model): """ - Dynamic writeable type for ContentFavorite removes: -id, look_id, dashboard_id, board_id, lookml_dashboard_id + Dynamic writeable type for ContentFavorite removes: + id, look_id, dashboard_id, board_id, lookml_dashboard_id - Attributes: - user_id: User Id which owns this ContentFavorite - content_metadata_id: Content Metadata Id associated with this ContentFavorite - look: Dynamic writeable type for LookBasic removes: -can, content_metadata_id, id, title - dashboard: Dynamic writeable type for DashboardBase removes: -can, content_favorite_id, content_metadata_id, description, hidden, id, model, query_timezone, readonly, refresh_interval, refresh_interval_to_i, title, user_id, slug, preferred_viewer - lookml_dashboard: Dynamic writeable type for DashboardBase removes: -can, content_favorite_id, content_metadata_id, description, hidden, id, model, query_timezone, readonly, refresh_interval, refresh_interval_to_i, title, user_id, slug, preferred_viewer + Attributes: + user_id: User Id which owns this ContentFavorite + content_metadata_id: Content Metadata Id associated with this ContentFavorite + look: Dynamic writeable type for LookBasic removes: + can, content_metadata_id, id, title + dashboard: Dynamic writeable type for DashboardBase removes: + can, content_favorite_id, content_metadata_id, description, hidden, id, model, query_timezone, readonly, refresh_interval, refresh_interval_to_i, title, user_id, slug, preferred_viewer + lookml_dashboard: Dynamic writeable type for DashboardBase removes: + can, content_favorite_id, content_metadata_id, description, hidden, id, model, query_timezone, readonly, refresh_interval, refresh_interval_to_i, title, user_id, slug, preferred_viewer """ + user_id: Optional[str] = None content_metadata_id: Optional[str] = None look: Optional["WriteLookBasic"] = None dashboard: Optional["WriteDashboardBase"] = None lookml_dashboard: Optional["WriteDashboardBase"] = None - def __init__(self, *, - user_id: Optional[str] = None, - content_metadata_id: Optional[str] = None, - look: Optional["WriteLookBasic"] = None, - dashboard: Optional["WriteDashboardBase"] = None, - lookml_dashboard: Optional["WriteDashboardBase"] = None): + def __init__( + self, + *, + user_id: Optional[str] = None, + content_metadata_id: Optional[str] = None, + look: Optional["WriteLookBasic"] = None, + dashboard: Optional["WriteDashboardBase"] = None, + lookml_dashboard: Optional["WriteDashboardBase"] = None + ): self.user_id = user_id self.content_metadata_id = content_metadata_id self.look = look @@ -15832,34 +17260,35 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteContentMeta(model.Model): """ - Dynamic writeable type for ContentMeta removes: -can, id, name, parent_id, dashboard_id, look_id, folder_id, homepage_id, agent_id, content_type, inheriting_id, slug + Dynamic writeable type for ContentMeta removes: + can, id, name, parent_id, dashboard_id, look_id, folder_id, homepage_id, agent_id, content_type, inheriting_id, slug - Attributes: - inherits: Whether content inherits its access levels from parent. Can be false only if the associated content is a folder, an agent or a board. + Attributes: + inherits: Whether content inherits its access levels from parent. Can be false only if the associated content is a folder, an agent or a board. """ + inherits: Optional[bool] = None - def __init__(self, *, - inherits: Optional[bool] = None): + def __init__(self, *, inherits: Optional[bool] = None): self.inherits = inherits @attr.s(auto_attribs=True, init=False) class WriteConversation(model.Model): """ - Dynamic writeable type for Conversation removes: -can, id, user_id, created_at, updated_at, messages, missing_agent, studio_conversation_id + Dynamic writeable type for Conversation removes: + can, id, user_id, created_at, updated_at, messages, missing_agent, studio_conversation_id - Attributes: - name: Conversation name - category: The category of the conversation (e.g., dashboard, conversation) - sources: Conversation sources - agent_id: Agent id - deleted: Is conversation soft deleted - conversation_agent: Dynamic writeable type for Agent removes: -can, id, created_by_name, created_by_first_name, created_by_last_name, created_by_avatar_url, has_inaccessible_source, golden_queries, created_at, updated_at, content_metadata_id, studio_agent_id + Attributes: + name: Conversation name + category: The category of the conversation (e.g., dashboard, conversation) + sources: Conversation sources + agent_id: Agent id + deleted: Is conversation soft deleted + conversation_agent: Dynamic writeable type for Agent removes: + can, id, created_by_name, created_by_first_name, created_by_last_name, created_by_avatar_url, has_inaccessible_source, golden_queries, created_at, updated_at, content_metadata_id, studio_agent_id """ + name: Optional[str] = None category: Optional[str] = None sources: Optional[Sequence["Source"]] = None @@ -15867,13 +17296,16 @@ class WriteConversation(model.Model): deleted: Optional[bool] = None conversation_agent: Optional["WriteAgent"] = None - def __init__(self, *, - name: Optional[str] = None, - category: Optional[str] = None, - sources: Optional[Sequence["Source"]] = None, - agent_id: Optional[str] = None, - deleted: Optional[bool] = None, - conversation_agent: Optional["WriteAgent"] = None): + def __init__( + self, + *, + name: Optional[str] = None, + category: Optional[str] = None, + sources: Optional[Sequence["Source"]] = None, + agent_id: Optional[str] = None, + deleted: Optional[bool] = None, + conversation_agent: Optional["WriteAgent"] = None + ): self.name = name self.category = category self.sources = sources @@ -15885,19 +17317,23 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteConversationMessage(model.Model): """ - Dynamic writeable type for ConversationMessage removes: -can, id, order + Dynamic writeable type for ConversationMessage removes: + can, id, order - Attributes: - message: Message content - type: Message type + Attributes: + message: Message content + type: Message type """ + message: Optional[MutableMapping[str, Any]] = None type: Optional[str] = None - def __init__(self, *, - message: Optional[MutableMapping[str, Any]] = None, - type: Optional[str] = None): + def __init__( + self, + *, + message: Optional[MutableMapping[str, Any]] = None, + type: Optional[str] = None + ): self.message = message self.type = type @@ -15908,34 +17344,35 @@ class WriteConversationMessages(model.Model): Attributes: messages: Array of conversation messages to create """ + messages: Optional[Sequence[Any]] = None - def __init__(self, *, - messages: Optional[Sequence[Any]] = None): + def __init__(self, *, messages: Optional[Sequence[Any]] = None): self.messages = messages @attr.s(auto_attribs=True, init=False) class WriteCreateDashboardFilter(model.Model): """ - Dynamic writeable type for CreateDashboardFilter removes: -id, field - - Attributes: - dashboard_id: Id of Dashboard - name: Name of filter - title: Title of filter - type: Type of filter: one of date, number, string, or field - default_value: Default value of filter - model: Model of filter (required if type = field) - explore: Explore of filter (required if type = field) - dimension: Dimension of filter (required if type = field) - row: Display order of this filter relative to other filters - listens_to_filters: Array of listeners for faceted filters - allow_multiple_values: Whether the filter allows multiple filter values (deprecated in the latest version of dashboards) - required: Whether the filter requires a value to run the dashboard - ui_config: The visual configuration for this filter. Used to set up how the UI for this filter should appear. + Dynamic writeable type for CreateDashboardFilter removes: + id, field + + Attributes: + dashboard_id: Id of Dashboard + name: Name of filter + title: Title of filter + type: Type of filter: one of date, number, string, or field + default_value: Default value of filter + model: Model of filter (required if type = field) + explore: Explore of filter (required if type = field) + dimension: Dimension of filter (required if type = field) + row: Display order of this filter relative to other filters + listens_to_filters: Array of listeners for faceted filters + allow_multiple_values: Whether the filter allows multiple filter values (deprecated in the latest version of dashboards) + required: Whether the filter requires a value to run the dashboard + ui_config: The visual configuration for this filter. Used to set up how the UI for this filter should appear. """ + dashboard_id: str name: str title: str @@ -15950,20 +17387,23 @@ class WriteCreateDashboardFilter(model.Model): required: Optional[bool] = None ui_config: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - dashboard_id: str, - name: str, - title: str, - type: str, - default_value: Optional[str] = None, - model: Optional[str] = None, - explore: Optional[str] = None, - dimension: Optional[str] = None, - row: Optional[int] = None, - listens_to_filters: Optional[Sequence[str]] = None, - allow_multiple_values: Optional[bool] = None, - required: Optional[bool] = None, - ui_config: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + dashboard_id: str, + name: str, + title: str, + type: str, + default_value: Optional[str] = None, + model: Optional[str] = None, + explore: Optional[str] = None, + dimension: Optional[str] = None, + row: Optional[int] = None, + listens_to_filters: Optional[Sequence[str]] = None, + allow_multiple_values: Optional[bool] = None, + required: Optional[bool] = None, + ui_config: Optional[MutableMapping[str, Any]] = None + ): self.dashboard_id = dashboard_id self.name = name self.title = title @@ -15982,17 +17422,18 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteCreateQueryTask(model.Model): """ - Dynamic writeable type for CreateQueryTask removes: -can + Dynamic writeable type for CreateQueryTask removes: + can - Attributes: - query_id: Id of query to run - result_format: Desired async query result format. Valid values are: "inline_json", "json", "json_detail", "json_fe", "json_bi", "csv", "html", "md", "txt", "xlsx", "gsxml", "sql", "odc". - source: Source of query task - deferred: Create the task but defer execution - look_id: Id of look associated with query. - dashboard_id: Id of dashboard associated with query. + Attributes: + query_id: Id of query to run + result_format: Desired async query result format. Valid values are: "inline_json", "json", "json_detail", "json_fe", "json_bi", "csv", "html", "md", "txt", "xlsx", "gsxml", "sql", "odc". + source: Source of query task + deferred: Create the task but defer execution + look_id: Id of look associated with query. + dashboard_id: Id of dashboard associated with query. """ + query_id: str result_format: "ResultFormat" source: Optional[str] = None @@ -16005,16 +17446,19 @@ class WriteCreateQueryTask(model.Model): "source": Optional[str], "deferred": Optional[bool], "look_id": Optional[str], - "dashboard_id": Optional[str] + "dashboard_id": Optional[str], } - def __init__(self, *, - query_id: str, - result_format: "ResultFormat", - source: Optional[str] = None, - deferred: Optional[bool] = None, - look_id: Optional[str] = None, - dashboard_id: Optional[str] = None): + def __init__( + self, + *, + query_id: str, + result_format: "ResultFormat", + source: Optional[str] = None, + deferred: Optional[bool] = None, + look_id: Optional[str] = None, + dashboard_id: Optional[str] = None + ): self.query_id = query_id self.result_format = result_format self.source = source @@ -16026,35 +17470,39 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteCredentialsApi3(model.Model): """ - Dynamic writeable type for CredentialsApi3 removes: -can, id, client_id, created_at, is_disabled, type, url + Dynamic writeable type for CredentialsApi3 removes: + can, id, client_id, created_at, is_disabled, type, url - Attributes: - purpose: User defined purpose for this credential. + Attributes: + purpose: User defined purpose for this credential. """ + purpose: Optional[str] = None - def __init__(self, *, - purpose: Optional[str] = None): + def __init__(self, *, purpose: Optional[str] = None): self.purpose = purpose @attr.s(auto_attribs=True, init=False) class WriteCredentialsEmail(model.Model): """ - Dynamic writeable type for CredentialsEmail removes: -can, created_at, user_id, is_disabled, logged_in_at, password_reset_url, account_setup_url, password_reset_url_expired, account_setup_url_expired, type, url, user_url + Dynamic writeable type for CredentialsEmail removes: + can, created_at, user_id, is_disabled, logged_in_at, password_reset_url, account_setup_url, password_reset_url_expired, account_setup_url_expired, type, url, user_url - Attributes: - email: EMail address used for user login - forced_password_reset_at_next_login: Force the user to change their password upon their next login + Attributes: + email: EMail address used for user login + forced_password_reset_at_next_login: Force the user to change their password upon their next login """ + email: Optional[str] = None forced_password_reset_at_next_login: Optional[bool] = None - def __init__(self, *, - email: Optional[str] = None, - forced_password_reset_at_next_login: Optional[bool] = None): + def __init__( + self, + *, + email: Optional[str] = None, + forced_password_reset_at_next_login: Optional[bool] = None + ): self.email = email self.forced_password_reset_at_next_login = forced_password_reset_at_next_login @@ -16062,43 +17510,44 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDashboard(model.Model): """ - Dynamic writeable type for Dashboard removes: -can, content_favorite_id, content_metadata_id, id, model, readonly, refresh_interval_to_i, created_at, dashboard_elements, dashboard_filters, dashboard_layouts, deleted_at, deleter_id, edit_uri, favorite_count, last_accessed_at, last_viewed_at, updated_at, last_updater_id, last_updater_name, user_name, view_count, usage_count, is_owner_disabled, url - - Attributes: - description: Description - hidden: Is Hidden - query_timezone: Timezone in which the Dashboard will run by default. - refresh_interval: Refresh Interval, as a time duration phrase like "2 hours 30 minutes". A number with no time units will be interpreted as whole seconds. - folder: Dynamic writeable type for FolderBase removes: -id, content_metadata_id, created_at, creator_id, child_count, external_id, is_embed, is_embed_shared_root, is_embed_users_root, is_personal, is_personal_descendant, is_shared_root, is_users_root, can - title: Dashboard Title - user_id: Id of User - slug: Content Metadata Slug - preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) - certification_metadata: Dynamic writeable type for Certification removes: -ui_status, user_name, updated_at - alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes - chat_enabled: Whether chat is enabled for this dashboard - background_color: Background color - crossfilter_enabled: Enables crossfiltering in dashboards - only available in dashboards-next (beta) - deleted: Whether or not a dashboard is 'soft' deleted. - enable_viz_full_screen: Allow visualizations to be viewed in full screen mode - filters_bar_collapsed: Sets the default state of the filters bar to collapsed or open - filters_location_top: Sets the default state of the filters location to top(true) or right(false) - load_configuration: configuration option that governs how dashboard loading will happen. - lookml_link_id: Links this dashboard to a particular LookML dashboard such that calling a **sync** operation on that LookML dashboard will update this dashboard to match. - show_filters_bar: Show filters bar. **Security Note:** This property only affects the *cosmetic* appearance of the dashboard, not a user's ability to access data. Hiding the filters bar does **NOT** prevent users from changing filters by other means. For information on how to set up secure data access control policies, see [Control User Access to Data](https://docs.cloud.google.com/looker/docs/r/api/control-access) - show_title: Show title - folder_id: Id of folder - text_tile_text_color: Color of text on text tiles - tile_background_color: Tile background color - tile_text_color: Tile text color - title_color: Title color - appearance: - preserve_desktop_layout: Whether to preserve the desktop layout on mobile viewports. i.e. don't force a single column layout on mobile. - download_settings: + Dynamic writeable type for Dashboard removes: + can, content_favorite_id, content_metadata_id, id, model, readonly, refresh_interval_to_i, created_at, dashboard_elements, dashboard_filters, dashboard_layouts, deleted_at, deleter_id, edit_uri, favorite_count, last_accessed_at, last_viewed_at, updated_at, last_updater_id, last_updater_name, user_name, view_count, usage_count, is_owner_disabled, url + + Attributes: + description: Description + hidden: Is Hidden + query_timezone: Timezone in which the Dashboard will run by default. + refresh_interval: Refresh Interval, as a time duration phrase like "2 hours 30 minutes". A number with no time units will be interpreted as whole seconds. + folder: Dynamic writeable type for FolderBase removes: + id, content_metadata_id, created_at, creator_id, child_count, external_id, is_embed, is_embed_shared_root, is_embed_users_root, is_personal, is_personal_descendant, is_shared_root, is_users_root, can + title: Dashboard Title + user_id: Id of User + slug: Content Metadata Slug + preferred_viewer: The preferred route for viewing this dashboard (ie: dashboards or dashboards-next) + certification_metadata: Dynamic writeable type for Certification removes: + ui_status, user_name, updated_at + alert_sync_with_dashboard_filter_enabled: Enables alerts to keep in sync with dashboard filter changes + chat_enabled: Whether chat is enabled for this dashboard + background_color: Background color + crossfilter_enabled: Enables crossfiltering in dashboards - only available in dashboards-next (beta) + deleted: Whether or not a dashboard is 'soft' deleted. + enable_viz_full_screen: Allow visualizations to be viewed in full screen mode + filters_bar_collapsed: Sets the default state of the filters bar to collapsed or open + filters_location_top: Sets the default state of the filters location to top(true) or right(false) + load_configuration: configuration option that governs how dashboard loading will happen. + lookml_link_id: Links this dashboard to a particular LookML dashboard such that calling a **sync** operation on that LookML dashboard will update this dashboard to match. + show_filters_bar: Show filters bar. **Security Note:** This property only affects the *cosmetic* appearance of the dashboard, not a user's ability to access data. Hiding the filters bar does **NOT** prevent users from changing filters by other means. For information on how to set up secure data access control policies, see [Control User Access to Data](https://docs.cloud.google.com/looker/docs/r/api/control-access) + show_title: Show title + folder_id: Id of folder + text_tile_text_color: Color of text on text tiles + tile_background_color: Tile background color + tile_text_color: Tile text color + title_color: Title color + appearance: + preserve_desktop_layout: Whether to preserve the desktop layout on mobile viewports. i.e. don't force a single column layout on mobile. + download_settings: """ + description: Optional[str] = None hidden: Optional[bool] = None query_timezone: Optional[str] = None @@ -16130,37 +17579,40 @@ class WriteDashboard(model.Model): preserve_desktop_layout: Optional[bool] = None download_settings: Optional["DashboardDownloadSettings"] = None - def __init__(self, *, - description: Optional[str] = None, - hidden: Optional[bool] = None, - query_timezone: Optional[str] = None, - refresh_interval: Optional[str] = None, - folder: Optional["WriteFolderBase"] = None, - title: Optional[str] = None, - user_id: Optional[str] = None, - slug: Optional[str] = None, - preferred_viewer: Optional[str] = None, - certification_metadata: Optional["WriteCertification"] = None, - alert_sync_with_dashboard_filter_enabled: Optional[bool] = None, - chat_enabled: Optional[bool] = None, - background_color: Optional[str] = None, - crossfilter_enabled: Optional[bool] = None, - deleted: Optional[bool] = None, - enable_viz_full_screen: Optional[bool] = None, - filters_bar_collapsed: Optional[bool] = None, - filters_location_top: Optional[bool] = None, - load_configuration: Optional[str] = None, - lookml_link_id: Optional[str] = None, - show_filters_bar: Optional[bool] = None, - show_title: Optional[bool] = None, - folder_id: Optional[str] = None, - text_tile_text_color: Optional[str] = None, - tile_background_color: Optional[str] = None, - tile_text_color: Optional[str] = None, - title_color: Optional[str] = None, - appearance: Optional["DashboardAppearance"] = None, - preserve_desktop_layout: Optional[bool] = None, - download_settings: Optional["DashboardDownloadSettings"] = None): + def __init__( + self, + *, + description: Optional[str] = None, + hidden: Optional[bool] = None, + query_timezone: Optional[str] = None, + refresh_interval: Optional[str] = None, + folder: Optional["WriteFolderBase"] = None, + title: Optional[str] = None, + user_id: Optional[str] = None, + slug: Optional[str] = None, + preferred_viewer: Optional[str] = None, + certification_metadata: Optional["WriteCertification"] = None, + alert_sync_with_dashboard_filter_enabled: Optional[bool] = None, + chat_enabled: Optional[bool] = None, + background_color: Optional[str] = None, + crossfilter_enabled: Optional[bool] = None, + deleted: Optional[bool] = None, + enable_viz_full_screen: Optional[bool] = None, + filters_bar_collapsed: Optional[bool] = None, + filters_location_top: Optional[bool] = None, + load_configuration: Optional[str] = None, + lookml_link_id: Optional[str] = None, + show_filters_bar: Optional[bool] = None, + show_title: Optional[bool] = None, + folder_id: Optional[str] = None, + text_tile_text_color: Optional[str] = None, + tile_background_color: Optional[str] = None, + tile_text_color: Optional[str] = None, + title_color: Optional[str] = None, + appearance: Optional["DashboardAppearance"] = None, + preserve_desktop_layout: Optional[bool] = None, + download_settings: Optional["DashboardDownloadSettings"] = None + ): self.description = description self.hidden = hidden self.query_timezone = query_timezone @@ -16171,7 +17623,9 @@ def __init__(self, *, self.slug = slug self.preferred_viewer = preferred_viewer self.certification_metadata = certification_metadata - self.alert_sync_with_dashboard_filter_enabled = alert_sync_with_dashboard_filter_enabled + self.alert_sync_with_dashboard_filter_enabled = ( + alert_sync_with_dashboard_filter_enabled + ) self.chat_enabled = chat_enabled self.background_color = background_color self.crossfilter_enabled = crossfilter_enabled @@ -16196,21 +17650,25 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDashboardBase(model.Model): """ - Dynamic writeable type for DashboardBase removes: -can, content_favorite_id, content_metadata_id, description, hidden, id, model, query_timezone, readonly, refresh_interval, refresh_interval_to_i, title, user_id, slug, preferred_viewer + Dynamic writeable type for DashboardBase removes: + can, content_favorite_id, content_metadata_id, description, hidden, id, model, query_timezone, readonly, refresh_interval, refresh_interval_to_i, title, user_id, slug, preferred_viewer - Attributes: - folder: Dynamic writeable type for FolderBase removes: -id, content_metadata_id, created_at, creator_id, child_count, external_id, is_embed, is_embed_shared_root, is_embed_users_root, is_personal, is_personal_descendant, is_shared_root, is_users_root, can - certification_metadata: Dynamic writeable type for Certification removes: -ui_status, user_name, updated_at + Attributes: + folder: Dynamic writeable type for FolderBase removes: + id, content_metadata_id, created_at, creator_id, child_count, external_id, is_embed, is_embed_shared_root, is_embed_users_root, is_personal, is_personal_descendant, is_shared_root, is_users_root, can + certification_metadata: Dynamic writeable type for Certification removes: + ui_status, user_name, updated_at """ + folder: Optional["WriteFolderBase"] = None certification_metadata: Optional["WriteCertification"] = None - def __init__(self, *, - folder: Optional["WriteFolderBase"] = None, - certification_metadata: Optional["WriteCertification"] = None): + def __init__( + self, + *, + folder: Optional["WriteFolderBase"] = None, + certification_metadata: Optional["WriteCertification"] = None + ): self.folder = folder self.certification_metadata = certification_metadata @@ -16218,39 +17676,40 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDashboardElement(model.Model): """ - Dynamic writeable type for DashboardElement removes: -can, body_text_as_html, edit_uri, id, lookml_link_id, note_text_as_html, refresh_interval_to_i, alert_count, title_text_as_html, subtitle_text_as_html - - Attributes: - body_text: Text tile body text - dashboard_id: Id of Dashboard - dashboard_layout_id: Id of Dashboard Layout - look: Dynamic writeable type for LookWithQuery removes: -can, content_metadata_id, id, content_favorite_id, created_at, deleted_at, deleter_id, embed_url, excel_file_url, favorite_count, google_spreadsheet_formula, image_embed_url, last_accessed_at, last_updater_id, last_viewed_at, model, public_slug, public_url, short_url, updated_at, user_name, view_count, usage_count, is_owner_disabled, url - look_id: Id Of Look - merge_result_id: ID of merge result - note_display: Note Display - note_state: Note State - note_text: Note Text - query: Dynamic writeable type for Query removes: -can, id, slug, share_url, expanded_share_url, url, has_table_calculations - query_id: Id Of Query - filter_id: ID of the filter this element represents - refresh_interval: Refresh Interval - result_maker: Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: -id, query_id - result_maker_id: ID of the ResultMakerLookup entry. - subtitle_text: Text tile subtitle text - title: Title of dashboard element - title_hidden: Whether title is hidden - title_text: Text tile title - type: Type - rich_content_json: JSON with all the properties required for rich editor and buttons elements - extension_id: Extension ID - aria_description: Custom ARIA description text - certification_metadata: Dynamic writeable type for Certification removes: -ui_status, user_name, updated_at + Dynamic writeable type for DashboardElement removes: + can, body_text_as_html, edit_uri, id, lookml_link_id, note_text_as_html, refresh_interval_to_i, alert_count, title_text_as_html, subtitle_text_as_html + + Attributes: + body_text: Text tile body text + dashboard_id: Id of Dashboard + dashboard_layout_id: Id of Dashboard Layout + look: Dynamic writeable type for LookWithQuery removes: + can, content_metadata_id, id, content_favorite_id, created_at, deleted_at, deleter_id, embed_url, excel_file_url, favorite_count, google_spreadsheet_formula, image_embed_url, last_accessed_at, last_updater_id, last_viewed_at, model, public_slug, public_url, short_url, updated_at, user_name, view_count, usage_count, is_owner_disabled, url + look_id: Id Of Look + merge_result_id: ID of merge result + note_display: Note Display + note_state: Note State + note_text: Note Text + query: Dynamic writeable type for Query removes: + can, id, slug, share_url, expanded_share_url, url, has_table_calculations + query_id: Id Of Query + filter_id: ID of the filter this element represents + refresh_interval: Refresh Interval + result_maker: Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: + id, query_id + result_maker_id: ID of the ResultMakerLookup entry. + subtitle_text: Text tile subtitle text + title: Title of dashboard element + title_hidden: Whether title is hidden + title_text: Text tile title + type: Type + rich_content_json: JSON with all the properties required for rich editor and buttons elements + extension_id: Extension ID + aria_description: Custom ARIA description text + certification_metadata: Dynamic writeable type for Certification removes: + ui_status, user_name, updated_at """ + body_text: Optional[str] = None dashboard_id: Optional[str] = None dashboard_layout_id: Optional[str] = None @@ -16276,31 +17735,36 @@ class WriteDashboardElement(model.Model): aria_description: Optional[str] = None certification_metadata: Optional["WriteCertification"] = None - def __init__(self, *, - body_text: Optional[str] = None, - dashboard_id: Optional[str] = None, - dashboard_layout_id: Optional[str] = None, - look: Optional["WriteLookWithQuery"] = None, - look_id: Optional[str] = None, - merge_result_id: Optional[str] = None, - note_display: Optional[str] = None, - note_state: Optional[str] = None, - note_text: Optional[str] = None, - query: Optional["WriteQuery"] = None, - query_id: Optional[str] = None, - filter_id: Optional[str] = None, - refresh_interval: Optional[str] = None, - result_maker: Optional["WriteResultMakerWithIdVisConfigAndDynamicFields"] = None, - result_maker_id: Optional[str] = None, - subtitle_text: Optional[str] = None, - title: Optional[str] = None, - title_hidden: Optional[bool] = None, - title_text: Optional[str] = None, - type: Optional[str] = None, - rich_content_json: Optional[str] = None, - extension_id: Optional[str] = None, - aria_description: Optional[str] = None, - certification_metadata: Optional["WriteCertification"] = None): + def __init__( + self, + *, + body_text: Optional[str] = None, + dashboard_id: Optional[str] = None, + dashboard_layout_id: Optional[str] = None, + look: Optional["WriteLookWithQuery"] = None, + look_id: Optional[str] = None, + merge_result_id: Optional[str] = None, + note_display: Optional[str] = None, + note_state: Optional[str] = None, + note_text: Optional[str] = None, + query: Optional["WriteQuery"] = None, + query_id: Optional[str] = None, + filter_id: Optional[str] = None, + refresh_interval: Optional[str] = None, + result_maker: Optional[ + "WriteResultMakerWithIdVisConfigAndDynamicFields" + ] = None, + result_maker_id: Optional[str] = None, + subtitle_text: Optional[str] = None, + title: Optional[str] = None, + title_hidden: Optional[bool] = None, + title_text: Optional[str] = None, + type: Optional[str] = None, + rich_content_json: Optional[str] = None, + extension_id: Optional[str] = None, + aria_description: Optional[str] = None, + certification_metadata: Optional["WriteCertification"] = None + ): self.body_text = body_text self.dashboard_id = dashboard_id self.dashboard_layout_id = dashboard_layout_id @@ -16330,23 +17794,24 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDashboardFilter(model.Model): """ - Dynamic writeable type for DashboardFilter removes: -can, id, dashboard_id, field + Dynamic writeable type for DashboardFilter removes: + can, id, dashboard_id, field - Attributes: - name: Name of filter - title: Title of filter - type: Type of filter: one of date, number, string, or field - default_value: Default value of filter - model: Model of filter (required if type = field) - explore: Explore of filter (required if type = field) - dimension: Dimension of filter (required if type = field) - row: Display order of this filter relative to other filters - listens_to_filters: Array of listeners for faceted filters - allow_multiple_values: Whether the filter allows multiple filter values (deprecated in the latest version of dashboards) - required: Whether the filter requires a value to run the dashboard - ui_config: The visual configuration for this filter. Used to set up how the UI for this filter should appear. + Attributes: + name: Name of filter + title: Title of filter + type: Type of filter: one of date, number, string, or field + default_value: Default value of filter + model: Model of filter (required if type = field) + explore: Explore of filter (required if type = field) + dimension: Dimension of filter (required if type = field) + row: Display order of this filter relative to other filters + listens_to_filters: Array of listeners for faceted filters + allow_multiple_values: Whether the filter allows multiple filter values (deprecated in the latest version of dashboards) + required: Whether the filter requires a value to run the dashboard + ui_config: The visual configuration for this filter. Used to set up how the UI for this filter should appear. """ + name: Optional[str] = None title: Optional[str] = None type: Optional[str] = None @@ -16360,19 +17825,22 @@ class WriteDashboardFilter(model.Model): required: Optional[bool] = None ui_config: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - name: Optional[str] = None, - title: Optional[str] = None, - type: Optional[str] = None, - default_value: Optional[str] = None, - model: Optional[str] = None, - explore: Optional[str] = None, - dimension: Optional[str] = None, - row: Optional[int] = None, - listens_to_filters: Optional[Sequence[str]] = None, - allow_multiple_values: Optional[bool] = None, - required: Optional[bool] = None, - ui_config: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + name: Optional[str] = None, + title: Optional[str] = None, + type: Optional[str] = None, + default_value: Optional[str] = None, + model: Optional[str] = None, + explore: Optional[str] = None, + dimension: Optional[str] = None, + row: Optional[int] = None, + listens_to_filters: Optional[Sequence[str]] = None, + allow_multiple_values: Optional[bool] = None, + required: Optional[bool] = None, + ui_config: Optional[MutableMapping[str, Any]] = None + ): self.name = name self.title = title self.type = type @@ -16390,20 +17858,21 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDashboardLayout(model.Model): """ - Dynamic writeable type for DashboardLayout removes: -can, id, deleted, dashboard_title, dashboard_layout_components + Dynamic writeable type for DashboardLayout removes: + can, id, deleted, dashboard_title, dashboard_layout_components - Attributes: - dashboard_id: Id of Dashboard - type: Type - active: Is Active - column_width: Column Width - width: Width - label: Label - description: Description - order: Order - lookml_link_id: LookML link ID (stable name) + Attributes: + dashboard_id: Id of Dashboard + type: Type + active: Is Active + column_width: Column Width + width: Width + label: Label + description: Description + order: Order + lookml_link_id: LookML link ID (stable name) """ + dashboard_id: Optional[str] = None type: Optional[str] = None active: Optional[bool] = None @@ -16414,16 +17883,19 @@ class WriteDashboardLayout(model.Model): order: Optional[int] = None lookml_link_id: Optional[str] = None - def __init__(self, *, - dashboard_id: Optional[str] = None, - type: Optional[str] = None, - active: Optional[bool] = None, - column_width: Optional[int] = None, - width: Optional[int] = None, - label: Optional[str] = None, - description: Optional[str] = None, - order: Optional[int] = None, - lookml_link_id: Optional[str] = None): + def __init__( + self, + *, + dashboard_id: Optional[str] = None, + type: Optional[str] = None, + active: Optional[bool] = None, + column_width: Optional[int] = None, + width: Optional[int] = None, + label: Optional[str] = None, + description: Optional[str] = None, + order: Optional[int] = None, + lookml_link_id: Optional[str] = None + ): self.dashboard_id = dashboard_id self.type = type self.active = active @@ -16438,22 +17910,23 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDashboardLayoutComponent(model.Model): """ - Dynamic writeable type for DashboardLayoutComponent removes: -can, id, element_title, element_title_hidden, vis_type + Dynamic writeable type for DashboardLayoutComponent removes: + can, id, element_title, element_title_hidden, vis_type - Attributes: - dashboard_layout_id: Id of Dashboard Layout - dashboard_element_id: Id Of Dashboard Element - row: Row - column: Column - width: Width - height: Height - deleted: Whether or not the dashboard layout component is deleted - granular_row: Row (granular layout) - granular_column: Column (granular layout) - granular_width: Width (granular layout) - granular_height: Height (granular layout) + Attributes: + dashboard_layout_id: Id of Dashboard Layout + dashboard_element_id: Id Of Dashboard Element + row: Row + column: Column + width: Width + height: Height + deleted: Whether or not the dashboard layout component is deleted + granular_row: Row (granular layout) + granular_column: Column (granular layout) + granular_width: Width (granular layout) + granular_height: Height (granular layout) """ + dashboard_layout_id: Optional[str] = None dashboard_element_id: Optional[str] = None row: Optional[int] = None @@ -16466,18 +17939,21 @@ class WriteDashboardLayoutComponent(model.Model): granular_width: Optional[int] = None granular_height: Optional[int] = None - def __init__(self, *, - dashboard_layout_id: Optional[str] = None, - dashboard_element_id: Optional[str] = None, - row: Optional[int] = None, - column: Optional[int] = None, - width: Optional[int] = None, - height: Optional[int] = None, - deleted: Optional[bool] = None, - granular_row: Optional[int] = None, - granular_column: Optional[int] = None, - granular_width: Optional[int] = None, - granular_height: Optional[int] = None): + def __init__( + self, + *, + dashboard_layout_id: Optional[str] = None, + dashboard_element_id: Optional[str] = None, + row: Optional[int] = None, + column: Optional[int] = None, + width: Optional[int] = None, + height: Optional[int] = None, + deleted: Optional[bool] = None, + granular_row: Optional[int] = None, + granular_column: Optional[int] = None, + granular_width: Optional[int] = None, + granular_height: Optional[int] = None + ): self.dashboard_layout_id = dashboard_layout_id self.dashboard_element_id = dashboard_element_id self.row = row @@ -16494,19 +17970,20 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDashboardLookml(model.Model): """ - Dynamic writeable type for DashboardLookml removes: -dashboard_id + Dynamic writeable type for DashboardLookml removes: + dashboard_id - Attributes: - folder_id: (Write-Only) Id of the folder - lookml: lookml of UDD + Attributes: + folder_id: (Write-Only) Id of the folder + lookml: lookml of UDD """ + folder_id: Optional[str] = None lookml: Optional[str] = None - def __init__(self, *, - folder_id: Optional[str] = None, - lookml: Optional[str] = None): + def __init__( + self, *, folder_id: Optional[str] = None, lookml: Optional[str] = None + ): self.folder_id = folder_id self.lookml = lookml @@ -16514,19 +17991,20 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDatagroup(model.Model): """ - Dynamic writeable type for Datagroup removes: -can, created_at, id, model_name, name, trigger_check_at, trigger_error, trigger_value + Dynamic writeable type for Datagroup removes: + can, created_at, id, model_name, name, trigger_check_at, trigger_error, trigger_value - Attributes: - stale_before: UNIX timestamp before which cache entries are considered stale. Cannot be in the future. - triggered_at: UNIX timestamp at which this entry became triggered. Cannot be in the future. + Attributes: + stale_before: UNIX timestamp before which cache entries are considered stale. Cannot be in the future. + triggered_at: UNIX timestamp at which this entry became triggered. Cannot be in the future. """ + stale_before: Optional[int] = None triggered_at: Optional[int] = None - def __init__(self, *, - stale_before: Optional[int] = None, - triggered_at: Optional[int] = None): + def __init__( + self, *, stale_before: Optional[int] = None, triggered_at: Optional[int] = None + ): self.stale_before = stale_before self.triggered_at = triggered_at @@ -16534,59 +18012,60 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDBConnection(model.Model): """ - Dynamic writeable type for DBConnection removes: -can, dialect, snippets, pdts_enabled, named_driver_version_actual, has_password, uses_oauth, uses_instance_oauth, uses_service_auth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed, default_bq_connection, p4sa_name - - Attributes: - name: Name of the connection. Also used as the unique identifier - named_driver_version_requested: Requested JDBC driver version name - host: Host name/address of server; or the string 'localhost' in case of a connection over an SSH tunnel. - port: Port number on server. If the connection is over an SSH tunnel, then the local port associated with the SSH tunnel. - username: Username for server authentication - password: (Write-Only) Password for server authentication - uses_key_pair_auth: Whether the connection uses key-pair for authentication. - certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). - file_type: (Write-Only) Certificate keyfile type - .json, .p8 or .p12 - database: Database name - db_timezone: Time zone of database - query_timezone: Timezone to use in queries - schema: Schema name - max_connections: Maximum number of concurrent connection to use - max_queries: Maximum number of concurrent queries to begin on this connection - max_queries_per_user: Maximum number of concurrent queries per user to begin on this connection - max_billing_gigabytes: Maximum size of query in GBs (BigQuery only, can be a user_attribute name) - ssl: Use SSL/TLS when connecting to server - verify_ssl: Verify the SSL - tmp_db_name: Name of temporary database (if used) - tmp_db_host: Name of temporary host (if used) - jdbc_additional_params: Additional params to add to JDBC connection string - pool_timeout: Connection Pool Timeout, in seconds - dialect_name: (Read/Write) SQL Dialect name - user_db_credentials: (Limited access feature) Are per user db credentials enabled. Enabling will remove previously set username and password - user_attribute_fields: Fields whose values map to user attribute names - maintenance_cron: Cron string specifying when maintenance such as PDT trigger checks and drops should be performed - sql_runner_precache_tables: Precache tables in the SQL Runner - sql_writing_with_info_schema: Fetch Information Schema For SQL Writing - after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature - pdt_context_override: Dynamic writeable type for DBConnectionOverride removes: -has_password - custom_local_port: This field is only applicable to connections over an SSH Tunnel. The value of this field would be the local port associated with the SSH tunnel if configured manually. Otherwise either enter NULL or exclude this field. - tunnel_id: The Id of the ssh tunnel this connection uses - uses_tns: Enable Transparent Network Substrate (TNS) connections - pdt_concurrency: Maximum number of threads to use to build PDTs in parallel - disable_context_comment: When disable_context_comment is true comment will not be added to SQL - oauth_application_id: An External OAuth Application to use for authenticating to the database - always_retry_failed_builds: When true, error PDTs will be retried every regenerator cycle - uses_application_default_credentials: Whether the connection should authenticate with the Application Default Credentials of the host environment (limited to GCP and certain dialects). - impersonated_service_account: An alternative Service Account to use for querying datasets (used primarily with `uses_application_default_credentials`) (limited to GCP and certain dialects). - cost_estimate_enabled: When true, query cost estimate will be displayed in explore. - pdt_api_control_enabled: PDT builds on this connection can be kicked off and cancelled via API. - connection_pooling: Enable database connection pooling. - bq_storage_project_id: The project id of the default BigQuery storage project. - bq_roles_verified: When true, represents that all project roles have been verified. - query_holding_disabled: Disable query holding for this connection. - service_name: Service name used for connections with TNS enabled + Dynamic writeable type for DBConnection removes: + can, dialect, snippets, pdts_enabled, named_driver_version_actual, has_password, uses_oauth, uses_instance_oauth, uses_service_auth, supports_data_studio_link, created_at, user_id, example, last_regen_at, last_reap_at, managed, default_bq_connection, p4sa_name + + Attributes: + name: Name of the connection. Also used as the unique identifier + named_driver_version_requested: Requested JDBC driver version name + host: Host name/address of server; or the string 'localhost' in case of a connection over an SSH tunnel. + port: Port number on server. If the connection is over an SSH tunnel, then the local port associated with the SSH tunnel. + username: Username for server authentication + password: (Write-Only) Password for server authentication + uses_key_pair_auth: Whether the connection uses key-pair for authentication. + certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). + file_type: (Write-Only) Certificate keyfile type - .json, .p8 or .p12 + database: Database name + db_timezone: Time zone of database + query_timezone: Timezone to use in queries + schema: Schema name + max_connections: Maximum number of concurrent connection to use + max_queries: Maximum number of concurrent queries to begin on this connection + max_queries_per_user: Maximum number of concurrent queries per user to begin on this connection + max_billing_gigabytes: Maximum size of query in GBs (BigQuery only, can be a user_attribute name) + ssl: Use SSL/TLS when connecting to server + verify_ssl: Verify the SSL + tmp_db_name: Name of temporary database (if used) + tmp_db_host: Name of temporary host (if used) + jdbc_additional_params: Additional params to add to JDBC connection string + pool_timeout: Connection Pool Timeout, in seconds + dialect_name: (Read/Write) SQL Dialect name + user_db_credentials: (Limited access feature) Are per user db credentials enabled. Enabling will remove previously set username and password + user_attribute_fields: Fields whose values map to user attribute names + maintenance_cron: Cron string specifying when maintenance such as PDT trigger checks and drops should be performed + sql_runner_precache_tables: Precache tables in the SQL Runner + sql_writing_with_info_schema: Fetch Information Schema For SQL Writing + after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + pdt_context_override: Dynamic writeable type for DBConnectionOverride removes: + has_password + custom_local_port: This field is only applicable to connections over an SSH Tunnel. The value of this field would be the local port associated with the SSH tunnel if configured manually. Otherwise either enter NULL or exclude this field. + tunnel_id: The Id of the ssh tunnel this connection uses + uses_tns: Enable Transparent Network Substrate (TNS) connections + pdt_concurrency: Maximum number of threads to use to build PDTs in parallel + disable_context_comment: When disable_context_comment is true comment will not be added to SQL + oauth_application_id: An External OAuth Application to use for authenticating to the database + always_retry_failed_builds: When true, error PDTs will be retried every regenerator cycle + uses_application_default_credentials: Whether the connection should authenticate with the Application Default Credentials of the host environment (limited to GCP and certain dialects). + impersonated_service_account: An alternative Service Account to use for querying datasets (used primarily with `uses_application_default_credentials`) (limited to GCP and certain dialects). + cost_estimate_enabled: When true, query cost estimate will be displayed in explore. + pdt_api_control_enabled: PDT builds on this connection can be kicked off and cancelled via API. + connection_pooling: Enable database connection pooling. + bq_storage_project_id: The project id of the default BigQuery storage project. + bq_roles_verified: When true, represents that all project roles have been verified. + query_holding_disabled: Disable query holding for this connection. + service_name: Service name used for connections with TNS enabled """ + name: Optional[str] = None named_driver_version_requested: Optional[str] = None host: Optional[str] = None @@ -16635,54 +18114,57 @@ class WriteDBConnection(model.Model): query_holding_disabled: Optional[bool] = None service_name: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - named_driver_version_requested: Optional[str] = None, - host: Optional[str] = None, - port: Optional[str] = None, - username: Optional[str] = None, - password: Optional[str] = None, - uses_key_pair_auth: Optional[bool] = None, - certificate: Optional[str] = None, - file_type: Optional[str] = None, - database: Optional[str] = None, - db_timezone: Optional[str] = None, - query_timezone: Optional[str] = None, - schema: Optional[str] = None, - max_connections: Optional[int] = None, - max_queries: Optional[int] = None, - max_queries_per_user: Optional[int] = None, - max_billing_gigabytes: Optional[str] = None, - ssl: Optional[bool] = None, - verify_ssl: Optional[bool] = None, - tmp_db_name: Optional[str] = None, - tmp_db_host: Optional[str] = None, - jdbc_additional_params: Optional[str] = None, - pool_timeout: Optional[int] = None, - dialect_name: Optional[str] = None, - user_db_credentials: Optional[bool] = None, - user_attribute_fields: Optional[Sequence[str]] = None, - maintenance_cron: Optional[str] = None, - sql_runner_precache_tables: Optional[bool] = None, - sql_writing_with_info_schema: Optional[bool] = None, - after_connect_statements: Optional[str] = None, - pdt_context_override: Optional["WriteDBConnectionOverride"] = None, - custom_local_port: Optional[int] = None, - tunnel_id: Optional[str] = None, - uses_tns: Optional[bool] = None, - pdt_concurrency: Optional[int] = None, - disable_context_comment: Optional[bool] = None, - oauth_application_id: Optional[str] = None, - always_retry_failed_builds: Optional[bool] = None, - uses_application_default_credentials: Optional[bool] = None, - impersonated_service_account: Optional[str] = None, - cost_estimate_enabled: Optional[bool] = None, - pdt_api_control_enabled: Optional[bool] = None, - connection_pooling: Optional[bool] = None, - bq_storage_project_id: Optional[str] = None, - bq_roles_verified: Optional[bool] = None, - query_holding_disabled: Optional[bool] = None, - service_name: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + named_driver_version_requested: Optional[str] = None, + host: Optional[str] = None, + port: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + uses_key_pair_auth: Optional[bool] = None, + certificate: Optional[str] = None, + file_type: Optional[str] = None, + database: Optional[str] = None, + db_timezone: Optional[str] = None, + query_timezone: Optional[str] = None, + schema: Optional[str] = None, + max_connections: Optional[int] = None, + max_queries: Optional[int] = None, + max_queries_per_user: Optional[int] = None, + max_billing_gigabytes: Optional[str] = None, + ssl: Optional[bool] = None, + verify_ssl: Optional[bool] = None, + tmp_db_name: Optional[str] = None, + tmp_db_host: Optional[str] = None, + jdbc_additional_params: Optional[str] = None, + pool_timeout: Optional[int] = None, + dialect_name: Optional[str] = None, + user_db_credentials: Optional[bool] = None, + user_attribute_fields: Optional[Sequence[str]] = None, + maintenance_cron: Optional[str] = None, + sql_runner_precache_tables: Optional[bool] = None, + sql_writing_with_info_schema: Optional[bool] = None, + after_connect_statements: Optional[str] = None, + pdt_context_override: Optional["WriteDBConnectionOverride"] = None, + custom_local_port: Optional[int] = None, + tunnel_id: Optional[str] = None, + uses_tns: Optional[bool] = None, + pdt_concurrency: Optional[int] = None, + disable_context_comment: Optional[bool] = None, + oauth_application_id: Optional[str] = None, + always_retry_failed_builds: Optional[bool] = None, + uses_application_default_credentials: Optional[bool] = None, + impersonated_service_account: Optional[str] = None, + cost_estimate_enabled: Optional[bool] = None, + pdt_api_control_enabled: Optional[bool] = None, + connection_pooling: Optional[bool] = None, + bq_storage_project_id: Optional[str] = None, + bq_roles_verified: Optional[bool] = None, + query_holding_disabled: Optional[bool] = None, + service_name: Optional[str] = None + ): self.name = name self.named_driver_version_requested = named_driver_version_requested self.host = host @@ -16735,33 +18217,34 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteDBConnectionOverride(model.Model): """ - Dynamic writeable type for DBConnectionOverride removes: -has_password - - Attributes: - context: Context in which to override (`pdt` is the only allowed value) - host: Host name/address of server - pdt_host: Host name/address of server (same as host) - port: Port number on server - pdt_port: Port number on server (same as port) - username: Username for server authentication - pdt_username: Username for server authentication (same as username) - password: (Write-Only) Password for server authentication - pdt_password: (Write-Only) Password for server authentication (same as password) - certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). - pdt_certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect) (same as certificate). - file_type: (Write-Only) Certificate keyfile type - .json or .p12 - pdt_file_type: (Write-Only) Certificate keyfile type - .json or .p12 (same as file_type) - database: Database name - pdt_database: Database name (same as database) - schema: Schema name - pdt_schema: Schema name (same as schema) - jdbc_additional_params: Additional params to add to JDBC connection string - pdt_jdbc_additional_params: Additional params to add to JDBC connection string (same as jdbc_additional_params) - after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature - pdt_after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature (same as after_connect_statements) - pdt_service_name: Service name used for connections with TNS enabled + Dynamic writeable type for DBConnectionOverride removes: + has_password + + Attributes: + context: Context in which to override (`pdt` is the only allowed value) + host: Host name/address of server + pdt_host: Host name/address of server (same as host) + port: Port number on server + pdt_port: Port number on server (same as port) + username: Username for server authentication + pdt_username: Username for server authentication (same as username) + password: (Write-Only) Password for server authentication + pdt_password: (Write-Only) Password for server authentication (same as password) + certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect). + pdt_certificate: (Write-Only) Base64 encoded Certificate body for server authentication (when appropriate for dialect) (same as certificate). + file_type: (Write-Only) Certificate keyfile type - .json or .p12 + pdt_file_type: (Write-Only) Certificate keyfile type - .json or .p12 (same as file_type) + database: Database name + pdt_database: Database name (same as database) + schema: Schema name + pdt_schema: Schema name (same as schema) + jdbc_additional_params: Additional params to add to JDBC connection string + pdt_jdbc_additional_params: Additional params to add to JDBC connection string (same as jdbc_additional_params) + after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature + pdt_after_connect_statements: SQL statements (semicolon separated) to issue after connecting to the database. Requires `custom_after_connect_statements` license feature (same as after_connect_statements) + pdt_service_name: Service name used for connections with TNS enabled """ + context: Optional[str] = None host: Optional[str] = None pdt_host: Optional[str] = None @@ -16785,29 +18268,32 @@ class WriteDBConnectionOverride(model.Model): pdt_after_connect_statements: Optional[str] = None pdt_service_name: Optional[str] = None - def __init__(self, *, - context: Optional[str] = None, - host: Optional[str] = None, - pdt_host: Optional[str] = None, - port: Optional[str] = None, - pdt_port: Optional[str] = None, - username: Optional[str] = None, - pdt_username: Optional[str] = None, - password: Optional[str] = None, - pdt_password: Optional[str] = None, - certificate: Optional[str] = None, - pdt_certificate: Optional[str] = None, - file_type: Optional[str] = None, - pdt_file_type: Optional[str] = None, - database: Optional[str] = None, - pdt_database: Optional[str] = None, - schema: Optional[str] = None, - pdt_schema: Optional[str] = None, - jdbc_additional_params: Optional[str] = None, - pdt_jdbc_additional_params: Optional[str] = None, - after_connect_statements: Optional[str] = None, - pdt_after_connect_statements: Optional[str] = None, - pdt_service_name: Optional[str] = None): + def __init__( + self, + *, + context: Optional[str] = None, + host: Optional[str] = None, + pdt_host: Optional[str] = None, + port: Optional[str] = None, + pdt_port: Optional[str] = None, + username: Optional[str] = None, + pdt_username: Optional[str] = None, + password: Optional[str] = None, + pdt_password: Optional[str] = None, + certificate: Optional[str] = None, + pdt_certificate: Optional[str] = None, + file_type: Optional[str] = None, + pdt_file_type: Optional[str] = None, + database: Optional[str] = None, + pdt_database: Optional[str] = None, + schema: Optional[str] = None, + pdt_schema: Optional[str] = None, + jdbc_additional_params: Optional[str] = None, + pdt_jdbc_additional_params: Optional[str] = None, + after_connect_statements: Optional[str] = None, + pdt_after_connect_statements: Optional[str] = None, + pdt_service_name: Optional[str] = None + ): self.context = context self.host = host self.pdt_host = pdt_host @@ -16835,22 +18321,23 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteEmbedConfig(model.Model): """ - Dynamic writeable type for EmbedConfig removes: -permissions, embed_enabled + Dynamic writeable type for EmbedConfig removes: + permissions, embed_enabled - Attributes: - domain_allowlist: List of domains to allow for embedding - alert_url_allowlist: List of base urls to allow for alert/schedule - alert_url_param_owner: Owner of who defines the alert/schedule params on the base url - alert_url_label: Label for the alert/schedule url - sso_auth_enabled: Is SSO embedding enabled for this Looker - embed_cookieless_v2: Is Cookieless embedding enabled for this Looker - embed_content_navigation: Is embed content navigation enabled for this looker - embed_content_management: Is embed content management enabled for this Looker - strict_sameorigin_for_login: When true, prohibits the use of Looker login pages in non-Looker iframes. When false, Looker login pages may be used in non-Looker hosted iframes. - look_filters: When true, filters are enabled on embedded Looks - hide_look_navigation: When true, removes navigation to Looks from embedded dashboards and explores. + Attributes: + domain_allowlist: List of domains to allow for embedding + alert_url_allowlist: List of base urls to allow for alert/schedule + alert_url_param_owner: Owner of who defines the alert/schedule params on the base url + alert_url_label: Label for the alert/schedule url + sso_auth_enabled: Is SSO embedding enabled for this Looker + embed_cookieless_v2: Is Cookieless embedding enabled for this Looker + embed_content_navigation: Is embed content navigation enabled for this looker + embed_content_management: Is embed content management enabled for this Looker + strict_sameorigin_for_login: When true, prohibits the use of Looker login pages in non-Looker iframes. When false, Looker login pages may be used in non-Looker hosted iframes. + look_filters: When true, filters are enabled on embedded Looks + hide_look_navigation: When true, removes navigation to Looks from embedded dashboards and explores. """ + domain_allowlist: Optional[Sequence[str]] = None alert_url_allowlist: Optional[Sequence[str]] = None alert_url_param_owner: Optional[str] = None @@ -16863,18 +18350,21 @@ class WriteEmbedConfig(model.Model): look_filters: Optional[bool] = None hide_look_navigation: Optional[bool] = None - def __init__(self, *, - domain_allowlist: Optional[Sequence[str]] = None, - alert_url_allowlist: Optional[Sequence[str]] = None, - alert_url_param_owner: Optional[str] = None, - alert_url_label: Optional[str] = None, - sso_auth_enabled: Optional[bool] = None, - embed_cookieless_v2: Optional[bool] = None, - embed_content_navigation: Optional[bool] = None, - embed_content_management: Optional[bool] = None, - strict_sameorigin_for_login: Optional[bool] = None, - look_filters: Optional[bool] = None, - hide_look_navigation: Optional[bool] = None): + def __init__( + self, + *, + domain_allowlist: Optional[Sequence[str]] = None, + alert_url_allowlist: Optional[Sequence[str]] = None, + alert_url_param_owner: Optional[str] = None, + alert_url_label: Optional[str] = None, + sso_auth_enabled: Optional[bool] = None, + embed_cookieless_v2: Optional[bool] = None, + embed_content_navigation: Optional[bool] = None, + embed_content_management: Optional[bool] = None, + strict_sameorigin_for_login: Optional[bool] = None, + look_filters: Optional[bool] = None, + hide_look_navigation: Optional[bool] = None + ): self.domain_allowlist = domain_allowlist self.alert_url_allowlist = alert_url_allowlist self.alert_url_param_owner = alert_url_param_owner @@ -16891,22 +18381,26 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteEmbedSecret(model.Model): """ - Dynamic writeable type for EmbedSecret removes: -created_at, id, secret, user_id + Dynamic writeable type for EmbedSecret removes: + created_at, id, secret, user_id - Attributes: - algorithm: Signing algorithm to use with this secret. Either `hmac/sha-256`(default) or `hmac/sha-1` - enabled: Is this secret currently enabled - secret_type: Field to distinguish between SSO secrets and JWT secrets Valid values are: "SSO", "JWT". + Attributes: + algorithm: Signing algorithm to use with this secret. Either `hmac/sha-256`(default) or `hmac/sha-1` + enabled: Is this secret currently enabled + secret_type: Field to distinguish between SSO secrets and JWT secrets Valid values are: "SSO", "JWT". """ + algorithm: Optional[str] = None enabled: Optional[bool] = None secret_type: Optional["SecretType"] = None - def __init__(self, *, - algorithm: Optional[str] = None, - enabled: Optional[bool] = None, - secret_type: Optional["SecretType"] = None): + def __init__( + self, + *, + algorithm: Optional[str] = None, + enabled: Optional[bool] = None, + secret_type: Optional["SecretType"] = None + ): self.algorithm = algorithm self.enabled = enabled self.secret_type = secret_type @@ -16915,17 +18409,18 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteExternalOauthApplication(model.Model): """ - Dynamic writeable type for ExternalOauthApplication removes: -can, id, created_at + Dynamic writeable type for ExternalOauthApplication removes: + can, id, created_at - Attributes: - name: The name of this application. For Snowflake connections, this should be the name of the host database. - client_id: The OAuth Client ID for this application - client_secret: (Write-Only) The OAuth Client Secret for this application - tenant_id: The OAuth Tenant ID for this application - dialect_name: The database dialect for this application. - bi_directional_data_access: Whether this application supports bi-directional data access. + Attributes: + name: The name of this application. For Snowflake connections, this should be the name of the host database. + client_id: The OAuth Client ID for this application + client_secret: (Write-Only) The OAuth Client Secret for this application + tenant_id: The OAuth Tenant ID for this application + dialect_name: The database dialect for this application. + bi_directional_data_access: Whether this application supports bi-directional data access. """ + name: Optional[str] = None client_id: Optional[str] = None client_secret: Optional[str] = None @@ -16933,13 +18428,16 @@ class WriteExternalOauthApplication(model.Model): dialect_name: Optional[str] = None bi_directional_data_access: Optional[bool] = None - def __init__(self, *, - name: Optional[str] = None, - client_id: Optional[str] = None, - client_secret: Optional[str] = None, - tenant_id: Optional[str] = None, - dialect_name: Optional[str] = None, - bi_directional_data_access: Optional[bool] = None): + def __init__( + self, + *, + name: Optional[str] = None, + client_id: Optional[str] = None, + client_secret: Optional[str] = None, + tenant_id: Optional[str] = None, + dialect_name: Optional[str] = None, + bi_directional_data_access: Optional[bool] = None + ): self.name = name self.client_id = client_id self.client_secret = client_secret @@ -16951,19 +18449,18 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteFolderBase(model.Model): """ - Dynamic writeable type for FolderBase removes: -id, content_metadata_id, created_at, creator_id, child_count, external_id, is_embed, is_embed_shared_root, is_embed_users_root, is_personal, is_personal_descendant, is_shared_root, is_users_root, can + Dynamic writeable type for FolderBase removes: + id, content_metadata_id, created_at, creator_id, child_count, external_id, is_embed, is_embed_shared_root, is_embed_users_root, is_personal, is_personal_descendant, is_shared_root, is_users_root, can - Attributes: - name: Unique Name - parent_id: Id of Parent. If the parent id is null, this is a root-level entry + Attributes: + name: Unique Name + parent_id: Id of Parent. If the parent id is null, this is a root-level entry """ + name: str parent_id: Optional[str] = None - def __init__(self, *, - name: str, - parent_id: Optional[str] = None): + def __init__(self, *, name: str, parent_id: Optional[str] = None): self.name = name self.parent_id = parent_id @@ -16971,42 +18468,61 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteGitBranch(model.Model): """ - Dynamic writeable type for GitBranch removes: -can, remote, remote_name, error, message, owner_name, readonly, personal, is_local, is_remote, is_production, ahead_count, behind_count, commit_at, remote_ref + Dynamic writeable type for GitBranch removes: + can, remote, remote_name, error, message, owner_name, readonly, personal, is_local, is_remote, is_production, ahead_count, behind_count, commit_at, remote_ref - Attributes: - name: The short name on the local. Updating `name` results in `git checkout ` - ref: The resolved ref of this branch. Updating `ref` results in `git reset --hard ``. + Attributes: + name: The short name on the local. Updating `name` results in `git checkout ` + ref: The resolved ref of this branch. Updating `ref` results in `git reset --hard ``. """ + name: Optional[str] = None ref: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - ref: Optional[str] = None): + def __init__(self, *, name: Optional[str] = None, ref: Optional[str] = None): self.name = name self.ref = ref +@attr.s(auto_attribs=True, init=False) +class WriteGitDiagnosticReport(model.Model): + """ + Dynamic writeable type for GitDiagnosticReport removes: + can, id, project_id, user_id, state, status, created_at, updated_at, issues + + Attributes: + project_type: Project structure type. + """ + + project_type: Optional[str] = None + + def __init__(self, *, project_type: Optional[str] = None): + self.project_type = project_type + + @attr.s(auto_attribs=True, init=False) class WriteGoldenQuery(model.Model): """ - Dynamic writeable type for GoldenQuery removes: -can, id, query_id, created_by_user_id, last_updated_by_user_id, created_at, last_updated_at + Dynamic writeable type for GoldenQuery removes: + can, id, query_id, created_by_user_id, last_updated_by_user_id, created_at, last_updated_at, explore, model, fields, filters, sorts, limit, client_id - Attributes: - questions: Variations of the golden question text - answer: The Explore URL representing the answer to the question - is_active: Whether this golden question should be utilized by the agent + Attributes: + questions: Variations of the golden question text + answer: The Explore URL representing the answer to the question + is_active: Whether this golden question should be utilized by the agent """ + questions: Optional[Sequence[str]] = None answer: Optional[str] = None is_active: Optional[bool] = None - def __init__(self, *, - questions: Optional[Sequence[str]] = None, - answer: Optional[str] = None, - is_active: Optional[bool] = None): + def __init__( + self, + *, + questions: Optional[Sequence[str]] = None, + answer: Optional[str] = None, + is_active: Optional[bool] = None + ): self.questions = questions self.answer = answer self.is_active = is_active @@ -17015,19 +18531,23 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteGroup(model.Model): """ - Dynamic writeable type for Group removes: -can, contains_current_user, external_group_id, externally_managed, id, include_by_default, user_count + Dynamic writeable type for Group removes: + can, contains_current_user, external_group_id, externally_managed, id, include_by_default, user_count - Attributes: - can_add_to_content_metadata: Group can be used in content access controls - name: Name of group + Attributes: + can_add_to_content_metadata: Group can be used in content access controls + name: Name of group """ + can_add_to_content_metadata: Optional[bool] = None name: Optional[str] = None - def __init__(self, *, - can_add_to_content_metadata: Optional[bool] = None, - name: Optional[str] = None): + def __init__( + self, + *, + can_add_to_content_metadata: Optional[bool] = None, + name: Optional[str] = None + ): self.can_add_to_content_metadata = can_add_to_content_metadata self.name = name @@ -17035,22 +18555,26 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteIntegration(model.Model): """ - Dynamic writeable type for Integration removes: -can, id, integration_hub_id, label, description, supported_formats, supported_action_types, supported_formattings, supported_visualization_formattings, supported_download_settings, icon_url, uses_oauth, required_fields, privacy_link, delegate_oauth + Dynamic writeable type for Integration removes: + can, id, integration_hub_id, label, description, supported_formats, supported_action_types, supported_formattings, supported_visualization_formattings, supported_download_settings, icon_url, uses_oauth, required_fields, privacy_link, delegate_oauth - Attributes: - enabled: Whether the integration is available to users. - params: Array of params for the integration. - installed_delegate_oauth_targets: Whether the integration is available to users. + Attributes: + enabled: Whether the integration is available to users. + params: Array of params for the integration. + installed_delegate_oauth_targets: Whether the integration is available to users. """ + enabled: Optional[bool] = None params: Optional[Sequence["IntegrationParam"]] = None installed_delegate_oauth_targets: Optional[Sequence[str]] = None - def __init__(self, *, - enabled: Optional[bool] = None, - params: Optional[Sequence["IntegrationParam"]] = None, - installed_delegate_oauth_targets: Optional[Sequence[str]] = None): + def __init__( + self, + *, + enabled: Optional[bool] = None, + params: Optional[Sequence["IntegrationParam"]] = None, + installed_delegate_oauth_targets: Optional[Sequence[str]] = None + ): self.enabled = enabled self.params = params self.installed_delegate_oauth_targets = installed_delegate_oauth_targets @@ -17059,19 +18583,20 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteIntegrationHub(model.Model): """ - Dynamic writeable type for IntegrationHub removes: -can, id, label, official, fetch_error_message, has_authorization_token, legal_agreement_signed, legal_agreement_required, legal_agreement_text + Dynamic writeable type for IntegrationHub removes: + can, id, label, official, fetch_error_message, has_authorization_token, legal_agreement_signed, legal_agreement_required, legal_agreement_text - Attributes: - url: URL of the hub. - authorization_token: (Write-Only) An authorization key that will be sent to the integration hub on every request. + Attributes: + url: URL of the hub. + authorization_token: (Write-Only) An authorization key that will be sent to the integration hub on every request. """ + url: Optional[str] = None authorization_token: Optional[str] = None - def __init__(self, *, - url: Optional[str] = None, - authorization_token: Optional[str] = None): + def __init__( + self, *, url: Optional[str] = None, authorization_token: Optional[str] = None + ): self.url = url self.authorization_token = authorization_token @@ -17079,35 +18604,39 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteInternalHelpResources(model.Model): """ - Dynamic writeable type for InternalHelpResources removes: -can + Dynamic writeable type for InternalHelpResources removes: + can - Attributes: - enabled: If true and internal help resources content is not blank then the link for internal help resources will be shown in the help menu and the content displayed within Looker + Attributes: + enabled: If true and internal help resources content is not blank then the link for internal help resources will be shown in the help menu and the content displayed within Looker """ + enabled: Optional[bool] = None - def __init__(self, *, - enabled: Optional[bool] = None): + def __init__(self, *, enabled: Optional[bool] = None): self.enabled = enabled @attr.s(auto_attribs=True, init=False) class WriteInternalHelpResourcesContent(model.Model): """ - Dynamic writeable type for InternalHelpResourcesContent removes: -can + Dynamic writeable type for InternalHelpResourcesContent removes: + can - Attributes: - organization_name: Text to display in the help menu item which will display the internal help resources - markdown_content: Content to be displayed in the internal help resources page/modal + Attributes: + organization_name: Text to display in the help menu item which will display the internal help resources + markdown_content: Content to be displayed in the internal help resources page/modal """ + organization_name: Optional[str] = None markdown_content: Optional[str] = None - def __init__(self, *, - organization_name: Optional[str] = None, - markdown_content: Optional[str] = None): + def __init__( + self, + *, + organization_name: Optional[str] = None, + markdown_content: Optional[str] = None + ): self.organization_name = organization_name self.markdown_content = markdown_content @@ -17115,45 +18644,46 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteLDAPConfig(model.Model): """ - Dynamic writeable type for LDAPConfig removes: -can, default_new_user_groups, default_new_user_roles, groups, has_auth_password, modified_at, modified_by, user_attributes, url - - Attributes: - alternate_email_login_allowed: Allow alternate email-based login via '/login/email' for admins and for specified users with the 'login_special_email' permission. This option is useful as a fallback during ldap setup, if ldap config problems occur later, or if you need to support some users who are not in your ldap directory. Looker email/password logins are always disabled for regular users when ldap is enabled. - auth_password: (Write-Only) Password for the LDAP account used to access the LDAP server - auth_requires_role: Users will not be allowed to login at all unless a role for them is found in LDAP if set to true - auth_username: Distinguished name of LDAP account used to access the LDAP server - connection_host: LDAP server hostname - connection_port: LDAP host port - connection_tls: Use Transport Layer Security - connection_tls_no_verify: Do not verify peer when using TLS - default_new_user_group_ids: (Write-Only) Array of ids of groups that will be applied to new users the first time they login via LDAP - default_new_user_role_ids: (Write-Only) Array of ids of roles that will be applied to new users the first time they login via LDAP - enabled: Enable/Disable LDAP authentication for the server - force_no_page: Don't attempt to do LDAP search result paging (RFC 2696) even if the LDAP server claims to support it. - groups_base_dn: Base dn for finding groups in LDAP searches - groups_finder_type: Identifier for a strategy for how Looker will search for groups in the LDAP server - groups_member_attribute: LDAP Group attribute that signifies the members of the groups. Most commonly 'member' - groups_objectclasses: Optional comma-separated list of supported LDAP objectclass for groups when doing groups searches - groups_user_attribute: LDAP Group attribute that signifies the user in a group. Most commonly 'dn' - groups_with_role_ids: (Read/Write) Array of mappings between LDAP Groups and arrays of Looker Role ids - merge_new_users_by_email: Merge first-time ldap login to existing user account by email addresses. When a user logs in for the first time via ldap this option will connect this user into their existing account by finding the account with a matching email address. Otherwise a new user account will be created for the user. - set_roles_from_groups: Set user roles in Looker based on groups from LDAP - test_ldap_password: (Write-Only) Test LDAP user password. For ldap tests only. - test_ldap_user: (Write-Only) Test LDAP user login id. For ldap tests only. - user_attribute_map_email: Name of user record attributes used to indicate email address field - user_attribute_map_first_name: Name of user record attributes used to indicate first name - user_attribute_map_last_name: Name of user record attributes used to indicate last name - user_attribute_map_ldap_id: Name of user record attributes used to indicate unique record id - user_attributes_with_ids: (Read/Write) Array of mappings between LDAP User Attributes and arrays of Looker User Attribute ids - user_bind_base_dn: Distinguished name of LDAP node used as the base for user searches - user_custom_filter: (Optional) Custom RFC-2254 filter clause for use in finding user during login. Combined via 'and' with the other generated filter clauses. - user_id_attribute_names: Name(s) of user record attributes used for matching user login id (comma separated list) - user_objectclass: (Optional) Name of user record objectclass used for finding user during login id - allow_normal_group_membership: Allow LDAP auth'd users to be members of non-reflected Looker groups. If 'false', user will be removed from non-reflected groups on login. - allow_roles_from_normal_groups: LDAP auth'd users will be able to inherit roles from non-reflected Looker groups. - allow_direct_roles: Allows roles to be directly assigned to LDAP auth'd users. + Dynamic writeable type for LDAPConfig removes: + can, default_new_user_groups, default_new_user_roles, groups, has_auth_password, modified_at, modified_by, user_attributes, url + + Attributes: + alternate_email_login_allowed: Allow alternate email-based login via '/login/email' for admins and for specified users with the 'login_special_email' permission. This option is useful as a fallback during ldap setup, if ldap config problems occur later, or if you need to support some users who are not in your ldap directory. Looker email/password logins are always disabled for regular users when ldap is enabled. + auth_password: (Write-Only) Password for the LDAP account used to access the LDAP server + auth_requires_role: Users will not be allowed to login at all unless a role for them is found in LDAP if set to true + auth_username: Distinguished name of LDAP account used to access the LDAP server + connection_host: LDAP server hostname + connection_port: LDAP host port + connection_tls: Use Transport Layer Security + connection_tls_no_verify: Do not verify peer when using TLS + default_new_user_group_ids: (Write-Only) Array of ids of groups that will be applied to new users the first time they login via LDAP + default_new_user_role_ids: (Write-Only) Array of ids of roles that will be applied to new users the first time they login via LDAP + enabled: Enable/Disable LDAP authentication for the server + force_no_page: Don't attempt to do LDAP search result paging (RFC 2696) even if the LDAP server claims to support it. + groups_base_dn: Base dn for finding groups in LDAP searches + groups_finder_type: Identifier for a strategy for how Looker will search for groups in the LDAP server + groups_member_attribute: LDAP Group attribute that signifies the members of the groups. Most commonly 'member' + groups_objectclasses: Optional comma-separated list of supported LDAP objectclass for groups when doing groups searches + groups_user_attribute: LDAP Group attribute that signifies the user in a group. Most commonly 'dn' + groups_with_role_ids: (Read/Write) Array of mappings between LDAP Groups and arrays of Looker Role ids + merge_new_users_by_email: Merge first-time ldap login to existing user account by email addresses. When a user logs in for the first time via ldap this option will connect this user into their existing account by finding the account with a matching email address. Otherwise a new user account will be created for the user. + set_roles_from_groups: Set user roles in Looker based on groups from LDAP + test_ldap_password: (Write-Only) Test LDAP user password. For ldap tests only. + test_ldap_user: (Write-Only) Test LDAP user login id. For ldap tests only. + user_attribute_map_email: Name of user record attributes used to indicate email address field + user_attribute_map_first_name: Name of user record attributes used to indicate first name + user_attribute_map_last_name: Name of user record attributes used to indicate last name + user_attribute_map_ldap_id: Name of user record attributes used to indicate unique record id + user_attributes_with_ids: (Read/Write) Array of mappings between LDAP User Attributes and arrays of Looker User Attribute ids + user_bind_base_dn: Distinguished name of LDAP node used as the base for user searches + user_custom_filter: (Optional) Custom RFC-2254 filter clause for use in finding user during login. Combined via 'and' with the other generated filter clauses. + user_id_attribute_names: Name(s) of user record attributes used for matching user login id (comma separated list) + user_objectclass: (Optional) Name of user record objectclass used for finding user during login id + allow_normal_group_membership: Allow LDAP auth'd users to be members of non-reflected Looker groups. If 'false', user will be removed from non-reflected groups on login. + allow_roles_from_normal_groups: LDAP auth'd users will be able to inherit roles from non-reflected Looker groups. + allow_direct_roles: Allows roles to be directly assigned to LDAP auth'd users. """ + alternate_email_login_allowed: Optional[bool] = None auth_password: Optional[str] = None auth_requires_role: Optional[bool] = None @@ -17189,41 +18719,44 @@ class WriteLDAPConfig(model.Model): allow_roles_from_normal_groups: Optional[bool] = None allow_direct_roles: Optional[bool] = None - def __init__(self, *, - alternate_email_login_allowed: Optional[bool] = None, - auth_password: Optional[str] = None, - auth_requires_role: Optional[bool] = None, - auth_username: Optional[str] = None, - connection_host: Optional[str] = None, - connection_port: Optional[str] = None, - connection_tls: Optional[bool] = None, - connection_tls_no_verify: Optional[bool] = None, - default_new_user_group_ids: Optional[Sequence[str]] = None, - default_new_user_role_ids: Optional[Sequence[str]] = None, - enabled: Optional[bool] = None, - force_no_page: Optional[bool] = None, - groups_base_dn: Optional[str] = None, - groups_finder_type: Optional[str] = None, - groups_member_attribute: Optional[str] = None, - groups_objectclasses: Optional[str] = None, - groups_user_attribute: Optional[str] = None, - groups_with_role_ids: Optional[Sequence["LDAPGroupWrite"]] = None, - merge_new_users_by_email: Optional[bool] = None, - set_roles_from_groups: Optional[bool] = None, - test_ldap_password: Optional[str] = None, - test_ldap_user: Optional[str] = None, - user_attribute_map_email: Optional[str] = None, - user_attribute_map_first_name: Optional[str] = None, - user_attribute_map_last_name: Optional[str] = None, - user_attribute_map_ldap_id: Optional[str] = None, - user_attributes_with_ids: Optional[Sequence["LDAPUserAttributeWrite"]] = None, - user_bind_base_dn: Optional[str] = None, - user_custom_filter: Optional[str] = None, - user_id_attribute_names: Optional[str] = None, - user_objectclass: Optional[str] = None, - allow_normal_group_membership: Optional[bool] = None, - allow_roles_from_normal_groups: Optional[bool] = None, - allow_direct_roles: Optional[bool] = None): + def __init__( + self, + *, + alternate_email_login_allowed: Optional[bool] = None, + auth_password: Optional[str] = None, + auth_requires_role: Optional[bool] = None, + auth_username: Optional[str] = None, + connection_host: Optional[str] = None, + connection_port: Optional[str] = None, + connection_tls: Optional[bool] = None, + connection_tls_no_verify: Optional[bool] = None, + default_new_user_group_ids: Optional[Sequence[str]] = None, + default_new_user_role_ids: Optional[Sequence[str]] = None, + enabled: Optional[bool] = None, + force_no_page: Optional[bool] = None, + groups_base_dn: Optional[str] = None, + groups_finder_type: Optional[str] = None, + groups_member_attribute: Optional[str] = None, + groups_objectclasses: Optional[str] = None, + groups_user_attribute: Optional[str] = None, + groups_with_role_ids: Optional[Sequence["LDAPGroupWrite"]] = None, + merge_new_users_by_email: Optional[bool] = None, + set_roles_from_groups: Optional[bool] = None, + test_ldap_password: Optional[str] = None, + test_ldap_user: Optional[str] = None, + user_attribute_map_email: Optional[str] = None, + user_attribute_map_first_name: Optional[str] = None, + user_attribute_map_last_name: Optional[str] = None, + user_attribute_map_ldap_id: Optional[str] = None, + user_attributes_with_ids: Optional[Sequence["LDAPUserAttributeWrite"]] = None, + user_bind_base_dn: Optional[str] = None, + user_custom_filter: Optional[str] = None, + user_id_attribute_names: Optional[str] = None, + user_objectclass: Optional[str] = None, + allow_normal_group_membership: Optional[bool] = None, + allow_roles_from_normal_groups: Optional[bool] = None, + allow_direct_roles: Optional[bool] = None + ): self.alternate_email_login_allowed = alternate_email_login_allowed self.auth_password = auth_password self.auth_requires_role = auth_requires_role @@ -17263,36 +18796,40 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteLegacyFeature(model.Model): """ - Dynamic writeable type for LegacyFeature removes: -can, id, name, description, enabled, disallowed_as_of_version, disable_on_upgrade_to_version, end_of_life_version, documentation_url, approximate_disable_date, approximate_end_of_life_date, has_disabled_on_upgrade + Dynamic writeable type for LegacyFeature removes: + can, id, name, description, enabled, disallowed_as_of_version, disable_on_upgrade_to_version, end_of_life_version, documentation_url, approximate_disable_date, approximate_end_of_life_date, has_disabled_on_upgrade - Attributes: - enabled_locally: Whether this feature has been enabled by a user + Attributes: + enabled_locally: Whether this feature has been enabled by a user """ + enabled_locally: Optional[bool] = None - def __init__(self, *, - enabled_locally: Optional[bool] = None): + def __init__(self, *, enabled_locally: Optional[bool] = None): self.enabled_locally = enabled_locally @attr.s(auto_attribs=True, init=False) class WriteLookBasic(model.Model): """ - Dynamic writeable type for LookBasic removes: -can, content_metadata_id, id, title + Dynamic writeable type for LookBasic removes: + can, content_metadata_id, id, title - Attributes: - user_id: User Id - certification_metadata: Dynamic writeable type for Certification removes: -ui_status, user_name, updated_at + Attributes: + user_id: User Id + certification_metadata: Dynamic writeable type for Certification removes: + ui_status, user_name, updated_at """ + user_id: Optional[str] = None certification_metadata: Optional["WriteCertification"] = None - def __init__(self, *, - user_id: Optional[str] = None, - certification_metadata: Optional["WriteCertification"] = None): + def __init__( + self, + *, + user_id: Optional[str] = None, + certification_metadata: Optional["WriteCertification"] = None + ): self.user_id = user_id self.certification_metadata = certification_metadata @@ -17300,25 +18837,29 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteLookmlModel(model.Model): """ - Dynamic writeable type for LookmlModel removes: -can, explores, has_content, label + Dynamic writeable type for LookmlModel removes: + can, explores, has_content, label - Attributes: - allowed_db_connection_names: Array of names of connections this model is allowed to use - name: Name of the model. Also used as the unique identifier - project_name: Name of project containing the model - unlimited_db_connections: Is this model allowed to use all current and future connections + Attributes: + allowed_db_connection_names: Array of names of connections this model is allowed to use + name: Name of the model. Also used as the unique identifier + project_name: Name of project containing the model + unlimited_db_connections: Is this model allowed to use all current and future connections """ + allowed_db_connection_names: Optional[Sequence[str]] = None name: Optional[str] = None project_name: Optional[str] = None unlimited_db_connections: Optional[bool] = None - def __init__(self, *, - allowed_db_connection_names: Optional[Sequence[str]] = None, - name: Optional[str] = None, - project_name: Optional[str] = None, - unlimited_db_connections: Optional[bool] = None): + def __init__( + self, + *, + allowed_db_connection_names: Optional[Sequence[str]] = None, + name: Optional[str] = None, + project_name: Optional[str] = None, + unlimited_db_connections: Optional[bool] = None + ): self.allowed_db_connection_names = allowed_db_connection_names self.name = name self.project_name = project_name @@ -17328,25 +18869,26 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteLookWithQuery(model.Model): """ - Dynamic writeable type for LookWithQuery removes: -can, content_metadata_id, id, content_favorite_id, created_at, deleted_at, deleter_id, embed_url, excel_file_url, favorite_count, google_spreadsheet_formula, image_embed_url, last_accessed_at, last_updater_id, last_viewed_at, model, public_slug, public_url, short_url, updated_at, user_name, view_count, usage_count, is_owner_disabled, url - - Attributes: - title: Look Title - user_id: User Id - certification_metadata: Dynamic writeable type for Certification removes: -ui_status, user_name, updated_at - deleted: Whether or not a look is 'soft' deleted. - description: Description - is_run_on_load: auto-run query when Look viewed - public: Is Public - query_id: Query Id - folder: Dynamic writeable type for FolderBase removes: -id, content_metadata_id, created_at, creator_id, child_count, external_id, is_embed, is_embed_shared_root, is_embed_users_root, is_personal, is_personal_descendant, is_shared_root, is_users_root, can - folder_id: Folder Id - query: Dynamic writeable type for Query removes: -can, id, slug, share_url, expanded_share_url, url, has_table_calculations + Dynamic writeable type for LookWithQuery removes: + can, content_metadata_id, id, content_favorite_id, created_at, deleted_at, deleter_id, embed_url, excel_file_url, favorite_count, google_spreadsheet_formula, image_embed_url, last_accessed_at, last_updater_id, last_viewed_at, model, public_slug, public_url, short_url, updated_at, user_name, view_count, usage_count, is_owner_disabled, url + + Attributes: + title: Look Title + user_id: User Id + certification_metadata: Dynamic writeable type for Certification removes: + ui_status, user_name, updated_at + deleted: Whether or not a look is 'soft' deleted. + description: Description + is_run_on_load: auto-run query when Look viewed + public: Is Public + query_id: Query Id + folder: Dynamic writeable type for FolderBase removes: + id, content_metadata_id, created_at, creator_id, child_count, external_id, is_embed, is_embed_shared_root, is_embed_users_root, is_personal, is_personal_descendant, is_shared_root, is_users_root, can + folder_id: Folder Id + query: Dynamic writeable type for Query removes: + can, id, slug, share_url, expanded_share_url, url, has_table_calculations """ + title: Optional[str] = None user_id: Optional[str] = None certification_metadata: Optional["WriteCertification"] = None @@ -17359,18 +18901,21 @@ class WriteLookWithQuery(model.Model): folder_id: Optional[str] = None query: Optional["WriteQuery"] = None - def __init__(self, *, - title: Optional[str] = None, - user_id: Optional[str] = None, - certification_metadata: Optional["WriteCertification"] = None, - deleted: Optional[bool] = None, - description: Optional[str] = None, - is_run_on_load: Optional[bool] = None, - public: Optional[bool] = None, - query_id: Optional[str] = None, - folder: Optional["WriteFolderBase"] = None, - folder_id: Optional[str] = None, - query: Optional["WriteQuery"] = None): + def __init__( + self, + *, + title: Optional[str] = None, + user_id: Optional[str] = None, + certification_metadata: Optional["WriteCertification"] = None, + deleted: Optional[bool] = None, + description: Optional[str] = None, + is_run_on_load: Optional[bool] = None, + public: Optional[bool] = None, + query_id: Optional[str] = None, + folder: Optional["WriteFolderBase"] = None, + folder_id: Optional[str] = None, + query: Optional["WriteQuery"] = None + ): self.title = title self.user_id = user_id self.certification_metadata = certification_metadata @@ -17387,91 +18932,92 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteMcpTools(model.Model): """ - Dynamic writeable type for McpTools - - Attributes: - enable_all: Enable all MCP tools - add_dashboard_element: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - add_dashboard_filter: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - create_project_file: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - delete_project_file: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - dev_mode: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - generate_embed_url: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_connection_databases: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_connection_schemas: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_connection_table_columns: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_connection_tables: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_connections: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_dashboards: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_dimensions: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_explores: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_filters: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_looks: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_measures: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_models: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_parameters: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_project_file: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_project_files: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_projects: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - health_analyze: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - health_pulse: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - health_vacuum: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - make_dashboard: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - make_look: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - query: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - query_sql: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - query_url: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - run_dashboard: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - run_look: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - update_project_file: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - validate_project: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_project_directories: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - create_project_directory: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - delete_project_directory: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - get_lookml_tests: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - run_lookml_tests: Dynamic writeable type for McpToolSetting removes: -description, category, access_level - create_view_from_table: Dynamic writeable type for McpToolSetting removes: -description, category, access_level + Dynamic writeable type for McpTools + + Attributes: + enable_all: Enable all MCP tools + add_dashboard_element: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + add_dashboard_filter: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + create_project_file: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + delete_project_file: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + dev_mode: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + generate_embed_url: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_connection_databases: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_connection_schemas: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_connection_table_columns: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_connection_tables: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_connections: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_dashboards: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_dimensions: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_explores: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_filters: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_looks: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_measures: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_models: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_parameters: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_project_file: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_project_files: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_projects: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + health_analyze: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + health_pulse: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + health_vacuum: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + make_dashboard: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + make_look: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + query: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + query_sql: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + query_url: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + run_dashboard: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + run_look: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + update_project_file: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + validate_project: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_project_directories: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + create_project_directory: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + delete_project_directory: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + get_lookml_tests: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + run_lookml_tests: Dynamic writeable type for McpToolSetting removes: + description, category, access_level + create_view_from_table: Dynamic writeable type for McpToolSetting removes: + description, category, access_level """ + enable_all: Optional[bool] = None add_dashboard_element: Optional["WriteMcpToolSetting"] = None add_dashboard_filter: Optional["WriteMcpToolSetting"] = None @@ -17514,48 +19060,51 @@ class WriteMcpTools(model.Model): run_lookml_tests: Optional["WriteMcpToolSetting"] = None create_view_from_table: Optional["WriteMcpToolSetting"] = None - def __init__(self, *, - enable_all: Optional[bool] = None, - add_dashboard_element: Optional["WriteMcpToolSetting"] = None, - add_dashboard_filter: Optional["WriteMcpToolSetting"] = None, - create_project_file: Optional["WriteMcpToolSetting"] = None, - delete_project_file: Optional["WriteMcpToolSetting"] = None, - dev_mode: Optional["WriteMcpToolSetting"] = None, - generate_embed_url: Optional["WriteMcpToolSetting"] = None, - get_connection_databases: Optional["WriteMcpToolSetting"] = None, - get_connection_schemas: Optional["WriteMcpToolSetting"] = None, - get_connection_table_columns: Optional["WriteMcpToolSetting"] = None, - get_connection_tables: Optional["WriteMcpToolSetting"] = None, - get_connections: Optional["WriteMcpToolSetting"] = None, - get_dashboards: Optional["WriteMcpToolSetting"] = None, - get_dimensions: Optional["WriteMcpToolSetting"] = None, - get_explores: Optional["WriteMcpToolSetting"] = None, - get_filters: Optional["WriteMcpToolSetting"] = None, - get_looks: Optional["WriteMcpToolSetting"] = None, - get_measures: Optional["WriteMcpToolSetting"] = None, - get_models: Optional["WriteMcpToolSetting"] = None, - get_parameters: Optional["WriteMcpToolSetting"] = None, - get_project_file: Optional["WriteMcpToolSetting"] = None, - get_project_files: Optional["WriteMcpToolSetting"] = None, - get_projects: Optional["WriteMcpToolSetting"] = None, - health_analyze: Optional["WriteMcpToolSetting"] = None, - health_pulse: Optional["WriteMcpToolSetting"] = None, - health_vacuum: Optional["WriteMcpToolSetting"] = None, - make_dashboard: Optional["WriteMcpToolSetting"] = None, - make_look: Optional["WriteMcpToolSetting"] = None, - query: Optional["WriteMcpToolSetting"] = None, - query_sql: Optional["WriteMcpToolSetting"] = None, - query_url: Optional["WriteMcpToolSetting"] = None, - run_dashboard: Optional["WriteMcpToolSetting"] = None, - run_look: Optional["WriteMcpToolSetting"] = None, - update_project_file: Optional["WriteMcpToolSetting"] = None, - validate_project: Optional["WriteMcpToolSetting"] = None, - get_project_directories: Optional["WriteMcpToolSetting"] = None, - create_project_directory: Optional["WriteMcpToolSetting"] = None, - delete_project_directory: Optional["WriteMcpToolSetting"] = None, - get_lookml_tests: Optional["WriteMcpToolSetting"] = None, - run_lookml_tests: Optional["WriteMcpToolSetting"] = None, - create_view_from_table: Optional["WriteMcpToolSetting"] = None): + def __init__( + self, + *, + enable_all: Optional[bool] = None, + add_dashboard_element: Optional["WriteMcpToolSetting"] = None, + add_dashboard_filter: Optional["WriteMcpToolSetting"] = None, + create_project_file: Optional["WriteMcpToolSetting"] = None, + delete_project_file: Optional["WriteMcpToolSetting"] = None, + dev_mode: Optional["WriteMcpToolSetting"] = None, + generate_embed_url: Optional["WriteMcpToolSetting"] = None, + get_connection_databases: Optional["WriteMcpToolSetting"] = None, + get_connection_schemas: Optional["WriteMcpToolSetting"] = None, + get_connection_table_columns: Optional["WriteMcpToolSetting"] = None, + get_connection_tables: Optional["WriteMcpToolSetting"] = None, + get_connections: Optional["WriteMcpToolSetting"] = None, + get_dashboards: Optional["WriteMcpToolSetting"] = None, + get_dimensions: Optional["WriteMcpToolSetting"] = None, + get_explores: Optional["WriteMcpToolSetting"] = None, + get_filters: Optional["WriteMcpToolSetting"] = None, + get_looks: Optional["WriteMcpToolSetting"] = None, + get_measures: Optional["WriteMcpToolSetting"] = None, + get_models: Optional["WriteMcpToolSetting"] = None, + get_parameters: Optional["WriteMcpToolSetting"] = None, + get_project_file: Optional["WriteMcpToolSetting"] = None, + get_project_files: Optional["WriteMcpToolSetting"] = None, + get_projects: Optional["WriteMcpToolSetting"] = None, + health_analyze: Optional["WriteMcpToolSetting"] = None, + health_pulse: Optional["WriteMcpToolSetting"] = None, + health_vacuum: Optional["WriteMcpToolSetting"] = None, + make_dashboard: Optional["WriteMcpToolSetting"] = None, + make_look: Optional["WriteMcpToolSetting"] = None, + query: Optional["WriteMcpToolSetting"] = None, + query_sql: Optional["WriteMcpToolSetting"] = None, + query_url: Optional["WriteMcpToolSetting"] = None, + run_dashboard: Optional["WriteMcpToolSetting"] = None, + run_look: Optional["WriteMcpToolSetting"] = None, + update_project_file: Optional["WriteMcpToolSetting"] = None, + validate_project: Optional["WriteMcpToolSetting"] = None, + get_project_directories: Optional["WriteMcpToolSetting"] = None, + create_project_directory: Optional["WriteMcpToolSetting"] = None, + delete_project_directory: Optional["WriteMcpToolSetting"] = None, + get_lookml_tests: Optional["WriteMcpToolSetting"] = None, + run_lookml_tests: Optional["WriteMcpToolSetting"] = None, + create_view_from_table: Optional["WriteMcpToolSetting"] = None + ): self.enable_all = enable_all self.add_dashboard_element = add_dashboard_element self.add_dashboard_filter = add_dashboard_filter @@ -17602,35 +19151,36 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteMcpToolSetting(model.Model): """ - Dynamic writeable type for McpToolSetting removes: -description, category, access_level + Dynamic writeable type for McpToolSetting removes: + description, category, access_level - Attributes: - enabled: Is this tool enabled + Attributes: + enabled: Is this tool enabled """ + enabled: Optional[bool] = None - def __init__(self, *, - enabled: Optional[bool] = None): + def __init__(self, *, enabled: Optional[bool] = None): self.enabled = enabled @attr.s(auto_attribs=True, init=False) class WriteMergeQuery(model.Model): """ - Dynamic writeable type for MergeQuery removes: -can, id, result_maker_id + Dynamic writeable type for MergeQuery removes: + can, id, result_maker_id - Attributes: - column_limit: Column Limit - dynamic_fields: Dynamic Fields - pivots: Pivots - sorts: Sorts - source_queries: Source Queries defining the results to be merged. - total: Total - limit: Limit - vis_config: Visualization Config + Attributes: + column_limit: Column Limit + dynamic_fields: Dynamic Fields + pivots: Pivots + sorts: Sorts + source_queries: Source Queries defining the results to be merged. + total: Total + limit: Limit + vis_config: Visualization Config """ + column_limit: Optional[str] = None dynamic_fields: Optional[str] = None pivots: Optional[Sequence[str]] = None @@ -17640,15 +19190,18 @@ class WriteMergeQuery(model.Model): limit: Optional[str] = None vis_config: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - column_limit: Optional[str] = None, - dynamic_fields: Optional[str] = None, - pivots: Optional[Sequence[str]] = None, - sorts: Optional[Sequence[str]] = None, - source_queries: Optional[Sequence["MergeQuerySourceQuery"]] = None, - total: Optional[bool] = None, - limit: Optional[str] = None, - vis_config: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + column_limit: Optional[str] = None, + dynamic_fields: Optional[str] = None, + pivots: Optional[Sequence[str]] = None, + sorts: Optional[Sequence[str]] = None, + source_queries: Optional[Sequence["MergeQuerySourceQuery"]] = None, + total: Optional[bool] = None, + limit: Optional[str] = None, + vis_config: Optional[MutableMapping[str, Any]] = None + ): self.column_limit = column_limit self.dynamic_fields = dynamic_fields self.pivots = pivots @@ -17662,23 +19215,19 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteMobileToken(model.Model): """ - Dynamic writeable type for MobileToken removes: -id + Dynamic writeable type for MobileToken removes: + id - Attributes: - device_token: Specifies the device token - device_type: Specifies type of device. Valid values are: "android", "ios". + Attributes: + device_token: Specifies the device token + device_type: Specifies type of device. Valid values are: "android", "ios". """ + device_token: str device_type: "DeviceType" - __annotations__ = { - "device_token": str, - "device_type": ForwardRef("DeviceType") - } + __annotations__ = {"device_token": str, "device_type": ForwardRef("DeviceType")} - def __init__(self, *, - device_token: str, - device_type: "DeviceType"): + def __init__(self, *, device_token: str, device_type: "DeviceType"): self.device_token = device_token self.device_type = device_type @@ -17686,19 +19235,20 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteModelSet(model.Model): """ - Dynamic writeable type for ModelSet removes: -can, all_access, built_in, id, url + Dynamic writeable type for ModelSet removes: + can, all_access, built_in, id, url - Attributes: - models: - name: Name of ModelSet + Attributes: + models: + name: Name of ModelSet """ + models: Optional[Sequence[str]] = None name: Optional[str] = None - def __init__(self, *, - models: Optional[Sequence[str]] = None, - name: Optional[str] = None): + def __init__( + self, *, models: Optional[Sequence[str]] = None, name: Optional[str] = None + ): self.models = models self.name = name @@ -17706,28 +19256,32 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteOauthClientApp(model.Model): """ - Dynamic writeable type for OauthClientApp removes: -can, client_guid, tokens_invalid_before, activated_users + Dynamic writeable type for OauthClientApp removes: + can, client_guid, tokens_invalid_before, activated_users - Attributes: - redirect_uri: The uri with which this application will receive an auth code by browser redirect. - display_name: The application's display name - description: A description of the application that will be displayed to users - enabled: When enabled is true, OAuth2 and API requests will be accepted from this app. When false, all requests from this app will be refused. Setting disabled invalidates existing tokens. - group_id: If set, only Looker users who are members of this group can use this web app with Looker. If group_id is not set, any Looker user may use this app to access this Looker instance + Attributes: + redirect_uri: The uri with which this application will receive an auth code by browser redirect. + display_name: The application's display name + description: A description of the application that will be displayed to users + enabled: When enabled is true, OAuth2 and API requests will be accepted from this app. When false, all requests from this app will be refused. Setting disabled invalidates existing tokens. + group_id: If set, only Looker users who are members of this group can use this web app with Looker. If group_id is not set, any Looker user may use this app to access this Looker instance """ + redirect_uri: Optional[str] = None display_name: Optional[str] = None description: Optional[str] = None enabled: Optional[bool] = None group_id: Optional[str] = None - def __init__(self, *, - redirect_uri: Optional[str] = None, - display_name: Optional[str] = None, - description: Optional[str] = None, - enabled: Optional[bool] = None, - group_id: Optional[str] = None): + def __init__( + self, + *, + redirect_uri: Optional[str] = None, + display_name: Optional[str] = None, + description: Optional[str] = None, + enabled: Optional[bool] = None, + group_id: Optional[str] = None + ): self.redirect_uri = redirect_uri self.display_name = display_name self.description = description @@ -17738,35 +19292,36 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteOIDCConfig(model.Model): """ - Dynamic writeable type for OIDCConfig removes: -can, default_new_user_groups, default_new_user_roles, groups, modified_at, modified_by, test_slug, user_attributes, url - - Attributes: - alternate_email_login_allowed: Allow alternate email-based login via '/login/email' for admins and for specified users with the 'login_special_email' permission. This option is useful as a fallback during ldap setup, if ldap config problems occur later, or if you need to support some users who are not in your ldap directory. Looker email/password logins are always disabled for regular users when ldap is enabled. - audience: OpenID Provider Audience - auth_requires_role: Users will not be allowed to login at all unless a role for them is found in OIDC if set to true - authorization_endpoint: OpenID Provider Authorization Url - default_new_user_group_ids: (Write-Only) Array of ids of groups that will be applied to new users the first time they login via OIDC - default_new_user_role_ids: (Write-Only) Array of ids of roles that will be applied to new users the first time they login via OIDC - enabled: Enable/Disable OIDC authentication for the server - groups_attribute: Name of user record attributes used to indicate groups. Used when 'groups_finder_type' is set to 'grouped_attribute_values' - groups_with_role_ids: (Read/Write) Array of mappings between OIDC Groups and arrays of Looker Role ids - identifier: Relying Party Identifier (provided by OpenID Provider) - issuer: OpenID Provider Issuer - new_user_migration_types: Merge first-time oidc login to existing user account by email addresses. When a user logs in for the first time via oidc this option will connect this user into their existing account by finding the account with a matching email address by testing the given types of credentials for existing users. Otherwise a new user account will be created for the user. This list (if provided) must be a comma separated list of string like 'email,ldap,google' - scopes: Array of scopes to request. - secret: (Write-Only) Relying Party Secret (provided by OpenID Provider) - set_roles_from_groups: Set user roles in Looker based on groups from OIDC - token_endpoint: OpenID Provider Token Url - user_attribute_map_email: Name of user record attributes used to indicate email address field - user_attribute_map_first_name: Name of user record attributes used to indicate first name - user_attribute_map_last_name: Name of user record attributes used to indicate last name - user_attributes_with_ids: (Read/Write) Array of mappings between OIDC User Attributes and arrays of Looker User Attribute ids - userinfo_endpoint: OpenID Provider User Information Url - allow_normal_group_membership: Allow OIDC auth'd users to be members of non-reflected Looker groups. If 'false', user will be removed from non-reflected groups on login. - allow_roles_from_normal_groups: OIDC auth'd users will inherit roles from non-reflected Looker groups. - allow_direct_roles: Allows roles to be directly assigned to OIDC auth'd users. + Dynamic writeable type for OIDCConfig removes: + can, default_new_user_groups, default_new_user_roles, groups, modified_at, modified_by, test_slug, user_attributes, url + + Attributes: + alternate_email_login_allowed: Allow alternate email-based login via '/login/email' for admins and for specified users with the 'login_special_email' permission. This option is useful as a fallback during ldap setup, if ldap config problems occur later, or if you need to support some users who are not in your ldap directory. Looker email/password logins are always disabled for regular users when ldap is enabled. + audience: OpenID Provider Audience + auth_requires_role: Users will not be allowed to login at all unless a role for them is found in OIDC if set to true + authorization_endpoint: OpenID Provider Authorization Url + default_new_user_group_ids: (Write-Only) Array of ids of groups that will be applied to new users the first time they login via OIDC + default_new_user_role_ids: (Write-Only) Array of ids of roles that will be applied to new users the first time they login via OIDC + enabled: Enable/Disable OIDC authentication for the server + groups_attribute: Name of user record attributes used to indicate groups. Used when 'groups_finder_type' is set to 'grouped_attribute_values' + groups_with_role_ids: (Read/Write) Array of mappings between OIDC Groups and arrays of Looker Role ids + identifier: Relying Party Identifier (provided by OpenID Provider) + issuer: OpenID Provider Issuer + new_user_migration_types: Merge first-time oidc login to existing user account by email addresses. When a user logs in for the first time via oidc this option will connect this user into their existing account by finding the account with a matching email address by testing the given types of credentials for existing users. Otherwise a new user account will be created for the user. This list (if provided) must be a comma separated list of string like 'email,ldap,google' + scopes: Array of scopes to request. + secret: (Write-Only) Relying Party Secret (provided by OpenID Provider) + set_roles_from_groups: Set user roles in Looker based on groups from OIDC + token_endpoint: OpenID Provider Token Url + user_attribute_map_email: Name of user record attributes used to indicate email address field + user_attribute_map_first_name: Name of user record attributes used to indicate first name + user_attribute_map_last_name: Name of user record attributes used to indicate last name + user_attributes_with_ids: (Read/Write) Array of mappings between OIDC User Attributes and arrays of Looker User Attribute ids + userinfo_endpoint: OpenID Provider User Information Url + allow_normal_group_membership: Allow OIDC auth'd users to be members of non-reflected Looker groups. If 'false', user will be removed from non-reflected groups on login. + allow_roles_from_normal_groups: OIDC auth'd users will inherit roles from non-reflected Looker groups. + allow_direct_roles: Allows roles to be directly assigned to OIDC auth'd users. """ + alternate_email_login_allowed: Optional[bool] = None audience: Optional[str] = None auth_requires_role: Optional[bool] = None @@ -17792,31 +19347,34 @@ class WriteOIDCConfig(model.Model): allow_roles_from_normal_groups: Optional[bool] = None allow_direct_roles: Optional[bool] = None - def __init__(self, *, - alternate_email_login_allowed: Optional[bool] = None, - audience: Optional[str] = None, - auth_requires_role: Optional[bool] = None, - authorization_endpoint: Optional[str] = None, - default_new_user_group_ids: Optional[Sequence[str]] = None, - default_new_user_role_ids: Optional[Sequence[str]] = None, - enabled: Optional[bool] = None, - groups_attribute: Optional[str] = None, - groups_with_role_ids: Optional[Sequence["OIDCGroupWrite"]] = None, - identifier: Optional[str] = None, - issuer: Optional[str] = None, - new_user_migration_types: Optional[str] = None, - scopes: Optional[Sequence[str]] = None, - secret: Optional[str] = None, - set_roles_from_groups: Optional[bool] = None, - token_endpoint: Optional[str] = None, - user_attribute_map_email: Optional[str] = None, - user_attribute_map_first_name: Optional[str] = None, - user_attribute_map_last_name: Optional[str] = None, - user_attributes_with_ids: Optional[Sequence["OIDCUserAttributeWrite"]] = None, - userinfo_endpoint: Optional[str] = None, - allow_normal_group_membership: Optional[bool] = None, - allow_roles_from_normal_groups: Optional[bool] = None, - allow_direct_roles: Optional[bool] = None): + def __init__( + self, + *, + alternate_email_login_allowed: Optional[bool] = None, + audience: Optional[str] = None, + auth_requires_role: Optional[bool] = None, + authorization_endpoint: Optional[str] = None, + default_new_user_group_ids: Optional[Sequence[str]] = None, + default_new_user_role_ids: Optional[Sequence[str]] = None, + enabled: Optional[bool] = None, + groups_attribute: Optional[str] = None, + groups_with_role_ids: Optional[Sequence["OIDCGroupWrite"]] = None, + identifier: Optional[str] = None, + issuer: Optional[str] = None, + new_user_migration_types: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + secret: Optional[str] = None, + set_roles_from_groups: Optional[bool] = None, + token_endpoint: Optional[str] = None, + user_attribute_map_email: Optional[str] = None, + user_attribute_map_first_name: Optional[str] = None, + user_attribute_map_last_name: Optional[str] = None, + user_attributes_with_ids: Optional[Sequence["OIDCUserAttributeWrite"]] = None, + userinfo_endpoint: Optional[str] = None, + allow_normal_group_membership: Optional[bool] = None, + allow_roles_from_normal_groups: Optional[bool] = None, + allow_direct_roles: Optional[bool] = None + ): self.alternate_email_login_allowed = alternate_email_login_allowed self.audience = audience self.auth_requires_role = auth_requires_role @@ -17846,17 +19404,18 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WritePasswordConfig(model.Model): """ - Dynamic writeable type for PasswordConfig removes: -can, policy_enabled_at + Dynamic writeable type for PasswordConfig removes: + can, policy_enabled_at - Attributes: - min_length: Minimum number of characters required for a new password. Must be between 7 and 100 - require_numeric: Require at least one numeric character - require_upperlower: Require at least one uppercase and one lowercase letter - require_special: Require at least one special character - expiration_enabled: Enable/Disable password expiration policy. - expiration_duration_days: Number of days before passwords expire. Must be between 30 and 365. + Attributes: + min_length: Minimum number of characters required for a new password. Must be between 7 and 100 + require_numeric: Require at least one numeric character + require_upperlower: Require at least one uppercase and one lowercase letter + require_special: Require at least one special character + expiration_enabled: Enable/Disable password expiration policy. + expiration_duration_days: Number of days before passwords expire. Must be between 30 and 365. """ + min_length: Optional[int] = None require_numeric: Optional[bool] = None require_upperlower: Optional[bool] = None @@ -17864,13 +19423,16 @@ class WritePasswordConfig(model.Model): expiration_enabled: Optional[bool] = None expiration_duration_days: Optional[int] = None - def __init__(self, *, - min_length: Optional[int] = None, - require_numeric: Optional[bool] = None, - require_upperlower: Optional[bool] = None, - require_special: Optional[bool] = None, - expiration_enabled: Optional[bool] = None, - expiration_duration_days: Optional[int] = None): + def __init__( + self, + *, + min_length: Optional[int] = None, + require_numeric: Optional[bool] = None, + require_upperlower: Optional[bool] = None, + require_special: Optional[bool] = None, + expiration_enabled: Optional[bool] = None, + expiration_duration_days: Optional[int] = None + ): self.min_length = min_length self.require_numeric = require_numeric self.require_upperlower = require_upperlower @@ -17882,19 +19444,20 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WritePermissionSet(model.Model): """ - Dynamic writeable type for PermissionSet removes: -can, all_access, built_in, id, url + Dynamic writeable type for PermissionSet removes: + can, all_access, built_in, id, url - Attributes: - name: Name of PermissionSet - permissions: + Attributes: + name: Name of PermissionSet + permissions: """ + name: Optional[str] = None permissions: Optional[Sequence[str]] = None - def __init__(self, *, - name: Optional[str] = None, - permissions: Optional[Sequence[str]] = None): + def __init__( + self, *, name: Optional[str] = None, permissions: Optional[Sequence[str]] = None + ): self.name = name self.permissions = permissions @@ -17902,24 +19465,25 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WritePrivatelabelConfiguration(model.Model): """ - Dynamic writeable type for PrivatelabelConfiguration removes: -logo_url, favicon_url - - Attributes: - logo_file: Customer logo image. Expected base64 encoded data (write-only) - favicon_file: Custom favicon image. Expected base64 encoded data (write-only) - default_title: Default page title - show_help_menu: Boolean to toggle showing help menus - show_docs: Boolean to toggle showing docs - show_email_sub_options: Boolean to toggle showing email subscription options. - allow_looker_mentions: Boolean to toggle mentions of Looker in emails - allow_looker_links: Boolean to toggle links to Looker in emails - custom_welcome_email_advanced: Allow subject line and email heading customization in customized emails” - setup_mentions: Remove the word Looker from appearing in the account setup page - alerts_logo: Remove Looker logo from Alerts - alerts_links: Remove Looker links from Alerts - folders_mentions: Remove Looker mentions in home folder page when you don’t have any items saved + Dynamic writeable type for PrivatelabelConfiguration removes: + logo_url, favicon_url + + Attributes: + logo_file: Customer logo image. Expected base64 encoded data (write-only) + favicon_file: Custom favicon image. Expected base64 encoded data (write-only) + default_title: Default page title + show_help_menu: Boolean to toggle showing help menus + show_docs: Boolean to toggle showing docs + show_email_sub_options: Boolean to toggle showing email subscription options. + allow_looker_mentions: Boolean to toggle mentions of Looker in emails + allow_looker_links: Boolean to toggle links to Looker in emails + custom_welcome_email_advanced: Allow subject line and email heading customization in customized emails” + setup_mentions: Remove the word Looker from appearing in the account setup page + alerts_logo: Remove Looker logo from Alerts + alerts_links: Remove Looker links from Alerts + folders_mentions: Remove Looker mentions in home folder page when you don’t have any items saved """ + logo_file: Optional[str] = None favicon_file: Optional[str] = None default_title: Optional[str] = None @@ -17934,20 +19498,23 @@ class WritePrivatelabelConfiguration(model.Model): alerts_links: Optional[bool] = None folders_mentions: Optional[bool] = None - def __init__(self, *, - logo_file: Optional[str] = None, - favicon_file: Optional[str] = None, - default_title: Optional[str] = None, - show_help_menu: Optional[bool] = None, - show_docs: Optional[bool] = None, - show_email_sub_options: Optional[bool] = None, - allow_looker_mentions: Optional[bool] = None, - allow_looker_links: Optional[bool] = None, - custom_welcome_email_advanced: Optional[bool] = None, - setup_mentions: Optional[bool] = None, - alerts_logo: Optional[bool] = None, - alerts_links: Optional[bool] = None, - folders_mentions: Optional[bool] = None): + def __init__( + self, + *, + logo_file: Optional[str] = None, + favicon_file: Optional[str] = None, + default_title: Optional[str] = None, + show_help_menu: Optional[bool] = None, + show_docs: Optional[bool] = None, + show_email_sub_options: Optional[bool] = None, + allow_looker_mentions: Optional[bool] = None, + allow_looker_links: Optional[bool] = None, + custom_welcome_email_advanced: Optional[bool] = None, + setup_mentions: Optional[bool] = None, + alerts_logo: Optional[bool] = None, + alerts_links: Optional[bool] = None, + folders_mentions: Optional[bool] = None + ): self.logo_file = logo_file self.favicon_file = favicon_file self.default_title = default_title @@ -17966,29 +19533,30 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteProject(model.Model): """ - Dynamic writeable type for Project removes: -can, id, uses_git, is_git_dev_locked, is_example, has_production_counterpart - - Attributes: - name: Project display name - git_remote_url: Git remote repository url - git_username: Git username for HTTPS authentication. (For production only, if using user attributes.) - git_password: (Write-Only) Git password for HTTPS authentication. (For production only, if using user attributes.) - git_production_branch_name: Git production branch name. Defaults to master. Supported only in Looker 21.0 and higher. - use_git_cookie_auth: If true, the project uses a git cookie for authentication. - git_username_user_attribute: User attribute name for username in per-user HTTPS authentication. - git_password_user_attribute: User attribute name for password in per-user HTTPS authentication. - git_service_name: Name of the git service provider - git_application_server_http_port: Port that HTTP(S) application server is running on (for PRs, file browsing, etc.) - git_application_server_http_scheme: Scheme that is running on application server (for PRs, file browsing, etc.) - deploy_secret: (Write-Only) Optional secret token with which to authenticate requests to the webhook deploy endpoint. If not set, endpoint is unauthenticated. - unset_deploy_secret: (Write-Only) When true, unsets the deploy secret to allow unauthenticated access to the webhook deploy endpoint. - pull_request_mode: The git pull request policy for this project. Valid values are: "off", "links", "recommended", "required". - validation_required: Validation policy: If true, the project must pass validation checks before project changes can be committed to the git repository - git_release_mgmt_enabled: If true, advanced git release management is enabled for this project - allow_warnings: Validation policy: If true, the project can be committed with warnings when `validation_required` is true. (`allow_warnings` does nothing if `validation_required` is false). - dependency_status: Status of dependencies in your manifest & lockfile + Dynamic writeable type for Project removes: + can, id, uses_git, is_git_dev_locked, is_example, has_production_counterpart + + Attributes: + name: Project display name + git_remote_url: Git remote repository url + git_username: Git username for HTTPS authentication. (For production only, if using user attributes.) + git_password: (Write-Only) Git password for HTTPS authentication. (For production only, if using user attributes.) + git_production_branch_name: Git production branch name. Defaults to master. Supported only in Looker 21.0 and higher. + use_git_cookie_auth: If true, the project uses a git cookie for authentication. + git_username_user_attribute: User attribute name for username in per-user HTTPS authentication. + git_password_user_attribute: User attribute name for password in per-user HTTPS authentication. + git_service_name: Name of the git service provider + git_application_server_http_port: Port that HTTP(S) application server is running on (for PRs, file browsing, etc.) + git_application_server_http_scheme: Scheme that is running on application server (for PRs, file browsing, etc.) + deploy_secret: (Write-Only) Optional secret token with which to authenticate requests to the webhook deploy endpoint. If not set, endpoint is unauthenticated. + unset_deploy_secret: (Write-Only) When true, unsets the deploy secret to allow unauthenticated access to the webhook deploy endpoint. + pull_request_mode: The git pull request policy for this project. Valid values are: "off", "links", "recommended", "required". + validation_required: Validation policy: If true, the project must pass validation checks before project changes can be committed to the git repository + git_release_mgmt_enabled: If true, advanced git release management is enabled for this project + allow_warnings: Validation policy: If true, the project can be committed with warnings when `validation_required` is true. (`allow_warnings` does nothing if `validation_required` is false). + dependency_status: Status of dependencies in your manifest & lockfile """ + name: Optional[str] = None git_remote_url: Optional[str] = None git_username: Optional[str] = None @@ -18008,25 +19576,28 @@ class WriteProject(model.Model): allow_warnings: Optional[bool] = None dependency_status: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - git_remote_url: Optional[str] = None, - git_username: Optional[str] = None, - git_password: Optional[str] = None, - git_production_branch_name: Optional[str] = None, - use_git_cookie_auth: Optional[bool] = None, - git_username_user_attribute: Optional[str] = None, - git_password_user_attribute: Optional[str] = None, - git_service_name: Optional[str] = None, - git_application_server_http_port: Optional[int] = None, - git_application_server_http_scheme: Optional[str] = None, - deploy_secret: Optional[str] = None, - unset_deploy_secret: Optional[bool] = None, - pull_request_mode: Optional["PullRequestMode"] = None, - validation_required: Optional[bool] = None, - git_release_mgmt_enabled: Optional[bool] = None, - allow_warnings: Optional[bool] = None, - dependency_status: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + git_remote_url: Optional[str] = None, + git_username: Optional[str] = None, + git_password: Optional[str] = None, + git_production_branch_name: Optional[str] = None, + use_git_cookie_auth: Optional[bool] = None, + git_username_user_attribute: Optional[str] = None, + git_password_user_attribute: Optional[str] = None, + git_service_name: Optional[str] = None, + git_application_server_http_port: Optional[int] = None, + git_application_server_http_scheme: Optional[str] = None, + deploy_secret: Optional[str] = None, + unset_deploy_secret: Optional[bool] = None, + pull_request_mode: Optional["PullRequestMode"] = None, + validation_required: Optional[bool] = None, + git_release_mgmt_enabled: Optional[bool] = None, + allow_warnings: Optional[bool] = None, + dependency_status: Optional[str] = None + ): self.name = name self.git_remote_url = git_remote_url self.git_username = git_username @@ -18050,30 +19621,31 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteQuery(model.Model): """ - Dynamic writeable type for Query removes: -can, id, slug, share_url, expanded_share_url, url, has_table_calculations - - Attributes: - model: Model - view: Explore Name - fields: Fields - pivots: Pivots - fill_fields: Fill Fields - filters: Filters will contain data pertaining to complex filters that do not contain "or" conditions. When "or" conditions are present, filter data will be found on the `filter_expression` property. - filter_expression: Filter Expression - sorts: Sorting for the query results. Use the format `["view.field", ...]` to sort on fields in ascending order. Use the format `["view.field desc", ...]` to sort on fields in descending order. Use `["__UNSORTED__"]` (2 underscores before and after) to disable sorting entirely. Empty sorts `[]` will trigger a default sort. - limit: Row limit. To download unlimited results, set the limit to -1 (negative one). - column_limit: Column Limit - total: Total - row_total: Raw Total - subtotals: Fields on which to run subtotals - vis_config: Visualization configuration properties. These properties are typically opaque and differ based on the type of visualization used. There is no specified set of allowed keys. The values can be any type supported by JSON. A "type" key with a string value is often present, and is used by Looker to determine which visualization to present. Visualizations ignore unknown vis_config properties. - filter_config: The filter_config represents the state of the filter UI on the explore page for a given query. When running a query via the Looker UI, this parameter takes precedence over "filters". When creating a query or modifying an existing query, "filter_config" should be set to null. Setting it to any other value could cause unexpected filtering behavior. The format should be considered opaque. - visible_ui_sections: Visible UI Sections - dynamic_fields: Dynamic Fields - client_id: Client Id: used to generate shortened explore URLs. If set by client, must be a unique 22 character alphanumeric string. Otherwise one will be generated. - query_timezone: Query Timezone + Dynamic writeable type for Query removes: + can, id, slug, share_url, expanded_share_url, url, has_table_calculations + + Attributes: + model: Model + view: Explore Name + fields: Fields + pivots: Pivots + fill_fields: Fill Fields + filters: Filters will contain data pertaining to complex filters that do not contain "or" conditions. When "or" conditions are present, filter data will be found on the `filter_expression` property. + filter_expression: Filter Expression + sorts: Sorting for the query results. Use the format `["view.field", ...]` to sort on fields in ascending order. Use the format `["view.field desc", ...]` to sort on fields in descending order. Use `["__UNSORTED__"]` (2 underscores before and after) to disable sorting entirely. Empty sorts `[]` will trigger a default sort. + limit: Row limit. To download unlimited results, set the limit to -1 (negative one). + column_limit: Column Limit + total: Total + row_total: Raw Total + subtotals: Fields on which to run subtotals + vis_config: Visualization configuration properties. These properties are typically opaque and differ based on the type of visualization used. There is no specified set of allowed keys. The values can be any type supported by JSON. A "type" key with a string value is often present, and is used by Looker to determine which visualization to present. Visualizations ignore unknown vis_config properties. + filter_config: The filter_config represents the state of the filter UI on the explore page for a given query. When running a query via the Looker UI, this parameter takes precedence over "filters". When creating a query or modifying an existing query, "filter_config" should be set to null. Setting it to any other value could cause unexpected filtering behavior. The format should be considered opaque. + visible_ui_sections: Visible UI Sections + dynamic_fields: Dynamic Fields + client_id: Client Id: used to generate shortened explore URLs. If set by client, must be a unique 22 character alphanumeric string. Otherwise one will be generated. + query_timezone: Query Timezone """ + model: str view: str fields: Optional[Sequence[str]] = None @@ -18094,26 +19666,29 @@ class WriteQuery(model.Model): client_id: Optional[str] = None query_timezone: Optional[str] = None - def __init__(self, *, - model: str, - view: str, - fields: Optional[Sequence[str]] = None, - pivots: Optional[Sequence[str]] = None, - fill_fields: Optional[Sequence[str]] = None, - filters: Optional[MutableMapping[str, Any]] = None, - filter_expression: Optional[str] = None, - sorts: Optional[Sequence[str]] = None, - limit: Optional[str] = None, - column_limit: Optional[str] = None, - total: Optional[bool] = None, - row_total: Optional[str] = None, - subtotals: Optional[Sequence[str]] = None, - vis_config: Optional[MutableMapping[str, Any]] = None, - filter_config: Optional[MutableMapping[str, Any]] = None, - visible_ui_sections: Optional[str] = None, - dynamic_fields: Optional[str] = None, - client_id: Optional[str] = None, - query_timezone: Optional[str] = None): + def __init__( + self, + *, + model: str, + view: str, + fields: Optional[Sequence[str]] = None, + pivots: Optional[Sequence[str]] = None, + fill_fields: Optional[Sequence[str]] = None, + filters: Optional[MutableMapping[str, Any]] = None, + filter_expression: Optional[str] = None, + sorts: Optional[Sequence[str]] = None, + limit: Optional[str] = None, + column_limit: Optional[str] = None, + total: Optional[bool] = None, + row_total: Optional[str] = None, + subtotals: Optional[Sequence[str]] = None, + vis_config: Optional[MutableMapping[str, Any]] = None, + filter_config: Optional[MutableMapping[str, Any]] = None, + visible_ui_sections: Optional[str] = None, + dynamic_fields: Optional[str] = None, + client_id: Optional[str] = None, + query_timezone: Optional[str] = None + ): self.model = model self.view = view self.fields = fields @@ -18138,22 +19713,26 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteRepositoryCredential(model.Model): """ - Dynamic writeable type for RepositoryCredential removes: -can, id, root_project_id, remote_url, is_configured + Dynamic writeable type for RepositoryCredential removes: + can, id, root_project_id, remote_url, is_configured - Attributes: - git_username: Git username for HTTPS authentication. - git_password: (Write-Only) Git password for HTTPS authentication. - ssh_public_key: Public deploy key for SSH authentication. + Attributes: + git_username: Git username for HTTPS authentication. + git_password: (Write-Only) Git password for HTTPS authentication. + ssh_public_key: Public deploy key for SSH authentication. """ + git_username: Optional[str] = None git_password: Optional[str] = None ssh_public_key: Optional[str] = None - def __init__(self, *, - git_username: Optional[str] = None, - git_password: Optional[str] = None, - ssh_public_key: Optional[str] = None): + def __init__( + self, + *, + git_username: Optional[str] = None, + git_password: Optional[str] = None, + ssh_public_key: Optional[str] = None + ): self.git_username = git_username self.git_password = git_password self.ssh_public_key = ssh_public_key @@ -18162,20 +19741,21 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteResultMakerWithIdVisConfigAndDynamicFields(model.Model): """ - Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: -id, query_id + Dynamic writeable type for ResultMakerWithIdVisConfigAndDynamicFields removes: + id, query_id - Attributes: - dynamic_fields: JSON string of dynamic field information. - filterables: array of items that can be filtered and information about them. - sorts: Sorts of the constituent Look, Query, or Merge Query - merge_result_id: ID of merge result if this is a merge_result. - total: Total of the constituent Look, Query, or Merge Query - sql_query_id: ID of SQL Query if this is a SQL Runner Query - query: Dynamic writeable type for Query removes: -can, id, slug, share_url, expanded_share_url, url, has_table_calculations - vis_config: Vis config of the constituent Query, or Merge Query. + Attributes: + dynamic_fields: JSON string of dynamic field information. + filterables: array of items that can be filtered and information about them. + sorts: Sorts of the constituent Look, Query, or Merge Query + merge_result_id: ID of merge result if this is a merge_result. + total: Total of the constituent Look, Query, or Merge Query + sql_query_id: ID of SQL Query if this is a SQL Runner Query + query: Dynamic writeable type for Query removes: + can, id, slug, share_url, expanded_share_url, url, has_table_calculations + vis_config: Vis config of the constituent Query, or Merge Query. """ + dynamic_fields: Optional[str] = None filterables: Optional[Sequence["ResultMakerFilterables"]] = None sorts: Optional[Sequence[str]] = None @@ -18185,15 +19765,18 @@ class WriteResultMakerWithIdVisConfigAndDynamicFields(model.Model): query: Optional["WriteQuery"] = None vis_config: Optional[MutableMapping[str, Any]] = None - def __init__(self, *, - dynamic_fields: Optional[str] = None, - filterables: Optional[Sequence["ResultMakerFilterables"]] = None, - sorts: Optional[Sequence[str]] = None, - merge_result_id: Optional[str] = None, - total: Optional[bool] = None, - sql_query_id: Optional[str] = None, - query: Optional["WriteQuery"] = None, - vis_config: Optional[MutableMapping[str, Any]] = None): + def __init__( + self, + *, + dynamic_fields: Optional[str] = None, + filterables: Optional[Sequence["ResultMakerFilterables"]] = None, + sorts: Optional[Sequence[str]] = None, + merge_result_id: Optional[str] = None, + total: Optional[bool] = None, + sql_query_id: Optional[str] = None, + query: Optional["WriteQuery"] = None, + vis_config: Optional[MutableMapping[str, Any]] = None + ): self.dynamic_fields = dynamic_fields self.filterables = filterables self.sorts = sorts @@ -18207,30 +19790,34 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteRole(model.Model): """ - Dynamic writeable type for Role removes: -can, id, internal, url, users_url + Dynamic writeable type for Role removes: + can, id, internal, url, users_url - Attributes: - name: Name of Role - permission_set: Dynamic writeable type for PermissionSet removes: -can, all_access, built_in, id, url - permission_set_id: (Write-Only) Id of permission set - model_set: Dynamic writeable type for ModelSet removes: -can, all_access, built_in, id, url - model_set_id: (Write-Only) Id of model set + Attributes: + name: Name of Role + permission_set: Dynamic writeable type for PermissionSet removes: + can, all_access, built_in, id, url + permission_set_id: (Write-Only) Id of permission set + model_set: Dynamic writeable type for ModelSet removes: + can, all_access, built_in, id, url + model_set_id: (Write-Only) Id of model set """ + name: Optional[str] = None permission_set: Optional["WritePermissionSet"] = None permission_set_id: Optional[str] = None model_set: Optional["WriteModelSet"] = None model_set_id: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - permission_set: Optional["WritePermissionSet"] = None, - permission_set_id: Optional[str] = None, - model_set: Optional["WriteModelSet"] = None, - model_set_id: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + permission_set: Optional["WritePermissionSet"] = None, + permission_set_id: Optional[str] = None, + model_set: Optional["WriteModelSet"] = None, + model_set_id: Optional[str] = None + ): self.name = name self.permission_set = permission_set self.permission_set_id = permission_set_id @@ -18241,37 +19828,38 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteSamlConfig(model.Model): """ - Dynamic writeable type for SamlConfig removes: -can, test_slug, modified_at, modified_by, default_new_user_roles, default_new_user_groups, groups, user_attributes, url - - Attributes: - enabled: Enable/Disable Saml authentication for the server - idp_cert: Identity Provider Certificate (provided by IdP) - idp_cert_multi: - multi_certs_supported: Indicates whether this SAML configuration is set up to use multiple Identity Provider certificates (idp_cert_multi) or a single certificate (idp_cert). When true, idp_cert_multi is used; otherwise, idp_cert is used. - idp_url: Identity Provider Url (provided by IdP) - idp_issuer: Identity Provider Issuer (provided by IdP) - idp_audience: Identity Provider Audience (set in IdP config). Optional in Looker. Set this only if you want Looker to validate the audience value returned by the IdP. - allowed_clock_drift: Count of seconds of clock drift to allow when validating timestamps of assertions. - user_attribute_map_email: Name of user record attributes used to indicate email address field - user_attribute_map_first_name: Name of user record attributes used to indicate first name - user_attribute_map_last_name: Name of user record attributes used to indicate last name - new_user_migration_types: Merge first-time saml login to existing user account by email addresses. When a user logs in for the first time via saml this option will connect this user into their existing account by finding the account with a matching email address by testing the given types of credentials for existing users. Otherwise a new user account will be created for the user. This list (if provided) must be a comma separated list of string like 'email,ldap,google' - alternate_email_login_allowed: Allow alternate email-based login via '/login/email' for admins and for specified users with the 'login_special_email' permission. This option is useful as a fallback during ldap setup, if ldap config problems occur later, or if you need to support some users who are not in your ldap directory. Looker email/password logins are always disabled for regular users when ldap is enabled. - default_new_user_role_ids: (Write-Only) Array of ids of roles that will be applied to new users the first time they login via Saml - default_new_user_group_ids: (Write-Only) Array of ids of groups that will be applied to new users the first time they login via Saml - set_roles_from_groups: Set user roles in Looker based on groups from Saml - groups_attribute: Name of user record attributes used to indicate groups. Used when 'groups_finder_type' is set to 'grouped_attribute_values' - groups_with_role_ids: (Read/Write) Array of mappings between Saml Groups and arrays of Looker Role ids - auth_requires_role: Users will not be allowed to login at all unless a role for them is found in Saml if set to true - user_attributes_with_ids: (Read/Write) Array of mappings between Saml User Attributes and arrays of Looker User Attribute ids - groups_finder_type: Identifier for a strategy for how Looker will find groups in the SAML response. One of ['grouped_attribute_values', 'individual_attributes'] - groups_member_value: Value for group attribute used to indicate membership. Used when 'groups_finder_type' is set to 'individual_attributes' - bypass_login_page: Bypass the login page when user authentication is required. Redirect to IdP immediately instead. - allow_normal_group_membership: Allow SAML auth'd users to be members of non-reflected Looker groups. If 'false', user will be removed from non-reflected groups on login. - allow_roles_from_normal_groups: SAML auth'd users will inherit roles from non-reflected Looker groups. - allow_direct_roles: Allows roles to be directly assigned to SAML auth'd users. + Dynamic writeable type for SamlConfig removes: + can, test_slug, modified_at, modified_by, default_new_user_roles, default_new_user_groups, groups, user_attributes, url + + Attributes: + enabled: Enable/Disable Saml authentication for the server + idp_cert: Identity Provider Certificate (provided by IdP) + idp_cert_multi: + multi_certs_supported: Indicates whether this SAML configuration is set up to use multiple Identity Provider certificates (idp_cert_multi) or a single certificate (idp_cert). When true, idp_cert_multi is used; otherwise, idp_cert is used. + idp_url: Identity Provider Url (provided by IdP) + idp_issuer: Identity Provider Issuer (provided by IdP) + idp_audience: Identity Provider Audience (set in IdP config). Optional in Looker. Set this only if you want Looker to validate the audience value returned by the IdP. + allowed_clock_drift: Count of seconds of clock drift to allow when validating timestamps of assertions. + user_attribute_map_email: Name of user record attributes used to indicate email address field + user_attribute_map_first_name: Name of user record attributes used to indicate first name + user_attribute_map_last_name: Name of user record attributes used to indicate last name + new_user_migration_types: Merge first-time saml login to existing user account by email addresses. When a user logs in for the first time via saml this option will connect this user into their existing account by finding the account with a matching email address by testing the given types of credentials for existing users. Otherwise a new user account will be created for the user. This list (if provided) must be a comma separated list of string like 'email,ldap,google' + alternate_email_login_allowed: Allow alternate email-based login via '/login/email' for admins and for specified users with the 'login_special_email' permission. This option is useful as a fallback during ldap setup, if ldap config problems occur later, or if you need to support some users who are not in your ldap directory. Looker email/password logins are always disabled for regular users when ldap is enabled. + default_new_user_role_ids: (Write-Only) Array of ids of roles that will be applied to new users the first time they login via Saml + default_new_user_group_ids: (Write-Only) Array of ids of groups that will be applied to new users the first time they login via Saml + set_roles_from_groups: Set user roles in Looker based on groups from Saml + groups_attribute: Name of user record attributes used to indicate groups. Used when 'groups_finder_type' is set to 'grouped_attribute_values' + groups_with_role_ids: (Read/Write) Array of mappings between Saml Groups and arrays of Looker Role ids + auth_requires_role: Users will not be allowed to login at all unless a role for them is found in Saml if set to true + user_attributes_with_ids: (Read/Write) Array of mappings between Saml User Attributes and arrays of Looker User Attribute ids + groups_finder_type: Identifier for a strategy for how Looker will find groups in the SAML response. One of ['grouped_attribute_values', 'individual_attributes'] + groups_member_value: Value for group attribute used to indicate membership. Used when 'groups_finder_type' is set to 'individual_attributes' + bypass_login_page: Bypass the login page when user authentication is required. Redirect to IdP immediately instead. + allow_normal_group_membership: Allow SAML auth'd users to be members of non-reflected Looker groups. If 'false', user will be removed from non-reflected groups on login. + allow_roles_from_normal_groups: SAML auth'd users will inherit roles from non-reflected Looker groups. + allow_direct_roles: Allows roles to be directly assigned to SAML auth'd users. """ + enabled: Optional[bool] = None idp_cert: Optional[str] = None idp_cert_multi: Optional["SamlIdpCertMulti"] = None @@ -18299,33 +19887,36 @@ class WriteSamlConfig(model.Model): allow_roles_from_normal_groups: Optional[bool] = None allow_direct_roles: Optional[bool] = None - def __init__(self, *, - enabled: Optional[bool] = None, - idp_cert: Optional[str] = None, - idp_cert_multi: Optional["SamlIdpCertMulti"] = None, - multi_certs_supported: Optional[bool] = None, - idp_url: Optional[str] = None, - idp_issuer: Optional[str] = None, - idp_audience: Optional[str] = None, - allowed_clock_drift: Optional[int] = None, - user_attribute_map_email: Optional[str] = None, - user_attribute_map_first_name: Optional[str] = None, - user_attribute_map_last_name: Optional[str] = None, - new_user_migration_types: Optional[str] = None, - alternate_email_login_allowed: Optional[bool] = None, - default_new_user_role_ids: Optional[Sequence[str]] = None, - default_new_user_group_ids: Optional[Sequence[str]] = None, - set_roles_from_groups: Optional[bool] = None, - groups_attribute: Optional[str] = None, - groups_with_role_ids: Optional[Sequence["SamlGroupWrite"]] = None, - auth_requires_role: Optional[bool] = None, - user_attributes_with_ids: Optional[Sequence["SamlUserAttributeWrite"]] = None, - groups_finder_type: Optional[str] = None, - groups_member_value: Optional[str] = None, - bypass_login_page: Optional[bool] = None, - allow_normal_group_membership: Optional[bool] = None, - allow_roles_from_normal_groups: Optional[bool] = None, - allow_direct_roles: Optional[bool] = None): + def __init__( + self, + *, + enabled: Optional[bool] = None, + idp_cert: Optional[str] = None, + idp_cert_multi: Optional["SamlIdpCertMulti"] = None, + multi_certs_supported: Optional[bool] = None, + idp_url: Optional[str] = None, + idp_issuer: Optional[str] = None, + idp_audience: Optional[str] = None, + allowed_clock_drift: Optional[int] = None, + user_attribute_map_email: Optional[str] = None, + user_attribute_map_first_name: Optional[str] = None, + user_attribute_map_last_name: Optional[str] = None, + new_user_migration_types: Optional[str] = None, + alternate_email_login_allowed: Optional[bool] = None, + default_new_user_role_ids: Optional[Sequence[str]] = None, + default_new_user_group_ids: Optional[Sequence[str]] = None, + set_roles_from_groups: Optional[bool] = None, + groups_attribute: Optional[str] = None, + groups_with_role_ids: Optional[Sequence["SamlGroupWrite"]] = None, + auth_requires_role: Optional[bool] = None, + user_attributes_with_ids: Optional[Sequence["SamlUserAttributeWrite"]] = None, + groups_finder_type: Optional[str] = None, + groups_member_value: Optional[str] = None, + bypass_login_page: Optional[bool] = None, + allow_normal_group_membership: Optional[bool] = None, + allow_roles_from_normal_groups: Optional[bool] = None, + allow_direct_roles: Optional[bool] = None + ): self.enabled = enabled self.idp_cert = idp_cert self.idp_cert_multi = idp_cert_multi @@ -18357,43 +19948,45 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteScheduledPlan(model.Model): """ - Dynamic writeable type for ScheduledPlan removes: -id, created_at, updated_at, title, user, next_run_at, last_run_at, can - - Attributes: - name: Name of this scheduled plan - user_id: User Id which owns this scheduled plan - run_as_recipient: Whether schedule is run as recipient (only applicable for email recipients) - enabled: Whether the ScheduledPlan is enabled - look_id: Id of a look - dashboard_id: Id of a dashboard - lookml_dashboard_id: Id of a LookML dashboard - filters_string: Query string to run look or dashboard with - dashboard_filters: (DEPRECATED) Alias for filters_string field - require_results: Delivery should occur if running the dashboard or look returns results - require_no_results: Delivery should occur if the dashboard look does not return results - require_change: Delivery should occur if data have changed since the last run - send_all_results: Will run an unlimited query and send all results. - crontab: Vixie-Style crontab specification when to run - datagroup: Name of a datagroup; if specified will run when datagroup triggered (can't be used with cron string) - timezone: Timezone for interpreting the specified crontab (default is Looker instance timezone) - scheduled_plan_destination: Scheduled plan destinations - run_once: Whether the plan in question should only be run once (usually for testing) - include_links: Whether links back to Looker should be included in this ScheduledPlan - custom_url_base: Custom url domain for the scheduled entity - custom_url_params: Custom url path and parameters for the scheduled entity - custom_url_label: Custom url label for the scheduled entity - show_custom_url: Whether to show custom link back instead of standard looker link - pdf_paper_size: The size of paper the PDF should be formatted to fit. Valid values are: "letter", "legal", "tabloid", "a0", "a1", "a2", "a3", "a4", "a5". - pdf_landscape: Whether the PDF should be formatted for landscape orientation - embed: Whether this schedule is in an embed context or not - color_theme: Color scheme of the dashboard if applicable - long_tables: Whether or not to expand table vis to full length - pdf_page_breaks: Whether or not to add page breaks between tabs - tab_ids: IDs of tabs to render (ID on a UDD and a tab label on lookml dashboards) - inline_table_width: The pixel width at which we render the inline table visualizations - query_id: Query id + Dynamic writeable type for ScheduledPlan removes: + id, created_at, updated_at, title, user, next_run_at, last_run_at, can + + Attributes: + name: Name of this scheduled plan + user_id: User Id which owns this scheduled plan + run_as_recipient: Whether schedule is run as recipient (only applicable for email recipients) + enabled: Whether the ScheduledPlan is enabled + look_id: Id of a look + dashboard_id: Id of a dashboard + lookml_dashboard_id: Id of a LookML dashboard + filters_string: Query string to run look or dashboard with + dashboard_filters: (DEPRECATED) Alias for filters_string field + require_results: Delivery should occur if running the dashboard or look returns results + require_no_results: Delivery should occur if the dashboard look does not return results + require_change: Delivery should occur if data have changed since the last run + send_all_results: Will run an unlimited query and send all results. + crontab: Vixie-Style crontab specification when to run + datagroup: Name of a datagroup; if specified will run when datagroup triggered (can't be used with cron string) + timezone: Timezone for interpreting the specified crontab (default is Looker instance timezone) + scheduled_plan_destination: Scheduled plan destinations + run_once: Whether the plan in question should only be run once (usually for testing) + include_links: Whether links back to Looker should be included in this ScheduledPlan + include_dashboard_summary: Whether to include a dashboard summary in the scheduled email + custom_url_base: Custom url domain for the scheduled entity + custom_url_params: Custom url path and parameters for the scheduled entity + custom_url_label: Custom url label for the scheduled entity + show_custom_url: Whether to show custom link back instead of standard looker link + pdf_paper_size: The size of paper the PDF should be formatted to fit. Valid values are: "letter", "legal", "tabloid", "a0", "a1", "a2", "a3", "a4", "a5". + pdf_landscape: Whether the PDF should be formatted for landscape orientation + embed: Whether this schedule is in an embed context or not + color_theme: Color scheme of the dashboard if applicable + long_tables: Whether or not to expand table vis to full length + pdf_page_breaks: Whether or not to add page breaks between tabs + tab_ids: IDs of tabs to render (ID on a UDD and a tab label on lookml dashboards) + inline_table_width: The pixel width at which we render the inline table visualizations + query_id: Query id """ + name: Optional[str] = None user_id: Optional[str] = None run_as_recipient: Optional[bool] = None @@ -18413,6 +20006,7 @@ class WriteScheduledPlan(model.Model): scheduled_plan_destination: Optional[Sequence["ScheduledPlanDestination"]] = None run_once: Optional[bool] = None include_links: Optional[bool] = None + include_dashboard_summary: Optional[bool] = None custom_url_base: Optional[str] = None custom_url_params: Optional[str] = None custom_url_label: Optional[str] = None @@ -18427,39 +20021,45 @@ class WriteScheduledPlan(model.Model): inline_table_width: Optional[int] = None query_id: Optional[str] = None - def __init__(self, *, - name: Optional[str] = None, - user_id: Optional[str] = None, - run_as_recipient: Optional[bool] = None, - enabled: Optional[bool] = None, - look_id: Optional[str] = None, - dashboard_id: Optional[str] = None, - lookml_dashboard_id: Optional[str] = None, - filters_string: Optional[str] = None, - dashboard_filters: Optional[str] = None, - require_results: Optional[bool] = None, - require_no_results: Optional[bool] = None, - require_change: Optional[bool] = None, - send_all_results: Optional[bool] = None, - crontab: Optional[str] = None, - datagroup: Optional[str] = None, - timezone: Optional[str] = None, - scheduled_plan_destination: Optional[Sequence["ScheduledPlanDestination"]] = None, - run_once: Optional[bool] = None, - include_links: Optional[bool] = None, - custom_url_base: Optional[str] = None, - custom_url_params: Optional[str] = None, - custom_url_label: Optional[str] = None, - show_custom_url: Optional[bool] = None, - pdf_paper_size: Optional[str] = None, - pdf_landscape: Optional[bool] = None, - embed: Optional[bool] = None, - color_theme: Optional[str] = None, - long_tables: Optional[bool] = None, - pdf_page_breaks: Optional[bool] = None, - tab_ids: Optional[Sequence[str]] = None, - inline_table_width: Optional[int] = None, - query_id: Optional[str] = None): + def __init__( + self, + *, + name: Optional[str] = None, + user_id: Optional[str] = None, + run_as_recipient: Optional[bool] = None, + enabled: Optional[bool] = None, + look_id: Optional[str] = None, + dashboard_id: Optional[str] = None, + lookml_dashboard_id: Optional[str] = None, + filters_string: Optional[str] = None, + dashboard_filters: Optional[str] = None, + require_results: Optional[bool] = None, + require_no_results: Optional[bool] = None, + require_change: Optional[bool] = None, + send_all_results: Optional[bool] = None, + crontab: Optional[str] = None, + datagroup: Optional[str] = None, + timezone: Optional[str] = None, + scheduled_plan_destination: Optional[ + Sequence["ScheduledPlanDestination"] + ] = None, + run_once: Optional[bool] = None, + include_links: Optional[bool] = None, + include_dashboard_summary: Optional[bool] = None, + custom_url_base: Optional[str] = None, + custom_url_params: Optional[str] = None, + custom_url_label: Optional[str] = None, + show_custom_url: Optional[bool] = None, + pdf_paper_size: Optional[str] = None, + pdf_landscape: Optional[bool] = None, + embed: Optional[bool] = None, + color_theme: Optional[str] = None, + long_tables: Optional[bool] = None, + pdf_page_breaks: Optional[bool] = None, + tab_ids: Optional[Sequence[str]] = None, + inline_table_width: Optional[int] = None, + query_id: Optional[str] = None + ): self.name = name self.user_id = user_id self.run_as_recipient = run_as_recipient @@ -18479,6 +20079,7 @@ def __init__(self, *, self.scheduled_plan_destination = scheduled_plan_destination self.run_once = run_once self.include_links = include_links + self.include_dashboard_summary = include_dashboard_summary self.custom_url_base = custom_url_base self.custom_url_params = custom_url_params self.custom_url_label = custom_url_label @@ -18497,19 +20098,23 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteServiceAccount(model.Model): """ - Dynamic writeable type for ServiceAccount removes: -can, id, is_service_account, group_ids, role_ids, credentials_api3, created_at, url + Dynamic writeable type for ServiceAccount removes: + can, id, is_service_account, group_ids, role_ids, credentials_api3, created_at, url - Attributes: - service_account_name: Display name of the service account. - is_disabled: Indicates if the service account is disabled + Attributes: + service_account_name: Display name of the service account. + is_disabled: Indicates if the service account is disabled """ + service_account_name: Optional[str] = None is_disabled: Optional[bool] = None - def __init__(self, *, - service_account_name: Optional[str] = None, - is_disabled: Optional[bool] = None): + def __init__( + self, + *, + service_account_name: Optional[str] = None, + is_disabled: Optional[bool] = None + ): self.service_account_name = service_account_name self.is_disabled = is_disabled @@ -18517,28 +20122,32 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteSessionConfig(model.Model): """ - Dynamic writeable type for SessionConfig removes: -can + Dynamic writeable type for SessionConfig removes: + can - Attributes: - allow_persistent_sessions: Allow users to have persistent sessions when they login - session_minutes: Number of minutes for user sessions. Must be between 5 and 43200 - unlimited_sessions_per_user: Allow users to have an unbounded number of concurrent sessions (otherwise, users will be limited to only one session at a time). - use_inactivity_based_logout: Enforce session logout for sessions that are inactive for 15 minutes. - track_session_location: Track location of session when user logs in. + Attributes: + allow_persistent_sessions: Allow users to have persistent sessions when they login + session_minutes: Number of minutes for user sessions. Must be between 5 and 43200 + unlimited_sessions_per_user: Allow users to have an unbounded number of concurrent sessions (otherwise, users will be limited to only one session at a time). + use_inactivity_based_logout: Enforce session logout for sessions that are inactive for 15 minutes. + track_session_location: Track location of session when user logs in. """ + allow_persistent_sessions: Optional[bool] = None session_minutes: Optional[int] = None unlimited_sessions_per_user: Optional[bool] = None use_inactivity_based_logout: Optional[bool] = None track_session_location: Optional[bool] = None - def __init__(self, *, - allow_persistent_sessions: Optional[bool] = None, - session_minutes: Optional[int] = None, - unlimited_sessions_per_user: Optional[bool] = None, - use_inactivity_based_logout: Optional[bool] = None, - track_session_location: Optional[bool] = None): + def __init__( + self, + *, + allow_persistent_sessions: Optional[bool] = None, + session_minutes: Optional[int] = None, + unlimited_sessions_per_user: Optional[bool] = None, + use_inactivity_based_logout: Optional[bool] = None, + track_session_location: Optional[bool] = None + ): self.allow_persistent_sessions = allow_persistent_sessions self.session_minutes = session_minutes self.unlimited_sessions_per_user = unlimited_sessions_per_user @@ -18549,39 +20158,41 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteSetting(model.Model): """ - Dynamic writeable type for Setting removes: -instance_config, marketplace_site, embed_enabled, login_notification_enabled, login_notification_text - - Attributes: - extension_framework_enabled: Toggle extension framework on or off - extension_load_url_enabled: (DEPRECATED) Toggle extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. - marketplace_auto_install_enabled: (DEPRECATED) Toggle marketplace auto install on or off. Deprecated - do not use. Auto install can now be enabled via marketplace automation settings - marketplace_automation: - marketplace_enabled: Toggle marketplace on or off - marketplace_terms_accepted: Accept marketplace terms by setting this value to true, or get the current status. Marketplace terms CANNOT be declined once accepted. Accepting marketplace terms automatically enables the marketplace. The marketplace can still be disabled after it has been enabled. - privatelabel_configuration: Dynamic writeable type for PrivatelabelConfiguration removes: -logo_url, favicon_url - custom_welcome_email: - onboarding_enabled: Toggle onboarding on or off - timezone: Change instance-wide default timezone - allow_user_timezones: Toggle user-specific timezones on or off - data_connector_default_enabled: Toggle default future connectors on or off - host_url: Change the base portion of your Looker instance URL setting - override_warnings: (Write-Only) If warnings are preventing a host URL change, this parameter allows for overriding warnings to force update the setting. Does not directly change any Looker settings. - email_domain_allowlist: An array of Email Domain Allowlist of type string for Scheduled Content - embed_cookieless_v2: (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. - embed_config: Dynamic writeable type for EmbedConfig removes: -permissions, embed_enabled - dashboard_auto_refresh_restriction: Toggle Dashboard Auto Refresh restriction - dashboard_auto_refresh_minimum_interval: Minimum time interval for dashboard element automatic refresh. Examples: (30 seconds, 1 minute) - managed_certificate_uri: Array of URIs pointing to the location of a root certificate in Secret Manager - content_certification_documentation_link: Link to content certification documentation. - revoke_certification_on_edits: Allow content certification to be revoked on edits. - is_content_certification_enabled: Allow content certification. - auto_certify_lookml_content: Allow auto certification of lookml content. - ca_agent_observability: Toggle CA agent observability - mcp_tools: Dynamic writeable type for McpTools + Dynamic writeable type for Setting removes: + instance_config, marketplace_site, embed_enabled, login_notification_enabled, login_notification_text + + Attributes: + extension_framework_enabled: Toggle extension framework on or off + extension_load_url_enabled: (DEPRECATED) Toggle extension load url on or off. Do not use. This is temporary setting that will eventually become a noop and subsequently deleted. + marketplace_auto_install_enabled: (DEPRECATED) Toggle marketplace auto install on or off. Deprecated - do not use. Auto install can now be enabled via marketplace automation settings + marketplace_automation: + marketplace_enabled: Toggle marketplace on or off + marketplace_terms_accepted: Accept marketplace terms by setting this value to true, or get the current status. Marketplace terms CANNOT be declined once accepted. Accepting marketplace terms automatically enables the marketplace. The marketplace can still be disabled after it has been enabled. + privatelabel_configuration: Dynamic writeable type for PrivatelabelConfiguration removes: + logo_url, favicon_url + custom_welcome_email: + onboarding_enabled: Toggle onboarding on or off + timezone: Change instance-wide default timezone + allow_user_timezones: Toggle user-specific timezones on or off + data_connector_default_enabled: Toggle default future connectors on or off + host_url: Change the base portion of your Looker instance URL setting + override_warnings: (Write-Only) If warnings are preventing a host URL change, this parameter allows for overriding warnings to force update the setting. Does not directly change any Looker settings. + email_domain_allowlist: An array of Email Domain Allowlist of type string for Scheduled Content + embed_cookieless_v2: (DEPRECATED) Use embed_config.embed_cookieless_v2 instead. If embed_config.embed_cookieless_v2 is specified, it overrides this value. + embed_config: Dynamic writeable type for EmbedConfig removes: + permissions, embed_enabled + dashboard_auto_refresh_restriction: Toggle Dashboard Auto Refresh restriction + dashboard_auto_refresh_minimum_interval: Minimum time interval for dashboard element automatic refresh. Examples: (30 seconds, 1 minute) + managed_certificate_uri: Array of URIs pointing to the location of a root certificate in Secret Manager + content_certification_documentation_link: Link to content certification documentation. + revoke_certification_on_edits: Allow content certification to be revoked on edits. + automated_mfa_enabled: Automatically enable Multi-Factor Authentication for users. + is_content_certification_enabled: Allow content certification. + auto_certify_lookml_content: Allow auto certification of lookml content. + ca_agent_observability: Toggle Conversational Analytics Agent Token usage + mcp_tools: Dynamic writeable type for McpTools """ + extension_framework_enabled: Optional[bool] = None extension_load_url_enabled: Optional[bool] = None marketplace_auto_install_enabled: Optional[bool] = None @@ -18604,38 +20215,43 @@ class WriteSetting(model.Model): managed_certificate_uri: Optional[Sequence[str]] = None content_certification_documentation_link: Optional[str] = None revoke_certification_on_edits: Optional[bool] = None + automated_mfa_enabled: Optional[bool] = None is_content_certification_enabled: Optional[bool] = None auto_certify_lookml_content: Optional[bool] = None ca_agent_observability: Optional[bool] = None mcp_tools: Optional["WriteMcpTools"] = None - def __init__(self, *, - extension_framework_enabled: Optional[bool] = None, - extension_load_url_enabled: Optional[bool] = None, - marketplace_auto_install_enabled: Optional[bool] = None, - marketplace_automation: Optional["MarketplaceAutomation"] = None, - marketplace_enabled: Optional[bool] = None, - marketplace_terms_accepted: Optional[bool] = None, - privatelabel_configuration: Optional["WritePrivatelabelConfiguration"] = None, - custom_welcome_email: Optional["CustomWelcomeEmail"] = None, - onboarding_enabled: Optional[bool] = None, - timezone: Optional[str] = None, - allow_user_timezones: Optional[bool] = None, - data_connector_default_enabled: Optional[bool] = None, - host_url: Optional[str] = None, - override_warnings: Optional[bool] = None, - email_domain_allowlist: Optional[Sequence[str]] = None, - embed_cookieless_v2: Optional[bool] = None, - embed_config: Optional["WriteEmbedConfig"] = None, - dashboard_auto_refresh_restriction: Optional[bool] = None, - dashboard_auto_refresh_minimum_interval: Optional[str] = None, - managed_certificate_uri: Optional[Sequence[str]] = None, - content_certification_documentation_link: Optional[str] = None, - revoke_certification_on_edits: Optional[bool] = None, - is_content_certification_enabled: Optional[bool] = None, - auto_certify_lookml_content: Optional[bool] = None, - ca_agent_observability: Optional[bool] = None, - mcp_tools: Optional["WriteMcpTools"] = None): + def __init__( + self, + *, + extension_framework_enabled: Optional[bool] = None, + extension_load_url_enabled: Optional[bool] = None, + marketplace_auto_install_enabled: Optional[bool] = None, + marketplace_automation: Optional["MarketplaceAutomation"] = None, + marketplace_enabled: Optional[bool] = None, + marketplace_terms_accepted: Optional[bool] = None, + privatelabel_configuration: Optional["WritePrivatelabelConfiguration"] = None, + custom_welcome_email: Optional["CustomWelcomeEmail"] = None, + onboarding_enabled: Optional[bool] = None, + timezone: Optional[str] = None, + allow_user_timezones: Optional[bool] = None, + data_connector_default_enabled: Optional[bool] = None, + host_url: Optional[str] = None, + override_warnings: Optional[bool] = None, + email_domain_allowlist: Optional[Sequence[str]] = None, + embed_cookieless_v2: Optional[bool] = None, + embed_config: Optional["WriteEmbedConfig"] = None, + dashboard_auto_refresh_restriction: Optional[bool] = None, + dashboard_auto_refresh_minimum_interval: Optional[str] = None, + managed_certificate_uri: Optional[Sequence[str]] = None, + content_certification_documentation_link: Optional[str] = None, + revoke_certification_on_edits: Optional[bool] = None, + automated_mfa_enabled: Optional[bool] = None, + is_content_certification_enabled: Optional[bool] = None, + auto_certify_lookml_content: Optional[bool] = None, + ca_agent_observability: Optional[bool] = None, + mcp_tools: Optional["WriteMcpTools"] = None + ): self.extension_framework_enabled = extension_framework_enabled self.extension_load_url_enabled = extension_load_url_enabled self.marketplace_auto_install_enabled = marketplace_auto_install_enabled @@ -18654,10 +20270,15 @@ def __init__(self, *, self.embed_cookieless_v2 = embed_cookieless_v2 self.embed_config = embed_config self.dashboard_auto_refresh_restriction = dashboard_auto_refresh_restriction - self.dashboard_auto_refresh_minimum_interval = dashboard_auto_refresh_minimum_interval + self.dashboard_auto_refresh_minimum_interval = ( + dashboard_auto_refresh_minimum_interval + ) self.managed_certificate_uri = managed_certificate_uri - self.content_certification_documentation_link = content_certification_documentation_link + self.content_certification_documentation_link = ( + content_certification_documentation_link + ) self.revoke_certification_on_edits = revoke_certification_on_edits + self.automated_mfa_enabled = automated_mfa_enabled self.is_content_certification_enabled = is_content_certification_enabled self.auto_certify_lookml_content = auto_certify_lookml_content self.ca_agent_observability = ca_agent_observability @@ -18667,19 +20288,18 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteSqlInterfaceQueryCreate(model.Model): """ - Dynamic writeable type for SqlInterfaceQueryCreate removes: -can + Dynamic writeable type for SqlInterfaceQueryCreate removes: + can - Attributes: - sql: Original SQL request - jdbc_client: Whether the query should be run for use in a JDBC Client. This changes the formatting of some datetime based values. + Attributes: + sql: Original SQL request + jdbc_client: Whether the query should be run for use in a JDBC Client. This changes the formatting of some datetime based values. """ + sql: str jdbc_client: Optional[bool] = None - def __init__(self, *, - sql: str, - jdbc_client: Optional[bool] = None): + def __init__(self, *, sql: str, jdbc_client: Optional[bool] = None): self.sql = sql self.jdbc_client = jdbc_client @@ -18687,25 +20307,29 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteSshServer(model.Model): """ - Dynamic writeable type for SshServer removes: -ssh_server_id, finger_print, sha_finger_print, public_key, status + Dynamic writeable type for SshServer removes: + ssh_server_id, finger_print, sha_finger_print, public_key, status - Attributes: - ssh_server_name: The name to identify this SSH Server - ssh_server_host: The hostname or ip address of the SSH Server - ssh_server_port: The port to connect to on the SSH Server - ssh_server_user: The username used to connect to the SSH Server + Attributes: + ssh_server_name: The name to identify this SSH Server + ssh_server_host: The hostname or ip address of the SSH Server + ssh_server_port: The port to connect to on the SSH Server + ssh_server_user: The username used to connect to the SSH Server """ + ssh_server_name: Optional[str] = None ssh_server_host: Optional[str] = None ssh_server_port: Optional[int] = None ssh_server_user: Optional[str] = None - def __init__(self, *, - ssh_server_name: Optional[str] = None, - ssh_server_host: Optional[str] = None, - ssh_server_port: Optional[int] = None, - ssh_server_user: Optional[str] = None): + def __init__( + self, + *, + ssh_server_name: Optional[str] = None, + ssh_server_host: Optional[str] = None, + ssh_server_port: Optional[int] = None, + ssh_server_user: Optional[str] = None + ): self.ssh_server_name = ssh_server_name self.ssh_server_host = ssh_server_host self.ssh_server_port = ssh_server_port @@ -18715,25 +20339,29 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteSshTunnel(model.Model): """ - Dynamic writeable type for SshTunnel removes: -tunnel_id, ssh_server_name, ssh_server_host, ssh_server_port, ssh_server_user, last_attempt, status + Dynamic writeable type for SshTunnel removes: + tunnel_id, ssh_server_name, ssh_server_host, ssh_server_port, ssh_server_user, last_attempt, status - Attributes: - ssh_server_id: SSH Server ID - local_host_port: Localhost Port used by the Looker instance to connect to the remote DB - database_host: Hostname or IP Address of the Database Server - database_port: Port that the Database Server is listening on + Attributes: + ssh_server_id: SSH Server ID + local_host_port: Localhost Port used by the Looker instance to connect to the remote DB + database_host: Hostname or IP Address of the Database Server + database_port: Port that the Database Server is listening on """ + ssh_server_id: Optional[str] = None local_host_port: Optional[int] = None database_host: Optional[str] = None database_port: Optional[int] = None - def __init__(self, *, - ssh_server_id: Optional[str] = None, - local_host_port: Optional[int] = None, - database_host: Optional[str] = None, - database_port: Optional[int] = None): + def __init__( + self, + *, + ssh_server_id: Optional[str] = None, + local_host_port: Optional[int] = None, + database_host: Optional[str] = None, + database_port: Optional[int] = None + ): self.ssh_server_id = ssh_server_id self.local_host_port = local_host_port self.database_host = database_host @@ -18743,25 +20371,29 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteTheme(model.Model): """ - Dynamic writeable type for Theme removes: -can, id + Dynamic writeable type for Theme removes: + can, id - Attributes: - begin_at: Timestamp for when this theme becomes active. Null=always - end_at: Timestamp for when this theme expires. Null=never - name: Name of theme. Can only be alphanumeric and underscores. - settings: + Attributes: + begin_at: Timestamp for when this theme becomes active. Null=always + end_at: Timestamp for when this theme expires. Null=never + name: Name of theme. Can only be alphanumeric and underscores. + settings: """ + begin_at: Optional[datetime.datetime] = None end_at: Optional[datetime.datetime] = None name: Optional[str] = None settings: Optional["ThemeSettings"] = None - def __init__(self, *, - begin_at: Optional[datetime.datetime] = None, - end_at: Optional[datetime.datetime] = None, - name: Optional[str] = None, - settings: Optional["ThemeSettings"] = None): + def __init__( + self, + *, + begin_at: Optional[datetime.datetime] = None, + end_at: Optional[datetime.datetime] = None, + name: Optional[str] = None, + settings: Optional["ThemeSettings"] = None + ): self.begin_at = begin_at self.end_at = end_at self.name = name @@ -18771,21 +20403,22 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteUser(model.Model): """ - Dynamic writeable type for User removes: -can, avatar_url, avatar_url_without_sizing, credentials_api3, credentials_embed, credentials_google, credentials_ldap, credentials_looker_openid, credentials_oidc, credentials_saml, credentials_totp, credentials_workforce, display_name, email, embed_group_space_id, group_ids, id, looker_versions, personal_folder_id, presumed_looker_employee, role_ids, sessions, verified_looker_employee, roles_externally_managed, allow_direct_roles, allow_normal_group_membership, allow_roles_from_normal_groups, embed_group_folder_id, is_iam_admin, is_service_account, service_account_name, url + Dynamic writeable type for User removes: + can, avatar_url, avatar_url_without_sizing, credentials_api3, credentials_embed, credentials_google, credentials_ldap, credentials_looker_openid, credentials_oidc, credentials_saml, credentials_totp, credentials_workforce, display_name, email, embed_group_space_id, group_ids, id, looker_versions, personal_folder_id, presumed_looker_employee, role_ids, sessions, verified_looker_employee, roles_externally_managed, allow_direct_roles, allow_normal_group_membership, allow_roles_from_normal_groups, embed_group_folder_id, is_iam_admin, is_service_account, service_account_name, url - Attributes: - credentials_email: Dynamic writeable type for CredentialsEmail removes: -can, created_at, user_id, is_disabled, logged_in_at, password_reset_url, account_setup_url, password_reset_url_expired, account_setup_url_expired, type, url, user_url - first_name: First name - home_folder_id: ID string for user's home folder - is_disabled: Account has been disabled - last_name: Last name - locale: User's preferred locale. User locale takes precedence over Looker's system-wide default locale. Locale determines language of display strings and date and numeric formatting in API responses. Locale string must be a 2 letter language code or a combination of language code and region code: 'en' or 'en-US', for example. - models_dir_validated: User's dev workspace has been checked for presence of applicable production projects - ui_state: Per user dictionary of undocumented state information owned by the Looker UI. - can_manage_api3_creds: Indicates if the user can manage API3 credentials. This is an experimental feature and may not yet be available on your instance. + Attributes: + credentials_email: Dynamic writeable type for CredentialsEmail removes: + can, created_at, user_id, is_disabled, logged_in_at, password_reset_url, account_setup_url, password_reset_url_expired, account_setup_url_expired, type, url, user_url + first_name: First name + home_folder_id: ID string for user's home folder + is_disabled: Account has been disabled + last_name: Last name + locale: User's preferred locale. User locale takes precedence over Looker's system-wide default locale. Locale determines language of display strings and date and numeric formatting in API responses. Locale string must be a 2 letter language code or a combination of language code and region code: 'en' or 'en-US', for example. + models_dir_validated: User's dev workspace has been checked for presence of applicable production projects + ui_state: Per user dictionary of undocumented state information owned by the Looker UI. + can_manage_api3_creds: Indicates if the user can manage API3 credentials. This is an experimental feature and may not yet be available on your instance. """ + credentials_email: Optional["WriteCredentialsEmail"] = None first_name: Optional[str] = None home_folder_id: Optional[str] = None @@ -18796,16 +20429,19 @@ class WriteUser(model.Model): ui_state: Optional[MutableMapping[str, Any]] = None can_manage_api3_creds: Optional[bool] = None - def __init__(self, *, - credentials_email: Optional["WriteCredentialsEmail"] = None, - first_name: Optional[str] = None, - home_folder_id: Optional[str] = None, - is_disabled: Optional[bool] = None, - last_name: Optional[str] = None, - locale: Optional[str] = None, - models_dir_validated: Optional[bool] = None, - ui_state: Optional[MutableMapping[str, Any]] = None, - can_manage_api3_creds: Optional[bool] = None): + def __init__( + self, + *, + credentials_email: Optional["WriteCredentialsEmail"] = None, + first_name: Optional[str] = None, + home_folder_id: Optional[str] = None, + is_disabled: Optional[bool] = None, + last_name: Optional[str] = None, + locale: Optional[str] = None, + models_dir_validated: Optional[bool] = None, + ui_state: Optional[MutableMapping[str, Any]] = None, + can_manage_api3_creds: Optional[bool] = None + ): self.credentials_email = credentials_email self.first_name = first_name self.home_folder_id = home_folder_id @@ -18820,21 +20456,22 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteUserAttribute(model.Model): """ - Dynamic writeable type for UserAttribute removes: -can, id, is_system, is_permanent + Dynamic writeable type for UserAttribute removes: + can, id, is_system, is_permanent - Attributes: - name: Name of user attribute - label: Human-friendly label for user attribute - type: Type of user attribute ("string", "number", "datetime", "yesno", "zipcode", "advanced_filter_string", "advanced_filter_number") - default_value: Default value for when no value is set on the user - value_is_hidden: If true, users will not be able to view values of this attribute - user_can_view: Non-admin users can see the values of their attributes and use them in filters - user_can_edit: Users can change the value of this attribute for themselves - hidden_value_domain_whitelist: Destinations to which a hidden attribute may be sent. Once set, cannot be edited. - needed_for_ci_run: Whether this user attribute is needed for a CI run - value_for_ci_run: The value to use for this user attribute during a CI run + Attributes: + name: Name of user attribute + label: Human-friendly label for user attribute + type: Type of user attribute ("string", "number", "datetime", "yesno", "zipcode", "advanced_filter_string", "advanced_filter_number") + default_value: Default value for when no value is set on the user + value_is_hidden: If true, users will not be able to view values of this attribute + user_can_view: Non-admin users can see the values of their attributes and use them in filters + user_can_edit: Users can change the value of this attribute for themselves + hidden_value_domain_whitelist: Destinations to which a hidden attribute may be sent. Once set, cannot be edited. + needed_for_ci_run: Whether this user attribute is needed for a CI run + value_for_ci_run: The value to use for this user attribute during a CI run """ + name: str label: str type: str @@ -18846,17 +20483,20 @@ class WriteUserAttribute(model.Model): needed_for_ci_run: Optional[bool] = None value_for_ci_run: Optional[str] = None - def __init__(self, *, - name: str, - label: str, - type: str, - default_value: Optional[str] = None, - value_is_hidden: Optional[bool] = None, - user_can_view: Optional[bool] = None, - user_can_edit: Optional[bool] = None, - hidden_value_domain_whitelist: Optional[str] = None, - needed_for_ci_run: Optional[bool] = None, - value_for_ci_run: Optional[str] = None): + def __init__( + self, + *, + name: str, + label: str, + type: str, + default_value: Optional[str] = None, + value_is_hidden: Optional[bool] = None, + user_can_view: Optional[bool] = None, + user_can_edit: Optional[bool] = None, + hidden_value_domain_whitelist: Optional[str] = None, + needed_for_ci_run: Optional[bool] = None, + value_for_ci_run: Optional[str] = None + ): self.name = name self.label = label self.type = type @@ -18872,40 +20512,41 @@ def __init__(self, *, @attr.s(auto_attribs=True, init=False) class WriteUserAttributeWithValue(model.Model): """ - Dynamic writeable type for UserAttributeWithValue removes: -can, name, label, rank, user_id, user_can_edit, value_is_hidden, user_attribute_id, source, hidden_value_domain_whitelist + Dynamic writeable type for UserAttributeWithValue removes: + can, name, label, rank, user_id, user_can_edit, value_is_hidden, user_attribute_id, source, hidden_value_domain_whitelist - Attributes: - value: Value of attribute for user + Attributes: + value: Value of attribute for user """ + value: Optional[str] = None - def __init__(self, *, - value: Optional[str] = None): + def __init__(self, *, value: Optional[str] = None): self.value = value @attr.s(auto_attribs=True, init=False) class WriteWhitelabelConfiguration(model.Model): """ - Dynamic writeable type for WhitelabelConfiguration removes: -id, logo_url, favicon_url - - Attributes: - logo_file: Customer logo image. Expected base64 encoded data (write-only) - favicon_file: Custom favicon image. Expected base64 encoded data (write-only) - default_title: Default page title - show_help_menu: Boolean to toggle showing help menus - show_docs: Boolean to toggle showing docs - show_email_sub_options: Boolean to toggle showing email subscription options. - allow_looker_mentions: Boolean to toggle mentions of Looker in emails - allow_looker_links: Boolean to toggle links to Looker in emails - custom_welcome_email_advanced: Allow subject line and email heading customization in customized emails” - setup_mentions: Remove the word Looker from appearing in the account setup page - alerts_logo: Remove Looker logo from Alerts - alerts_links: Remove Looker links from Alerts - folders_mentions: Remove Looker mentions in home folder page when you don’t have any items saved + Dynamic writeable type for WhitelabelConfiguration removes: + id, logo_url, favicon_url + + Attributes: + logo_file: Customer logo image. Expected base64 encoded data (write-only) + favicon_file: Custom favicon image. Expected base64 encoded data (write-only) + default_title: Default page title + show_help_menu: Boolean to toggle showing help menus + show_docs: Boolean to toggle showing docs + show_email_sub_options: Boolean to toggle showing email subscription options. + allow_looker_mentions: Boolean to toggle mentions of Looker in emails + allow_looker_links: Boolean to toggle links to Looker in emails + custom_welcome_email_advanced: Allow subject line and email heading customization in customized emails” + setup_mentions: Remove the word Looker from appearing in the account setup page + alerts_logo: Remove Looker logo from Alerts + alerts_links: Remove Looker links from Alerts + folders_mentions: Remove Looker mentions in home folder page when you don’t have any items saved """ + logo_file: Optional[str] = None favicon_file: Optional[str] = None default_title: Optional[str] = None @@ -18920,20 +20561,23 @@ class WriteWhitelabelConfiguration(model.Model): alerts_links: Optional[bool] = None folders_mentions: Optional[bool] = None - def __init__(self, *, - logo_file: Optional[str] = None, - favicon_file: Optional[str] = None, - default_title: Optional[str] = None, - show_help_menu: Optional[bool] = None, - show_docs: Optional[bool] = None, - show_email_sub_options: Optional[bool] = None, - allow_looker_mentions: Optional[bool] = None, - allow_looker_links: Optional[bool] = None, - custom_welcome_email_advanced: Optional[bool] = None, - setup_mentions: Optional[bool] = None, - alerts_logo: Optional[bool] = None, - alerts_links: Optional[bool] = None, - folders_mentions: Optional[bool] = None): + def __init__( + self, + *, + logo_file: Optional[str] = None, + favicon_file: Optional[str] = None, + default_title: Optional[str] = None, + show_help_menu: Optional[bool] = None, + show_docs: Optional[bool] = None, + show_email_sub_options: Optional[bool] = None, + allow_looker_mentions: Optional[bool] = None, + allow_looker_links: Optional[bool] = None, + custom_welcome_email_advanced: Optional[bool] = None, + setup_mentions: Optional[bool] = None, + alerts_logo: Optional[bool] = None, + alerts_links: Optional[bool] = None, + folders_mentions: Optional[bool] = None + ): self.logo_file = logo_file self.favicon_file = favicon_file self.default_title = default_title @@ -18948,6 +20592,7 @@ def __init__(self, *, self.alerts_links = alerts_links self.folders_mentions = folders_mentions + import functools # noqa:E402 forward_ref_structure_hook = functools.partial( @@ -18956,12 +20601,14 @@ def __init__(self, *, sr.converter40.register_structure_hook_func( lambda t: t.__class__ is ForwardRef, forward_ref_structure_hook ) -translate_keys_structure_hook = functools.partial(sr.translate_keys_structure_hook, sr.converter40) +translate_keys_structure_hook = functools.partial( + sr.translate_keys_structure_hook, sr.converter40 +) sr.converter40.register_structure_hook( LookmlModelExploreJoins, # type: ignore - translate_keys_structure_hook # type:ignore + translate_keys_structure_hook, # type: ignore ) sr.converter40.register_structure_hook( SmtpSettings, # type: ignore - translate_keys_structure_hook # type:ignore + translate_keys_structure_hook, # type: ignore ) diff --git a/python/looker_sdk/sdk/constants.py b/python/looker_sdk/sdk/constants.py index 07a579458..e2c35983e 100644 --- a/python/looker_sdk/sdk/constants.py +++ b/python/looker_sdk/sdk/constants.py @@ -20,5 +20,5 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. -sdk_version = "26.10" +sdk_version = "26.12" environment_prefix = "LOOKERSDK" diff --git a/spec/Looker.4.0.json b/spec/Looker.4.0.json index 3ff2ccbd6..ffea6747c 100644 --- a/spec/Looker.4.0.json +++ b/spec/Looker.4.0.json @@ -1,8 +1,8 @@ { "swagger": "2.0", "info": { - "version": "4.0.26.10", - "x-looker-release-version": "26.10.4", + "version": "4.0.26.12", + "x-looker-release-version": "26.12.3", "title": "Looker API 4.0 Reference", "description": "\nAPI 4.0 is the current release of the Looker API. API 3.x has been removed.\n\n### Authorization\n\nThe classic method of API authorization uses Looker **API** credentials for authorization and access control.\nLooker admins can create API credentials on Looker's **Admin/Users** page.\n\nAPI 4.0 adds additional ways to authenticate API requests, including OAuth and CORS requests.\n\nFor details, see [Looker API Authorization](https://docs.cloud.google.com/looker/docs/r/api/authorization).\n\n\n### API Explorer\n\nThe API Explorer is a Looker-provided utility with many new and unique features for learning and using the Looker API and SDKs.\n\nFor details, see the [API Explorer documentation](https://docs.cloud.google.com/looker/docs/r/api/explorer).\n\n\n### Looker Language SDKs\n\nThe Looker API is a RESTful system that should be usable by any programming language capable of making\nHTTPS requests. SDKs for a variety of programming languages are also provided to streamline using the API. Looker\nhas an OpenSource [sdk-codegen project](https://github.com/looker-open-source/sdk-codegen) that provides several\nlanguage SDKs. Language SDKs generated by `sdk-codegen` have an Authentication manager that can automatically\nauthenticate API requests when needed.\n\nFor details on available Looker SDKs, see [Looker API Client SDKs](https://docs.cloud.google.com/looker/docs/r/api/client_sdks).\n\n\n### API Versioning\n\nFuture releases of Looker expand the latest API version release-by-release to securely expose more and more of the core\npower of the Looker platform to API client applications. API endpoints marked as \"beta\" may receive breaking changes without\nwarning (but we will try to avoid doing that). Stable (non-beta) API endpoints should not receive breaking\nchanges in future releases.\n\nFor details, see [Looker API Versioning](https://docs.cloud.google.com/looker/docs/r/api/versioning).\n\n\n### In This Release\n\nAPI 4.0 is the only supported API version for Looker starting with release 23.18. API 3.0 and 3.1 have been removed.\n\nAPI 4.0 has better support for strongly typed languages like TypeScript, Kotlin, Swift, Go, C#, and more.\n\nSee the [API 4.0 GA announcement](https://developers.looker.com/api/advanced-usage/version-4-ga) for more information\nabout API 4.0.\n\nThe API Explorer can be used to [interactively compare](https://docs.cloud.google.com/looker/docs/r/api/explorer#comparing_api_versions) the differences between API 3.1 and 4.0.\n\n\n### API and SDK Support Policies\n\nLooker API versions and language SDKs have varying support levels. Please read the API and SDK\n[support policies](https://docs.cloud.google.com/looker/docs/r/api/support-policy) for more information.\n\n\n", "contact": { @@ -20315,6 +20315,206 @@ "x-looker-rate-limited": true } }, + "/projects/{project_id}/git_diagnostic_report": { + "post": { + "tags": [ + "Project" + ], + "operationId": "create_git_diagnostic_report", + "summary": "Initiate Git Diagnosis", + "description": "### Initiate Git Diagnosis Suite\n", + "parameters": [ + { + "name": "project_id", + "in": "path", + "description": "Looker Project ID", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "description": "GitDiagnosticReport", + "required": true, + "schema": { + "$ref": "#/definitions/GitDiagnosticReport" + } + } + ], + "responses": { + "200": { + "description": "GitDiagnosticReport", + "schema": { + "$ref": "#/definitions/GitDiagnosticReport" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "409": { + "description": "Resource Already Exists", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "422": { + "description": "Validation Error", + "schema": { + "$ref": "#/definitions/ValidationError" + } + }, + "429": { + "description": "Too Many Requests", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "x-looker-status": "beta", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true + } + }, + "/projects/{project_id}/git_diagnostic_report/{report_id}": { + "get": { + "tags": [ + "Project" + ], + "operationId": "get_git_diagnostic_report", + "summary": "Get Live Git Diagnosis", + "description": "### Retrieve Live Git Diagnostic Suite Execution Status\n", + "parameters": [ + { + "name": "project_id", + "in": "path", + "description": "Looker Project ID", + "required": true, + "type": "string" + }, + { + "name": "report_id", + "in": "path", + "description": "Report ID", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "GitDiagnosticReport", + "schema": { + "$ref": "#/definitions/GitDiagnosticReport" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "429": { + "description": "Too Many Requests", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "x-looker-status": "beta", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true + } + }, + "/projects/{project_id}/git_diagnostic_report/{report_id}/repair": { + "post": { + "tags": [ + "Project" + ], + "operationId": "repair_git_diagnostic_report", + "summary": "Repair Git Configuration", + "description": "### Repair Git Configuration Issues\n", + "parameters": [ + { + "name": "project_id", + "in": "path", + "description": "Looker Project ID", + "required": true, + "type": "string" + }, + { + "name": "report_id", + "in": "path", + "description": "Report ID", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "description": "GitDiagnosticReport", + "required": true, + "schema": { + "$ref": "#/definitions/GitDiagnosticReport" + } + } + ], + "responses": { + "200": { + "description": "GitDiagnosticReport", + "schema": { + "$ref": "#/definitions/GitDiagnosticReport" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "409": { + "description": "Resource Already Exists", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "422": { + "description": "Validation Error", + "schema": { + "$ref": "#/definitions/ValidationError" + } + }, + "429": { + "description": "Too Many Requests", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "x-looker-status": "beta", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true + } + }, "/render_tasks/looks/{look_id}/{result_format}": { "post": { "tags": [ @@ -23198,6 +23398,54 @@ "x-looker-rate-limited": true } }, + "/self_service_models/{model_name}/lookml": { + "get": { + "tags": [ + "SelfService" + ], + "operationId": "get_self_service_model_lookml", + "summary": "Get Self Service LookML", + "description": "### Get Generated LookML for a Self Service Model\n", + "parameters": [ + { + "name": "model_name", + "in": "path", + "description": "Name of self service model", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Self service lookml", + "schema": { + "type": "string" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "429": { + "description": "Too Many Requests", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "x-looker-status": "beta", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true + } + }, "/self_service_models/{model_name}/certification": { "patch": { "tags": [ @@ -23466,7 +23714,7 @@ ], "operationId": "set_setting", "summary": "Set Setting", - "description": "### Configure Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - auto_certify_lookml_content\n - content_certification_documentation_link\n - custom_welcome_email\n - data_connector_default_enabled\n - dashboard_auto_refresh_restriction\n - dashboard_auto_refresh_minimum_interval\n - extension_framework_enabled\n - extension_load_url_enabled\n - instance_config\n - is_content_certification_enabled\n - managed_certificate_uri\n - marketplace_auto_install_enabled\n - marketplace_automation\n - marketplace_terms_accepted\n - marketplace_enabled\n - marketplace_site\n - onboarding_enabled\n - privatelabel_configuration\n - revoke_certification_on_edits\n - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n - embed_config\n - mcp_tools\n\nSee the `Setting` type for more information on the specific values that can be configured.\n\nIf a setting update is rejected, the API error payload should provide information on the cause of the rejection.\n", + "description": "### Configure Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - auto_certify_lookml_content\n - content_certification_documentation_link\n - custom_welcome_email\n - data_connector_default_enabled\n - dashboard_auto_refresh_restriction\n - dashboard_auto_refresh_minimum_interval\n - extension_framework_enabled\n - extension_load_url_enabled\n - instance_config\n - is_content_certification_enabled\n - managed_certificate_uri\n - marketplace_auto_install_enabled\n - marketplace_automation\n - marketplace_terms_accepted\n - marketplace_enabled\n - marketplace_site\n - onboarding_enabled\n - privatelabel_configuration\n - revoke_certification_on_edits\n - automated_mfa_enabled\n - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n - embed_config\n - mcp_tools\n\nSee the `Setting` type for more information on the specific values that can be configured.\n\nIf a setting update is rejected, the API error payload should provide information on the cause of the rejection.\n", "parameters": [ { "name": "body", @@ -23539,7 +23787,7 @@ ], "operationId": "get_setting", "summary": "Get Setting", - "description": "### Get Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - auto_certify_lookml_content\n - content_certification_documentation_link\n - custom_welcome_email\n - data_connector_default_enabled\n - dashboard_auto_refresh_restriction\n - dashboard_auto_refresh_minimum_interval\n - extension_framework_enabled\n - extension_load_url_enabled\n - instance_config\n - is_content_certification_enabled\n - managed_certificate_uri\n - marketplace_auto_install_enabled\n - marketplace_automation\n - marketplace_terms_accepted\n - marketplace_enabled\n - marketplace_site\n - onboarding_enabled\n - privatelabel_configuration\n - revoke_certification_on_edits\n - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n - embed_config\n - mcp_tools\n\n", + "description": "### Get Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - auto_certify_lookml_content\n - content_certification_documentation_link\n - custom_welcome_email\n - data_connector_default_enabled\n - dashboard_auto_refresh_restriction\n - dashboard_auto_refresh_minimum_interval\n - extension_framework_enabled\n - extension_load_url_enabled\n - instance_config\n - is_content_certification_enabled\n - managed_certificate_uri\n - marketplace_auto_install_enabled\n - marketplace_automation\n - marketplace_terms_accepted\n - marketplace_enabled\n - marketplace_site\n - onboarding_enabled\n - privatelabel_configuration\n - revoke_certification_on_edits\n - automated_mfa_enabled\n - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n - embed_config\n - mcp_tools\n\n", "parameters": [ { "name": "fields", @@ -25589,7 +25837,7 @@ ], "operationId": "default_theme", "summary": "Get Default Theme", - "description": "### Get the default theme\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n", + "description": "### Get the default theme\n\nThis endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead.\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n", "parameters": [ { "name": "ts", @@ -25626,7 +25874,8 @@ } } }, - "x-looker-status": "stable", + "deprecated": true, + "x-looker-status": "deprecated", "x-looker-activity-type": "non_query", "x-looker-rate-limited": true }, @@ -25636,7 +25885,7 @@ ], "operationId": "set_default_theme", "summary": "Set Default Theme", - "description": "### Set the global default theme by theme name\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or https://console.cloud.google.com/support/cases/ to update your license for this feature.\n\n", + "description": "### Set the global default theme by theme name\n\nThis endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead.\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or https://console.cloud.google.com/support/cases/ to update your license for this feature.\n\n", "parameters": [ { "name": "name", @@ -25678,7 +25927,135 @@ } } }, - "x-looker-status": "stable", + "deprecated": true, + "x-looker-status": "deprecated", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true + } + }, + "/themes/default_theme": { + "get": { + "tags": [ + "Theme" + ], + "operationId": "default_theme_by_type", + "summary": "Get Default Theme (with type)", + "description": "### Get the default theme\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n\nThe optional `theme_type` parameter can specify the theme type to select for.\n", + "parameters": [ + { + "name": "ts", + "in": "query", + "description": "Timestamp representing the target datetime for the active period. Defaults to 'now'", + "required": false, + "type": "string", + "format": "date-time" + }, + { + "name": "theme_type", + "in": "query", + "description": "Theme type.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Theme", + "schema": { + "$ref": "#/definitions/Theme" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "422": { + "description": "Validation Error", + "schema": { + "$ref": "#/definitions/ValidationError" + } + }, + "429": { + "description": "Too Many Requests", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "x-looker-status": "beta", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true + }, + "put": { + "tags": [ + "Theme" + ], + "operationId": "set_default_theme_by_type", + "summary": "Set Default Theme (with type)", + "description": "### Set the global default theme by theme name\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\nThe optional `theme_type` parameter can specify the theme type to select for.\n", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "Name of theme to set as default", + "required": true, + "type": "string" + }, + { + "name": "theme_type", + "in": "query", + "description": "Theme type.", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Theme", + "schema": { + "$ref": "#/definitions/Theme" + } + }, + "400": { + "description": "Bad Request", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "403": { + "description": "Permission Denied", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "404": { + "description": "Not Found", + "schema": { + "$ref": "#/definitions/Error" + } + }, + "422": { + "description": "Validation Error", + "schema": { + "$ref": "#/definitions/ValidationError" + } + }, + "429": { + "description": "Too Many Requests", + "schema": { + "$ref": "#/definitions/Error" + } + } + }, + "x-looker-status": "beta", "x-looker-activity-type": "non_query", "x-looker-rate-limited": true } @@ -25707,6 +26084,13 @@ "type": "string", "format": "date-time" }, + { + "name": "theme_type", + "in": "query", + "description": "Theme type.", + "required": false, + "type": "string" + }, { "name": "fields", "in": "query", @@ -25731,12 +26115,24 @@ "$ref": "#/definitions/Error" } }, + "403": { + "description": "Permission Denied", + "schema": { + "$ref": "#/definitions/Error" + } + }, "404": { "description": "Not Found", "schema": { "$ref": "#/definitions/Error" } }, + "422": { + "description": "Validation Error", + "schema": { + "$ref": "#/definitions/ValidationError" + } + }, "429": { "description": "Too Many Requests", "schema": { @@ -40018,6 +40414,148 @@ }, "x-looker-status": "stable" }, + "GitDiagnosticIssue": { + "properties": { + "can": { + "type": "object", + "additionalProperties": { + "type": "boolean" + }, + "readOnly": true, + "description": "Operations the current user is able to perform on this object", + "x-looker-nullable": false + }, + "id": { + "type": "string", + "readOnly": true, + "description": "Unique ID of the diagnostic issue.", + "x-looker-nullable": false + }, + "report_id": { + "type": "string", + "readOnly": true, + "description": "Parent diagnostic report ID.", + "x-looker-nullable": true + }, + "project_id": { + "type": "string", + "readOnly": true, + "description": "Target Looker Project ID.", + "x-looker-nullable": true + }, + "project_type": { + "type": "string", + "readOnly": true, + "description": "Environment scope (developer/production).", + "x-looker-nullable": true + }, + "issue_type": { + "type": "string", + "readOnly": true, + "description": "Git diagnostic issue category.", + "x-looker-nullable": true + }, + "issue_version": { + "type": "string", + "readOnly": true, + "description": "Version schema.", + "x-looker-nullable": true + }, + "state": { + "type": "string", + "readOnly": true, + "description": "Current execution status.", + "x-looker-nullable": true + }, + "created_at": { + "type": "string", + "format": "date-time", + "readOnly": true, + "description": "Creation timestamp.", + "x-looker-nullable": true + }, + "updated_at": { + "type": "string", + "format": "date-time", + "readOnly": true, + "description": "Last update timestamp.", + "x-looker-nullable": true + } + }, + "x-looker-status": "beta" + }, + "GitDiagnosticReport": { + "properties": { + "can": { + "type": "object", + "additionalProperties": { + "type": "boolean" + }, + "readOnly": true, + "description": "Operations the current user is able to perform on this object", + "x-looker-nullable": false + }, + "id": { + "type": "string", + "readOnly": true, + "description": "Unique ID of the git diagnostic report.", + "x-looker-nullable": false + }, + "project_id": { + "type": "string", + "readOnly": true, + "description": "Target Looker Project ID.", + "x-looker-nullable": true + }, + "user_id": { + "type": "string", + "readOnly": true, + "description": "ID of the user initiating the diagnosis.", + "x-looker-nullable": true + }, + "state": { + "type": "string", + "readOnly": true, + "description": "Raw lifecycle state.", + "x-looker-nullable": true + }, + "status": { + "type": "string", + "readOnly": true, + "description": "Status derived from state.", + "x-looker-nullable": true + }, + "created_at": { + "type": "string", + "format": "date-time", + "readOnly": true, + "description": "Creation time.", + "x-looker-nullable": true + }, + "updated_at": { + "type": "string", + "format": "date-time", + "readOnly": true, + "description": "Update time.", + "x-looker-nullable": true + }, + "project_type": { + "type": "string", + "description": "Project structure type.", + "x-looker-nullable": true + }, + "issues": { + "type": "array", + "items": { + "$ref": "#/definitions/GitDiagnosticIssue" + }, + "readOnly": true, + "description": "Diagnostic issues associated with this report.", + "x-looker-nullable": true + } + }, + "x-looker-status": "beta" + }, "GitStatus": { "properties": { "action": { @@ -40117,6 +40655,57 @@ "readOnly": true, "description": "Time when the question was last updated", "x-looker-nullable": true + }, + "explore": { + "type": "string", + "readOnly": true, + "description": "The explore name of the golden query", + "x-looker-nullable": true + }, + "model": { + "type": "string", + "readOnly": true, + "description": "The LookML model name of the golden query", + "x-looker-nullable": true + }, + "fields": { + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true, + "description": "Fields of the associated Looker Query", + "x-looker-nullable": true + }, + "filters": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "readOnly": true, + "description": "Filters of the associated Looker Query", + "x-looker-nullable": true + }, + "sorts": { + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true, + "description": "Sorts of the associated Looker Query", + "x-looker-nullable": true + }, + "limit": { + "type": "string", + "readOnly": true, + "description": "Limit of the associated Looker Query", + "x-looker-nullable": true + }, + "client_id": { + "type": "string", + "readOnly": true, + "description": "Client ID of the associated Looker Query", + "x-looker-nullable": true } }, "x-looker-status": "beta" @@ -43185,6 +43774,15 @@ "description": "An array of custom timeframes available for this field for filtering, if applicable.", "x-looker-nullable": true }, + "timeframe_labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "readOnly": true, + "description": "A map of timeframe keys to their localized labels.", + "x-looker-nullable": true + }, "can_filter": { "type": "boolean", "readOnly": true, @@ -43956,6 +44554,12 @@ "readOnly": true, "description": "User ID of the uploaded data owner", "x-looker-nullable": true + }, + "canvas_guid": { + "type": "string", + "readOnly": true, + "description": "GUID of the visual canvas", + "x-looker-nullable": true } }, "x-looker-status": "stable" @@ -48155,6 +48759,11 @@ "description": "Whether links back to Looker should be included in this ScheduledPlan", "x-looker-nullable": false }, + "include_dashboard_summary": { + "type": "boolean", + "description": "Whether to include a dashboard summary in the scheduled email", + "x-looker-nullable": false + }, "custom_url_base": { "type": "string", "description": "Custom url domain for the scheduled entity", @@ -48328,6 +48937,11 @@ "description": "Whether links back to Looker should be included in this ScheduledPlan", "x-looker-nullable": false }, + "include_dashboard_summary": { + "type": "boolean", + "description": "Whether to include a dashboard summary in the scheduled email", + "x-looker-nullable": false + }, "custom_url_base": { "type": "string", "description": "Custom url domain for the scheduled entity", @@ -49221,6 +49835,11 @@ "description": "Allow content certification to be revoked on edits.", "x-looker-nullable": false }, + "automated_mfa_enabled": { + "type": "boolean", + "description": "Automatically enable Multi-Factor Authentication for users.", + "x-looker-nullable": false + }, "is_content_certification_enabled": { "type": "boolean", "description": "Allow content certification.", @@ -49233,7 +49852,7 @@ }, "ca_agent_observability": { "type": "boolean", - "description": "Toggle CA agent observability", + "description": "Toggle Conversational Analytics Agent Token usage", "x-looker-nullable": false }, "mcp_tools": { diff --git a/spec/Looker.4.0.oas.json b/spec/Looker.4.0.oas.json index 2876affdf..3a20d208c 100644 --- a/spec/Looker.4.0.oas.json +++ b/spec/Looker.4.0.oas.json @@ -1,8 +1,8 @@ { "openapi": "3.0.0", "info": { - "version": "4.0.26.10", - "x-looker-release-version": "26.10.4", + "version": "4.0.26.12", + "x-looker-release-version": "26.12.3", "title": "Looker API 4.0 Reference", "description": "\nAPI 4.0 is the current release of the Looker API. API 3.x has been removed.\n\n### Authorization\n\nThe classic method of API authorization uses Looker **API** credentials for authorization and access control.\nLooker admins can create API credentials on Looker's **Admin/Users** page.\n\nAPI 4.0 adds additional ways to authenticate API requests, including OAuth and CORS requests.\n\nFor details, see [Looker API Authorization](https://docs.cloud.google.com/looker/docs/r/api/authorization).\n\n\n### API Explorer\n\nThe API Explorer is a Looker-provided utility with many new and unique features for learning and using the Looker API and SDKs.\n\nFor details, see the [API Explorer documentation](https://docs.cloud.google.com/looker/docs/r/api/explorer).\n\n\n### Looker Language SDKs\n\nThe Looker API is a RESTful system that should be usable by any programming language capable of making\nHTTPS requests. SDKs for a variety of programming languages are also provided to streamline using the API. Looker\nhas an OpenSource [sdk-codegen project](https://github.com/looker-open-source/sdk-codegen) that provides several\nlanguage SDKs. Language SDKs generated by `sdk-codegen` have an Authentication manager that can automatically\nauthenticate API requests when needed.\n\nFor details on available Looker SDKs, see [Looker API Client SDKs](https://docs.cloud.google.com/looker/docs/r/api/client_sdks).\n\n\n### API Versioning\n\nFuture releases of Looker expand the latest API version release-by-release to securely expose more and more of the core\npower of the Looker platform to API client applications. API endpoints marked as \"beta\" may receive breaking changes without\nwarning (but we will try to avoid doing that). Stable (non-beta) API endpoints should not receive breaking\nchanges in future releases.\n\nFor details, see [Looker API Versioning](https://docs.cloud.google.com/looker/docs/r/api/versioning).\n\n\n### In This Release\n\nAPI 4.0 is the only supported API version for Looker starting with release 23.18. API 3.0 and 3.1 have been removed.\n\nAPI 4.0 has better support for strongly typed languages like TypeScript, Kotlin, Swift, Go, C#, and more.\n\nSee the [API 4.0 GA announcement](https://developers.looker.com/api/advanced-usage/version-4-ga) for more information\nabout API 4.0.\n\nThe API Explorer can be used to [interactively compare](https://docs.cloud.google.com/looker/docs/r/api/explorer#comparing_api_versions) the differences between API 3.1 and 4.0.\n\n\n### API and SDK Support Policies\n\nLooker API versions and language SDKs have varying support levels. Please read the API and SDK\n[support policies](https://docs.cloud.google.com/looker/docs/r/api/support-policy) for more information.\n\n\n", "contact": { @@ -28105,6 +28105,284 @@ } } }, + "/projects/{project_id}/git_diagnostic_report": { + "post": { + "tags": [ + "Project" + ], + "operationId": "create_git_diagnostic_report", + "summary": "Initiate Git Diagnosis", + "description": "### Initiate Git Diagnosis Suite\n", + "parameters": [ + { + "name": "project_id", + "in": "path", + "description": "Looker Project ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "GitDiagnosticReport", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GitDiagnosticReport" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "409": { + "description": "Resource Already Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "x-looker-status": "beta", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GitDiagnosticReport" + } + } + }, + "description": "GitDiagnosticReport", + "required": true + } + } + }, + "/projects/{project_id}/git_diagnostic_report/{report_id}": { + "get": { + "tags": [ + "Project" + ], + "operationId": "get_git_diagnostic_report", + "summary": "Get Live Git Diagnosis", + "description": "### Retrieve Live Git Diagnostic Suite Execution Status\n", + "parameters": [ + { + "name": "project_id", + "in": "path", + "description": "Looker Project ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "report_id", + "in": "path", + "description": "Report ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "GitDiagnosticReport", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GitDiagnosticReport" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "x-looker-status": "beta", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true + } + }, + "/projects/{project_id}/git_diagnostic_report/{report_id}/repair": { + "post": { + "tags": [ + "Project" + ], + "operationId": "repair_git_diagnostic_report", + "summary": "Repair Git Configuration", + "description": "### Repair Git Configuration Issues\n", + "parameters": [ + { + "name": "project_id", + "in": "path", + "description": "Looker Project ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "report_id", + "in": "path", + "description": "Report ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "GitDiagnosticReport", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GitDiagnosticReport" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "409": { + "description": "Resource Already Exists", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "x-looker-status": "beta", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true, + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GitDiagnosticReport" + } + } + }, + "description": "GitDiagnosticReport", + "required": true + } + } + }, "/render_tasks/looks/{look_id}/{result_format}": { "post": { "tags": [ @@ -32074,6 +32352,72 @@ "x-looker-rate-limited": true } }, + "/self_service_models/{model_name}/lookml": { + "get": { + "tags": [ + "SelfService" + ], + "operationId": "get_self_service_model_lookml", + "summary": "Get Self Service LookML", + "description": "### Get Generated LookML for a Self Service Model\n", + "parameters": [ + { + "name": "model_name", + "in": "path", + "description": "Name of self service model", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Self service lookml", + "content": { + "application/json": { + "schema": { + "type": "string" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "x-looker-status": "beta", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true + } + }, "/self_service_models/{model_name}/certification": { "patch": { "tags": [ @@ -32446,7 +32790,7 @@ ], "operationId": "set_setting", "summary": "Set Setting", - "description": "### Configure Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - auto_certify_lookml_content\n - content_certification_documentation_link\n - custom_welcome_email\n - data_connector_default_enabled\n - dashboard_auto_refresh_restriction\n - dashboard_auto_refresh_minimum_interval\n - extension_framework_enabled\n - extension_load_url_enabled\n - instance_config\n - is_content_certification_enabled\n - managed_certificate_uri\n - marketplace_auto_install_enabled\n - marketplace_automation\n - marketplace_terms_accepted\n - marketplace_enabled\n - marketplace_site\n - onboarding_enabled\n - privatelabel_configuration\n - revoke_certification_on_edits\n - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n - embed_config\n - mcp_tools\n\nSee the `Setting` type for more information on the specific values that can be configured.\n\nIf a setting update is rejected, the API error payload should provide information on the cause of the rejection.\n", + "description": "### Configure Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - auto_certify_lookml_content\n - content_certification_documentation_link\n - custom_welcome_email\n - data_connector_default_enabled\n - dashboard_auto_refresh_restriction\n - dashboard_auto_refresh_minimum_interval\n - extension_framework_enabled\n - extension_load_url_enabled\n - instance_config\n - is_content_certification_enabled\n - managed_certificate_uri\n - marketplace_auto_install_enabled\n - marketplace_automation\n - marketplace_terms_accepted\n - marketplace_enabled\n - marketplace_site\n - onboarding_enabled\n - privatelabel_configuration\n - revoke_certification_on_edits\n - automated_mfa_enabled\n - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n - embed_config\n - mcp_tools\n\nSee the `Setting` type for more information on the specific values that can be configured.\n\nIf a setting update is rejected, the API error payload should provide information on the cause of the rejection.\n", "parameters": [ { "name": "fields", @@ -32551,7 +32895,7 @@ ], "operationId": "get_setting", "summary": "Get Setting", - "description": "### Get Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - auto_certify_lookml_content\n - content_certification_documentation_link\n - custom_welcome_email\n - data_connector_default_enabled\n - dashboard_auto_refresh_restriction\n - dashboard_auto_refresh_minimum_interval\n - extension_framework_enabled\n - extension_load_url_enabled\n - instance_config\n - is_content_certification_enabled\n - managed_certificate_uri\n - marketplace_auto_install_enabled\n - marketplace_automation\n - marketplace_terms_accepted\n - marketplace_enabled\n - marketplace_site\n - onboarding_enabled\n - privatelabel_configuration\n - revoke_certification_on_edits\n - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n - embed_config\n - mcp_tools\n\n", + "description": "### Get Looker Settings\n\nAvailable settings are:\n - allow_user_timezones\n - auto_certify_lookml_content\n - content_certification_documentation_link\n - custom_welcome_email\n - data_connector_default_enabled\n - dashboard_auto_refresh_restriction\n - dashboard_auto_refresh_minimum_interval\n - extension_framework_enabled\n - extension_load_url_enabled\n - instance_config\n - is_content_certification_enabled\n - managed_certificate_uri\n - marketplace_auto_install_enabled\n - marketplace_automation\n - marketplace_terms_accepted\n - marketplace_enabled\n - marketplace_site\n - onboarding_enabled\n - privatelabel_configuration\n - revoke_certification_on_edits\n - automated_mfa_enabled\n - timezone\n - host_url\n - email_domain_allowlist\n - embed_cookieless_v2\n - embed_enabled\n - embed_config\n - mcp_tools\n\n", "parameters": [ { "name": "fields", @@ -35402,7 +35746,7 @@ ], "operationId": "default_theme", "summary": "Get Default Theme", - "description": "### Get the default theme\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n", + "description": "### Get the default theme\n\nThis endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead.\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n", "parameters": [ { "name": "ts", @@ -35457,7 +35801,8 @@ } } }, - "x-looker-status": "stable", + "deprecated": true, + "x-looker-status": "deprecated", "x-looker-activity-type": "non_query", "x-looker-rate-limited": true }, @@ -35467,7 +35812,168 @@ ], "operationId": "set_default_theme", "summary": "Set Default Theme", - "description": "### Set the global default theme by theme name\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or https://console.cloud.google.com/support/cases/ to update your license for this feature.\n\n", + "description": "### Set the global default theme by theme name\n\nThis endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead.\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or https://console.cloud.google.com/support/cases/ to update your license for this feature.\n\n", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "Name of theme to set as default", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Theme", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Theme" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "deprecated": true, + "x-looker-status": "deprecated", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true + } + }, + "/themes/default_theme": { + "get": { + "tags": [ + "Theme" + ], + "operationId": "default_theme_by_type", + "summary": "Get Default Theme (with type)", + "description": "### Get the default theme\n\nReturns the active theme object set as the default.\n\nThe **default** theme name can be set in the UI on the Admin|Theme UI page\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\" If specified, it returns the default theme at the time indicated.\n\nThe optional `theme_type` parameter can specify the theme type to select for.\n", + "parameters": [ + { + "name": "ts", + "in": "query", + "description": "Timestamp representing the target datetime for the active period. Defaults to 'now'", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "theme_type", + "in": "query", + "description": "Theme type.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Theme", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Theme" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "x-looker-status": "beta", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true + }, + "put": { + "tags": [ + "Theme" + ], + "operationId": "set_default_theme_by_type", + "summary": "Set Default Theme (with type)", + "description": "### Set the global default theme by theme name\n\nOnly Admin users can call this function.\n\nOnly an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default.\n\n[Create Theme](#!/Theme/create) has detailed information on rules for default and active themes\n\nReturns the new specified default theme object.\n\nThe optional `theme_type` parameter can specify the theme type to select for.\n", "parameters": [ { "name": "name", @@ -35477,6 +35983,15 @@ "schema": { "type": "string" } + }, + { + "name": "theme_type", + "in": "query", + "description": "Theme type.", + "required": true, + "schema": { + "type": "string" + } } ], "responses": { @@ -35500,6 +36015,133 @@ } } }, + "403": { + "description": "Permission Denied", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidationError" + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + }, + "x-looker-status": "beta", + "x-looker-activity-type": "non_query", + "x-looker-rate-limited": true + } + }, + "/themes/active": { + "get": { + "tags": [ + "Theme" + ], + "operationId": "active_themes", + "summary": "Get Active Themes", + "description": "### Get active themes\n\nReturns an array of active themes.\n\nIf the `name` parameter is specified, it will return an array with one theme if it's active and found.\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or https://console.cloud.google.com/support/cases/ to update your license for this feature.\n\n", + "parameters": [ + { + "name": "name", + "in": "query", + "description": "Name of theme", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "ts", + "in": "query", + "description": "Timestamp representing the target datetime for the active period. Defaults to 'now'", + "required": false, + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "theme_type", + "in": "query", + "description": "Theme type.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "name": "fields", + "in": "query", + "description": "Requested fields.", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Themes", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Theme" + } + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "403": { + "description": "Permission Denied", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, "404": { "description": "Not Found", "content": { @@ -35536,94 +36178,6 @@ "x-looker-rate-limited": true } }, - "/themes/active": { - "get": { - "tags": [ - "Theme" - ], - "operationId": "active_themes", - "summary": "Get Active Themes", - "description": "### Get active themes\n\nReturns an array of active themes.\n\nIf the `name` parameter is specified, it will return an array with one theme if it's active and found.\n\nThe optional `ts` parameter can specify a different timestamp than \"now.\"\n\n**Note**: Custom themes needs to be enabled by Looker. Unless custom themes are enabled, only the automatically generated default theme can be used. Please contact your Account Manager or https://console.cloud.google.com/support/cases/ to update your license for this feature.\n\n", - "parameters": [ - { - "name": "name", - "in": "query", - "description": "Name of theme", - "required": false, - "schema": { - "type": "string" - } - }, - { - "name": "ts", - "in": "query", - "description": "Timestamp representing the target datetime for the active period. Defaults to 'now'", - "required": false, - "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "name": "fields", - "in": "query", - "description": "Requested fields.", - "required": false, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Themes", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Theme" - } - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - }, - "429": { - "description": "Too Many Requests", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Error" - } - } - } - } - }, - "x-looker-status": "stable", - "x-looker-activity-type": "non_query", - "x-looker-rate-limited": true - } - }, "/themes/theme_or_default": { "get": { "tags": [ @@ -51702,6 +52256,148 @@ }, "x-looker-status": "stable" }, + "GitDiagnosticIssue": { + "properties": { + "can": { + "type": "object", + "additionalProperties": { + "type": "boolean" + }, + "readOnly": true, + "description": "Operations the current user is able to perform on this object", + "nullable": false + }, + "id": { + "type": "string", + "readOnly": true, + "description": "Unique ID of the diagnostic issue.", + "nullable": false + }, + "report_id": { + "type": "string", + "readOnly": true, + "description": "Parent diagnostic report ID.", + "nullable": true + }, + "project_id": { + "type": "string", + "readOnly": true, + "description": "Target Looker Project ID.", + "nullable": true + }, + "project_type": { + "type": "string", + "readOnly": true, + "description": "Environment scope (developer/production).", + "nullable": true + }, + "issue_type": { + "type": "string", + "readOnly": true, + "description": "Git diagnostic issue category.", + "nullable": true + }, + "issue_version": { + "type": "string", + "readOnly": true, + "description": "Version schema.", + "nullable": true + }, + "state": { + "type": "string", + "readOnly": true, + "description": "Current execution status.", + "nullable": true + }, + "created_at": { + "type": "string", + "format": "date-time", + "readOnly": true, + "description": "Creation timestamp.", + "nullable": true + }, + "updated_at": { + "type": "string", + "format": "date-time", + "readOnly": true, + "description": "Last update timestamp.", + "nullable": true + } + }, + "x-looker-status": "beta" + }, + "GitDiagnosticReport": { + "properties": { + "can": { + "type": "object", + "additionalProperties": { + "type": "boolean" + }, + "readOnly": true, + "description": "Operations the current user is able to perform on this object", + "nullable": false + }, + "id": { + "type": "string", + "readOnly": true, + "description": "Unique ID of the git diagnostic report.", + "nullable": false + }, + "project_id": { + "type": "string", + "readOnly": true, + "description": "Target Looker Project ID.", + "nullable": true + }, + "user_id": { + "type": "string", + "readOnly": true, + "description": "ID of the user initiating the diagnosis.", + "nullable": true + }, + "state": { + "type": "string", + "readOnly": true, + "description": "Raw lifecycle state.", + "nullable": true + }, + "status": { + "type": "string", + "readOnly": true, + "description": "Status derived from state.", + "nullable": true + }, + "created_at": { + "type": "string", + "format": "date-time", + "readOnly": true, + "description": "Creation time.", + "nullable": true + }, + "updated_at": { + "type": "string", + "format": "date-time", + "readOnly": true, + "description": "Update time.", + "nullable": true + }, + "project_type": { + "type": "string", + "description": "Project structure type.", + "nullable": true + }, + "issues": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GitDiagnosticIssue" + }, + "readOnly": true, + "description": "Diagnostic issues associated with this report.", + "nullable": true + } + }, + "x-looker-status": "beta" + }, "GitStatus": { "properties": { "action": { @@ -51801,6 +52497,57 @@ "readOnly": true, "description": "Time when the question was last updated", "nullable": true + }, + "explore": { + "type": "string", + "readOnly": true, + "description": "The explore name of the golden query", + "nullable": true + }, + "model": { + "type": "string", + "readOnly": true, + "description": "The LookML model name of the golden query", + "nullable": true + }, + "fields": { + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true, + "description": "Fields of the associated Looker Query", + "nullable": true + }, + "filters": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "readOnly": true, + "description": "Filters of the associated Looker Query", + "nullable": true + }, + "sorts": { + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true, + "description": "Sorts of the associated Looker Query", + "nullable": true + }, + "limit": { + "type": "string", + "readOnly": true, + "description": "Limit of the associated Looker Query", + "nullable": true + }, + "client_id": { + "type": "string", + "readOnly": true, + "description": "Client ID of the associated Looker Query", + "nullable": true } }, "x-looker-status": "beta" @@ -54816,6 +55563,15 @@ "description": "An array of custom timeframes available for this field for filtering, if applicable.", "nullable": true }, + "timeframe_labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "readOnly": true, + "description": "A map of timeframe keys to their localized labels.", + "nullable": true + }, "can_filter": { "type": "boolean", "readOnly": true, @@ -55578,6 +56334,12 @@ "readOnly": true, "description": "User ID of the uploaded data owner", "nullable": true + }, + "canvas_guid": { + "type": "string", + "readOnly": true, + "description": "GUID of the visual canvas", + "nullable": true } }, "x-looker-status": "stable" @@ -59587,6 +60349,11 @@ "description": "Whether links back to Looker should be included in this ScheduledPlan", "nullable": false }, + "include_dashboard_summary": { + "type": "boolean", + "description": "Whether to include a dashboard summary in the scheduled email", + "nullable": false + }, "custom_url_base": { "type": "string", "description": "Custom url domain for the scheduled entity", @@ -59760,6 +60527,11 @@ "description": "Whether links back to Looker should be included in this ScheduledPlan", "nullable": false }, + "include_dashboard_summary": { + "type": "boolean", + "description": "Whether to include a dashboard summary in the scheduled email", + "nullable": false + }, "custom_url_base": { "type": "string", "description": "Custom url domain for the scheduled entity", @@ -60635,6 +61407,11 @@ "description": "Allow content certification to be revoked on edits.", "nullable": false }, + "automated_mfa_enabled": { + "type": "boolean", + "description": "Automatically enable Multi-Factor Authentication for users.", + "nullable": false + }, "is_content_certification_enabled": { "type": "boolean", "description": "Allow content certification.", @@ -60647,7 +61424,7 @@ }, "ca_agent_observability": { "type": "boolean", - "description": "Toggle CA agent observability", + "description": "Toggle Conversational Analytics Agent Token usage", "nullable": false }, "mcp_tools": { diff --git a/swift/looker/rtl/constants.swift b/swift/looker/rtl/constants.swift index e2b5b12dd..ea17e999c 100644 --- a/swift/looker/rtl/constants.swift +++ b/swift/looker/rtl/constants.swift @@ -51,7 +51,7 @@ extension String { } public struct Constants { - public static let lookerVersion = "26.10" + public static let lookerVersion = "26.12" public static let apiVersion = "4.0" public static let defaultApiVersion = "4.0" // Swift requires API 4.0 public static let sdkVersion = #"\#(apiVersion).\#(lookerVersion)"# diff --git a/swift/looker/sdk/methods.swift b/swift/looker/sdk/methods.swift index bad738093..dc0a4566b 100644 --- a/swift/looker/sdk/methods.swift +++ b/swift/looker/sdk/methods.swift @@ -25,7 +25,7 @@ */ /** - * 512 API methods + * 518 API methods */ @@ -2868,6 +2868,7 @@ open class LookerSDK: APIMethods { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -2914,6 +2915,7 @@ open class LookerSDK: APIMethods { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -9031,6 +9033,75 @@ open class LookerSDK: APIMethods { return result } + /** + * ### Initiate Git Diagnosis Suite + * + * POST /projects/{project_id}/git_diagnostic_report -> GitDiagnosticReport + */ + public func create_git_diagnostic_report( + /** + * @param {String} project_id Looker Project ID + */ + _ project_id: String, + /** + * @param {WriteGitDiagnosticReport} body + */ + _ body: WriteGitDiagnosticReport, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/git_diagnostic_report", nil, try! self.encode(body), options) + return result + } + + /** + * ### Retrieve Live Git Diagnostic Suite Execution Status + * + * GET /projects/{project_id}/git_diagnostic_report/{report_id} -> GitDiagnosticReport + */ + public func get_git_diagnostic_report( + /** + * @param {String} project_id Looker Project ID + */ + _ project_id: String, + /** + * @param {String} report_id Report ID + */ + _ report_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let path_report_id = encodeParam(report_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/git_diagnostic_report/\(path_report_id)", nil, nil, options) + return result + } + + /** + * ### Repair Git Configuration Issues + * + * POST /projects/{project_id}/git_diagnostic_report/{report_id}/repair -> GitDiagnosticReport + */ + public func repair_git_diagnostic_report( + /** + * @param {String} project_id Looker Project ID + */ + _ project_id: String, + /** + * @param {String} report_id Report ID + */ + _ report_id: String, + /** + * @param {WriteGitDiagnosticReport} body + */ + _ body: WriteGitDiagnosticReport, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let path_report_id = encodeParam(report_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/git_diagnostic_report/\(path_report_id)/repair", nil, try! self.encode(body), options) + return result + } + /** * ### Configure Repository Credential for a remote dependency * @@ -11417,6 +11488,23 @@ open class LookerSDK: APIMethods { return result } + /** + * ### Get Generated LookML for a Self Service Model + * + * GET /self_service_models/{model_name}/lookml -> String + */ + public func get_self_service_model_lookml( + /** + * @param {String} model_name Name of self service model + */ + _ model_name: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_model_name = encodeParam(model_name) + let result: SDKResponse = self.get("/self_service_models/\(path_model_name)/lookml", nil, nil, options) + return result + } + /** * ### Update certification for a Self Service Explore * @@ -11717,6 +11805,8 @@ open class LookerSDK: APIMethods { /** * ### Get the default theme * + * This endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead. + * * Returns the active theme object set as the default. * * The **default** theme name can be set in the UI on the Admin|Theme UI page @@ -11725,6 +11815,7 @@ open class LookerSDK: APIMethods { * * GET /themes/default -> Theme */ + @available(*, deprecated) public func default_theme( /** * @param {Date} ts Timestamp representing the target datetime for the active period. Defaults to 'now' @@ -11740,6 +11831,8 @@ open class LookerSDK: APIMethods { /** * ### Set the global default theme by theme name * + * This endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead. + * * Only Admin users can call this function. * * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. @@ -11752,6 +11845,7 @@ open class LookerSDK: APIMethods { * * PUT /themes/default -> Theme */ + @available(*, deprecated) public func set_default_theme( /** * @param {String} name Name of theme to set as default @@ -11764,6 +11858,66 @@ open class LookerSDK: APIMethods { return result } + /** + * ### Get the default theme + * + * Returns the active theme object set as the default. + * + * The **default** theme name can be set in the UI on the Admin|Theme UI page + * + * The optional `ts` parameter can specify a different timestamp than "now." If specified, it returns the default theme at the time indicated. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * GET /themes/default_theme -> Theme + */ + public func default_theme_by_type( + /** + * @param {String} theme_type Theme type. + */ + _ theme_type: String, + /** + * @param {Date} ts Timestamp representing the target datetime for the active period. Defaults to 'now' + */ + ts: Date? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/themes/default_theme", + ["ts": ts as Any?, "theme_type": theme_type], nil, options) + return result + } + + /** + * ### Set the global default theme by theme name + * + * Only Admin users can call this function. + * + * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. + * + * [Create Theme](#!/Theme/create) has detailed information on rules for default and active themes + * + * Returns the new specified default theme object. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * PUT /themes/default_theme -> Theme + */ + public func set_default_theme_by_type( + /** + * @param {String} name Name of theme to set as default + */ + _ name: String, + /** + * @param {String} theme_type Theme type. + */ + _ theme_type: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.put("/themes/default_theme", + ["name": name, "theme_type": theme_type], nil, options) + return result + } + /** * ### Get active themes * @@ -11786,6 +11940,10 @@ open class LookerSDK: APIMethods { * @param {Date} ts Timestamp representing the target datetime for the active period. Defaults to 'now' */ ts: Date? = nil, + /** + * @param {String} theme_type Theme type. + */ + theme_type: String? = nil, /** * @param {String} fields Requested fields. */ @@ -11793,7 +11951,7 @@ open class LookerSDK: APIMethods { options: ITransportSettings? = nil ) -> SDKResponse<[Theme], SDKError> { let result: SDKResponse<[Theme], SDKError> = self.get("/themes/active", - ["name": name, "ts": ts as Any?, "fields": fields], nil, options) + ["name": name, "ts": ts as Any?, "theme_type": theme_type, "fields": fields], nil, options) return result } diff --git a/swift/looker/sdk/models.swift b/swift/looker/sdk/models.swift index 050d24e73..df3758a94 100644 --- a/swift/looker/sdk/models.swift +++ b/swift/looker/sdk/models.swift @@ -25,7 +25,7 @@ */ /** - * 458 API models: 361 Spec, 0 Request, 71 Write, 26 Enum + * 461 API models: 363 Spec, 0 Request, 72 Write, 26 Enum */ @@ -14334,6 +14334,216 @@ public struct GitConnectionTestResult: SDKModel { } +public struct GitDiagnosticIssue: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _id = "id" + case _report_id = "report_id" + case _project_id = "project_id" + case _project_type = "project_type" + case _issue_type = "issue_type" + case _issue_version = "issue_version" + case _state = "state" + case created_at + case updated_at + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _id: AnyString? + /** + * Unique ID of the diagnostic issue. (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + private var _report_id: AnyString? + /** + * Parent diagnostic report ID. (read-only) + */ + public var report_id: String? { + get { _report_id?.value } + set { _report_id = newValue.map(AnyString.init) } + } + + private var _project_id: AnyString? + /** + * Target Looker Project ID. (read-only) + */ + public var project_id: String? { + get { _project_id?.value } + set { _project_id = newValue.map(AnyString.init) } + } + + private var _project_type: AnyString? + /** + * Environment scope (developer/production). (read-only) + */ + public var project_type: String? { + get { _project_type?.value } + set { _project_type = newValue.map(AnyString.init) } + } + + private var _issue_type: AnyString? + /** + * Git diagnostic issue category. (read-only) + */ + public var issue_type: String? { + get { _issue_type?.value } + set { _issue_type = newValue.map(AnyString.init) } + } + + private var _issue_version: AnyString? + /** + * Version schema. (read-only) + */ + public var issue_version: String? { + get { _issue_version?.value } + set { _issue_version = newValue.map(AnyString.init) } + } + + private var _state: AnyString? + /** + * Current execution status. (read-only) + */ + public var state: String? { + get { _state?.value } + set { _state = newValue.map(AnyString.init) } + } + + /** + * Creation timestamp. (read-only) + */ + public var created_at: Date? + + /** + * Last update timestamp. (read-only) + */ + public var updated_at: Date? + + public init(can: StringDictionary? = nil, id: String? = nil, report_id: String? = nil, project_id: String? = nil, project_type: String? = nil, issue_type: String? = nil, issue_version: String? = nil, state: String? = nil, created_at: Date? = nil, updated_at: Date? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._report_id = report_id.map(AnyString.init) + self._project_id = project_id.map(AnyString.init) + self._project_type = project_type.map(AnyString.init) + self._issue_type = issue_type.map(AnyString.init) + self._issue_version = issue_version.map(AnyString.init) + self._state = state.map(AnyString.init) + self.created_at = created_at + self.updated_at = updated_at + } + +} + +public struct GitDiagnosticReport: SDKModel { + + private enum CodingKeys : String, CodingKey { + case can + case _id = "id" + case _project_id = "project_id" + case _user_id = "user_id" + case _state = "state" + case _status = "status" + case created_at + case updated_at + case _project_type = "project_type" + case issues + } + /** + * Operations the current user is able to perform on this object (read-only) + */ + public var can: StringDictionary? + + private var _id: AnyString? + /** + * Unique ID of the git diagnostic report. (read-only) + */ + public var id: String? { + get { _id?.value } + set { _id = newValue.map(AnyString.init) } + } + + private var _project_id: AnyString? + /** + * Target Looker Project ID. (read-only) + */ + public var project_id: String? { + get { _project_id?.value } + set { _project_id = newValue.map(AnyString.init) } + } + + private var _user_id: AnyString? + /** + * ID of the user initiating the diagnosis. (read-only) + */ + public var user_id: String? { + get { _user_id?.value } + set { _user_id = newValue.map(AnyString.init) } + } + + private var _state: AnyString? + /** + * Raw lifecycle state. (read-only) + */ + public var state: String? { + get { _state?.value } + set { _state = newValue.map(AnyString.init) } + } + + private var _status: AnyString? + /** + * Status derived from state. (read-only) + */ + public var status: String? { + get { _status?.value } + set { _status = newValue.map(AnyString.init) } + } + + /** + * Creation time. (read-only) + */ + public var created_at: Date? + + /** + * Update time. (read-only) + */ + public var updated_at: Date? + + private var _project_type: AnyString? + /** + * Project structure type. + */ + public var project_type: String? { + get { _project_type?.value } + set { _project_type = newValue.map(AnyString.init) } + } + + /** + * Diagnostic issues associated with this report. (read-only) + */ + public var issues: [GitDiagnosticIssue]? + + public init(can: StringDictionary? = nil, id: String? = nil, project_id: String? = nil, user_id: String? = nil, state: String? = nil, status: String? = nil, created_at: Date? = nil, updated_at: Date? = nil, project_type: String? = nil, issues: [GitDiagnosticIssue]? = nil) { + self.can = can + self._id = id.map(AnyString.init) + self._project_id = project_id.map(AnyString.init) + self._user_id = user_id.map(AnyString.init) + self._state = state.map(AnyString.init) + self._status = status.map(AnyString.init) + self.created_at = created_at + self.updated_at = updated_at + self._project_type = project_type.map(AnyString.init) + self.issues = issues + } + +} + public struct GitStatus: SDKModel { private enum CodingKeys : String, CodingKey { @@ -14392,6 +14602,13 @@ public struct GoldenQuery: SDKModel { case _last_updated_by_user_id = "last_updated_by_user_id" case created_at case last_updated_at + case _explore = "explore" + case _model = "model" + case _fields = "fields" + case filters + case _sorts = "sorts" + case _limit = "limit" + case _client_id = "client_id" } /** * Operations the current user is able to perform on this object (read-only) @@ -14467,7 +14684,66 @@ public struct GoldenQuery: SDKModel { */ public var last_updated_at: Date? - public init(can: StringDictionary? = nil, id: Int64? = nil, query_id: Int64? = nil, questions: [String]? = nil, answer: String? = nil, is_active: Bool? = nil, created_by_user_id: Int64? = nil, last_updated_by_user_id: Int64? = nil, created_at: Date? = nil, last_updated_at: Date? = nil) { + private var _explore: AnyString? + /** + * The explore name of the golden query (read-only) + */ + public var explore: String? { + get { _explore?.value } + set { _explore = newValue.map(AnyString.init) } + } + + private var _model: AnyString? + /** + * The LookML model name of the golden query (read-only) + */ + public var model: String? { + get { _model?.value } + set { _model = newValue.map(AnyString.init) } + } + + private var _fields: [AnyString]? + /** + * Fields of the associated Looker Query (read-only) + */ + public var fields: [String]? { + get { if let v = _fields { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _fields = v.map { AnyString.init($0) } } else { _fields = nil } } + } + + /** + * Filters of the associated Looker Query (read-only) + */ + public var filters: StringDictionary? + + private var _sorts: [AnyString]? + /** + * Sorts of the associated Looker Query (read-only) + */ + public var sorts: [String]? { + get { if let v = _sorts { return v.map { $0.value } } else { return nil } } + set { if let v = newValue { _sorts = v.map { AnyString.init($0) } } else { _sorts = nil } } + } + + private var _limit: AnyString? + /** + * Limit of the associated Looker Query (read-only) + */ + public var limit: String? { + get { _limit?.value } + set { _limit = newValue.map(AnyString.init) } + } + + private var _client_id: AnyString? + /** + * Client ID of the associated Looker Query (read-only) + */ + public var client_id: String? { + get { _client_id?.value } + set { _client_id = newValue.map(AnyString.init) } + } + + public init(can: StringDictionary? = nil, id: Int64? = nil, query_id: Int64? = nil, questions: [String]? = nil, answer: String? = nil, is_active: Bool? = nil, created_by_user_id: Int64? = nil, last_updated_by_user_id: Int64? = nil, created_at: Date? = nil, last_updated_at: Date? = nil, explore: String? = nil, model: String? = nil, fields: [String]? = nil, filters: StringDictionary? = nil, sorts: [String]? = nil, limit: String? = nil, client_id: String? = nil) { self.can = can self._id = id.map(AnyInt.init) self._query_id = query_id.map(AnyInt.init) @@ -14478,6 +14754,13 @@ public struct GoldenQuery: SDKModel { self._last_updated_by_user_id = last_updated_by_user_id.map(AnyInt.init) self.created_at = created_at self.last_updated_at = last_updated_at + self._explore = explore.map(AnyString.init) + self._model = model.map(AnyString.init) + if let v = fields { _fields = v.map { AnyString.init($0) } } else { _fields = nil } + self.filters = filters + if let v = sorts { _sorts = v.map { AnyString.init($0) } } else { _sorts = nil } + self._limit = limit.map(AnyString.init) + self._client_id = client_id.map(AnyString.init) } } @@ -18606,6 +18889,7 @@ public struct LookmlModelExploreField: SDKModel { private enum CodingKeys : String, CodingKey { case align case _available_custom_timeframes = "available_custom_timeframes" + case timeframe_labels case can_filter case category case _default_filter_value = "default_filter_value" @@ -18682,6 +18966,11 @@ public struct LookmlModelExploreField: SDKModel { set { if let v = newValue { _available_custom_timeframes = v.map { AnyString.init($0) } } else { _available_custom_timeframes = nil } } } + /** + * A map of timeframe keys to their localized labels. (read-only) + */ + public var timeframe_labels: StringDictionary? + /** * Whether it's possible to filter on this field. (read-only) */ @@ -19102,9 +19391,10 @@ public struct LookmlModelExploreField: SDKModel { */ public var convert_tz: Bool? - public init(align: Align? = nil, available_custom_timeframes: [String]? = nil, can_filter: Bool? = nil, category: Category? = nil, default_filter_value: String? = nil, description: String? = nil, dimension_group: String? = nil, drill_fields: [String]? = nil, enumerations: [LookmlModelExploreFieldEnumeration]? = nil, error: String? = nil, field_group_label: String? = nil, field_group_variant: String? = nil, fill_style: FillStyle? = nil, fiscal_month_offset: Int64? = nil, has_allowed_values: Bool? = nil, has_drills_metadata: Bool? = nil, hidden: Bool? = nil, is_filter: Bool? = nil, is_fiscal: Bool? = nil, is_numeric: Bool? = nil, is_timeframe: Bool? = nil, can_time_filter: Bool? = nil, time_interval: LookmlModelExploreFieldTimeInterval? = nil, label: String? = nil, label_from_parameter: String? = nil, label_short: String? = nil, lookml_link: String? = nil, links: [LookmlFieldLink]? = nil, map_layer: LookmlModelExploreFieldMapLayer? = nil, measure: Bool? = nil, name: String? = nil, strict_value_format: Bool? = nil, parameter: Bool? = nil, period_over_period_params: LookmlModelExploreFieldPeriodOverPeriodParams? = nil, permanent: Bool? = nil, primary_key: Bool? = nil, project_name: String? = nil, requires_refresh_on_sort: Bool? = nil, scope: String? = nil, sortable: Bool? = nil, source_file: String? = nil, source_file_path: String? = nil, sql: String? = nil, sql_case: [LookmlModelExploreFieldSqlCase]? = nil, filters: [LookmlModelExploreFieldMeasureFilters]? = nil, suggest_dimension: String? = nil, suggest_explore: String? = nil, suggestable: Bool? = nil, suggestions: [String]? = nil, synonyms: [String]? = nil, tags: [String]? = nil, type: String? = nil, user_attribute_filter_types: [UserAttributeFilterTypes]? = nil, value_format: String? = nil, value_format_name: String? = nil, view: String? = nil, view_label: String? = nil, `dynamic`: Bool? = nil, week_start_day: WeekStartDay? = nil, times_used: Int64? = nil, original_view: String? = nil, datatype: String? = nil, convert_tz: Bool? = nil) { + public init(align: Align? = nil, available_custom_timeframes: [String]? = nil, timeframe_labels: StringDictionary? = nil, can_filter: Bool? = nil, category: Category? = nil, default_filter_value: String? = nil, description: String? = nil, dimension_group: String? = nil, drill_fields: [String]? = nil, enumerations: [LookmlModelExploreFieldEnumeration]? = nil, error: String? = nil, field_group_label: String? = nil, field_group_variant: String? = nil, fill_style: FillStyle? = nil, fiscal_month_offset: Int64? = nil, has_allowed_values: Bool? = nil, has_drills_metadata: Bool? = nil, hidden: Bool? = nil, is_filter: Bool? = nil, is_fiscal: Bool? = nil, is_numeric: Bool? = nil, is_timeframe: Bool? = nil, can_time_filter: Bool? = nil, time_interval: LookmlModelExploreFieldTimeInterval? = nil, label: String? = nil, label_from_parameter: String? = nil, label_short: String? = nil, lookml_link: String? = nil, links: [LookmlFieldLink]? = nil, map_layer: LookmlModelExploreFieldMapLayer? = nil, measure: Bool? = nil, name: String? = nil, strict_value_format: Bool? = nil, parameter: Bool? = nil, period_over_period_params: LookmlModelExploreFieldPeriodOverPeriodParams? = nil, permanent: Bool? = nil, primary_key: Bool? = nil, project_name: String? = nil, requires_refresh_on_sort: Bool? = nil, scope: String? = nil, sortable: Bool? = nil, source_file: String? = nil, source_file_path: String? = nil, sql: String? = nil, sql_case: [LookmlModelExploreFieldSqlCase]? = nil, filters: [LookmlModelExploreFieldMeasureFilters]? = nil, suggest_dimension: String? = nil, suggest_explore: String? = nil, suggestable: Bool? = nil, suggestions: [String]? = nil, synonyms: [String]? = nil, tags: [String]? = nil, type: String? = nil, user_attribute_filter_types: [UserAttributeFilterTypes]? = nil, value_format: String? = nil, value_format_name: String? = nil, view: String? = nil, view_label: String? = nil, `dynamic`: Bool? = nil, week_start_day: WeekStartDay? = nil, times_used: Int64? = nil, original_view: String? = nil, datatype: String? = nil, convert_tz: Bool? = nil) { self.align = align if let v = available_custom_timeframes { _available_custom_timeframes = v.map { AnyString.init($0) } } else { _available_custom_timeframes = nil } + self.timeframe_labels = timeframe_labels self.can_filter = can_filter self.category = category self._default_filter_value = default_filter_value.map(AnyString.init) @@ -25756,6 +26046,7 @@ public struct ScheduledPlan: SDKModel { case scheduled_plan_destination case run_once case include_links + case include_dashboard_summary case _custom_url_base = "custom_url_base" case _custom_url_params = "custom_url_params" case _custom_url_label = "custom_url_label" @@ -25913,6 +26204,11 @@ public struct ScheduledPlan: SDKModel { */ public var include_links: Bool? + /** + * Whether to include a dashboard summary in the scheduled email + */ + public var include_dashboard_summary: Bool? + private var _custom_url_base: AnyString? /** * Custom url domain for the scheduled entity @@ -26055,7 +26351,7 @@ public struct ScheduledPlan: SDKModel { */ public var can: StringDictionary? - public init(name: String? = nil, user_id: String? = nil, run_as_recipient: Bool? = nil, enabled: Bool? = nil, look_id: String? = nil, dashboard_id: String? = nil, lookml_dashboard_id: String? = nil, filters_string: String? = nil, dashboard_filters: String? = nil, require_results: Bool? = nil, require_no_results: Bool? = nil, require_change: Bool? = nil, send_all_results: Bool? = nil, crontab: String? = nil, datagroup: String? = nil, timezone: String? = nil, scheduled_plan_destination: [ScheduledPlanDestination]? = nil, run_once: Bool? = nil, include_links: Bool? = nil, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, pdf_paper_size: String? = nil, pdf_landscape: Bool? = nil, embed: Bool? = nil, color_theme: String? = nil, long_tables: Bool? = nil, pdf_page_breaks: Bool? = nil, tab_ids: [String]? = nil, inline_table_width: Int64? = nil, query_id: String? = nil, id: String? = nil, created_at: Date? = nil, updated_at: Date? = nil, title: String? = nil, user: UserPublic? = nil, next_run_at: Date? = nil, last_run_at: Date? = nil, can: StringDictionary? = nil) { + public init(name: String? = nil, user_id: String? = nil, run_as_recipient: Bool? = nil, enabled: Bool? = nil, look_id: String? = nil, dashboard_id: String? = nil, lookml_dashboard_id: String? = nil, filters_string: String? = nil, dashboard_filters: String? = nil, require_results: Bool? = nil, require_no_results: Bool? = nil, require_change: Bool? = nil, send_all_results: Bool? = nil, crontab: String? = nil, datagroup: String? = nil, timezone: String? = nil, scheduled_plan_destination: [ScheduledPlanDestination]? = nil, run_once: Bool? = nil, include_links: Bool? = nil, include_dashboard_summary: Bool? = nil, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, pdf_paper_size: String? = nil, pdf_landscape: Bool? = nil, embed: Bool? = nil, color_theme: String? = nil, long_tables: Bool? = nil, pdf_page_breaks: Bool? = nil, tab_ids: [String]? = nil, inline_table_width: Int64? = nil, query_id: String? = nil, id: String? = nil, created_at: Date? = nil, updated_at: Date? = nil, title: String? = nil, user: UserPublic? = nil, next_run_at: Date? = nil, last_run_at: Date? = nil, can: StringDictionary? = nil) { self._name = name.map(AnyString.init) self._user_id = user_id.map(AnyString.init) self.run_as_recipient = run_as_recipient @@ -26075,6 +26371,7 @@ public struct ScheduledPlan: SDKModel { self.scheduled_plan_destination = scheduled_plan_destination self.run_once = run_once self.include_links = include_links + self.include_dashboard_summary = include_dashboard_summary self._custom_url_base = custom_url_base.map(AnyString.init) self._custom_url_params = custom_url_params.map(AnyString.init) self._custom_url_label = custom_url_label.map(AnyString.init) @@ -26568,6 +26865,7 @@ public struct SelfServiceModelUploadData: SDKModel { case _upload_type = "upload_type" case _drive_url = "drive_url" case _owner_id = "owner_id" + case _canvas_guid = "canvas_guid" } private var _upload_type: AnyString? /** @@ -26596,10 +26894,20 @@ public struct SelfServiceModelUploadData: SDKModel { set { _owner_id = newValue.map(AnyString.init) } } - public init(upload_type: String? = nil, drive_url: String? = nil, owner_id: String? = nil) { + private var _canvas_guid: AnyString? + /** + * GUID of the visual canvas (read-only) + */ + public var canvas_guid: String? { + get { _canvas_guid?.value } + set { _canvas_guid = newValue.map(AnyString.init) } + } + + public init(upload_type: String? = nil, drive_url: String? = nil, owner_id: String? = nil, canvas_guid: String? = nil) { self._upload_type = upload_type.map(AnyString.init) self._drive_url = drive_url.map(AnyString.init) self._owner_id = owner_id.map(AnyString.init) + self._canvas_guid = canvas_guid.map(AnyString.init) } } @@ -26958,6 +27266,7 @@ public struct Setting: SDKModel { case _managed_certificate_uri = "managed_certificate_uri" case _content_certification_documentation_link = "content_certification_documentation_link" case revoke_certification_on_edits + case automated_mfa_enabled case is_content_certification_enabled case auto_certify_lookml_content case ca_agent_observability @@ -27115,6 +27424,11 @@ public struct Setting: SDKModel { */ public var revoke_certification_on_edits: Bool? + /** + * Automatically enable Multi-Factor Authentication for users. + */ + public var automated_mfa_enabled: Bool? + /** * Allow content certification. */ @@ -27126,13 +27440,13 @@ public struct Setting: SDKModel { public var auto_certify_lookml_content: Bool? /** - * Toggle CA agent observability + * Toggle Conversational Analytics Agent Token usage */ public var ca_agent_observability: Bool? public var mcp_tools: McpTools? - public init(instance_config: InstanceConfig? = nil, extension_framework_enabled: Bool? = nil, extension_load_url_enabled: Bool? = nil, marketplace_auto_install_enabled: Bool? = nil, marketplace_automation: MarketplaceAutomation? = nil, marketplace_enabled: Bool? = nil, marketplace_site: String? = nil, marketplace_terms_accepted: Bool? = nil, privatelabel_configuration: PrivatelabelConfiguration? = nil, custom_welcome_email: CustomWelcomeEmail? = nil, onboarding_enabled: Bool? = nil, timezone: String? = nil, allow_user_timezones: Bool? = nil, data_connector_default_enabled: Bool? = nil, host_url: String? = nil, override_warnings: Bool? = nil, email_domain_allowlist: [String]? = nil, embed_cookieless_v2: Bool? = nil, embed_enabled: Bool? = nil, embed_config: EmbedConfig? = nil, login_notification_enabled: Bool? = nil, login_notification_text: String? = nil, dashboard_auto_refresh_restriction: Bool? = nil, dashboard_auto_refresh_minimum_interval: String? = nil, managed_certificate_uri: [String]? = nil, content_certification_documentation_link: String? = nil, revoke_certification_on_edits: Bool? = nil, is_content_certification_enabled: Bool? = nil, auto_certify_lookml_content: Bool? = nil, ca_agent_observability: Bool? = nil, mcp_tools: McpTools? = nil) { + public init(instance_config: InstanceConfig? = nil, extension_framework_enabled: Bool? = nil, extension_load_url_enabled: Bool? = nil, marketplace_auto_install_enabled: Bool? = nil, marketplace_automation: MarketplaceAutomation? = nil, marketplace_enabled: Bool? = nil, marketplace_site: String? = nil, marketplace_terms_accepted: Bool? = nil, privatelabel_configuration: PrivatelabelConfiguration? = nil, custom_welcome_email: CustomWelcomeEmail? = nil, onboarding_enabled: Bool? = nil, timezone: String? = nil, allow_user_timezones: Bool? = nil, data_connector_default_enabled: Bool? = nil, host_url: String? = nil, override_warnings: Bool? = nil, email_domain_allowlist: [String]? = nil, embed_cookieless_v2: Bool? = nil, embed_enabled: Bool? = nil, embed_config: EmbedConfig? = nil, login_notification_enabled: Bool? = nil, login_notification_text: String? = nil, dashboard_auto_refresh_restriction: Bool? = nil, dashboard_auto_refresh_minimum_interval: String? = nil, managed_certificate_uri: [String]? = nil, content_certification_documentation_link: String? = nil, revoke_certification_on_edits: Bool? = nil, automated_mfa_enabled: Bool? = nil, is_content_certification_enabled: Bool? = nil, auto_certify_lookml_content: Bool? = nil, ca_agent_observability: Bool? = nil, mcp_tools: McpTools? = nil) { self.instance_config = instance_config self.extension_framework_enabled = extension_framework_enabled self.extension_load_url_enabled = extension_load_url_enabled @@ -27160,6 +27474,7 @@ public struct Setting: SDKModel { if let v = managed_certificate_uri { _managed_certificate_uri = v.map { AnyString.init($0) } } else { _managed_certificate_uri = nil } self._content_certification_documentation_link = content_certification_documentation_link.map(AnyString.init) self.revoke_certification_on_edits = revoke_certification_on_edits + self.automated_mfa_enabled = automated_mfa_enabled self.is_content_certification_enabled = is_content_certification_enabled self.auto_certify_lookml_content = auto_certify_lookml_content self.ca_agent_observability = ca_agent_observability @@ -33762,9 +34077,33 @@ public struct WriteGitBranch: SDKModel { } +/** + * Dynamic writeable type for GitDiagnosticReport removes: + * can, id, project_id, user_id, state, status, created_at, updated_at, issues + */ +public struct WriteGitDiagnosticReport: SDKModel { + + private enum CodingKeys : String, CodingKey { + case _project_type = "project_type" + } + private var _project_type: AnyString? + /** + * Project structure type. + */ + public var project_type: String? { + get { _project_type?.value } + set { _project_type = newValue.map(AnyString.init) } + } + + public init(project_type: String? = nil) { + self._project_type = project_type.map(AnyString.init) + } + +} + /** * Dynamic writeable type for GoldenQuery removes: - * can, id, query_id, created_by_user_id, last_updated_by_user_id, created_at, last_updated_at + * can, id, query_id, created_by_user_id, last_updated_by_user_id, created_at, last_updated_at, explore, model, fields, filters, sorts, limit, client_id */ public struct WriteGoldenQuery: SDKModel { @@ -36356,6 +36695,7 @@ public struct WriteScheduledPlan: SDKModel { case scheduled_plan_destination case run_once case include_links + case include_dashboard_summary case _custom_url_base = "custom_url_base" case _custom_url_params = "custom_url_params" case _custom_url_label = "custom_url_label" @@ -36505,6 +36845,11 @@ public struct WriteScheduledPlan: SDKModel { */ public var include_links: Bool? + /** + * Whether to include a dashboard summary in the scheduled email + */ + public var include_dashboard_summary: Bool? + private var _custom_url_base: AnyString? /** * Custom url domain for the scheduled entity @@ -36602,7 +36947,7 @@ public struct WriteScheduledPlan: SDKModel { set { _query_id = newValue.map(AnyString.init) } } - public init(name: String? = nil, user_id: String? = nil, run_as_recipient: Bool? = nil, enabled: Bool? = nil, look_id: String? = nil, dashboard_id: String? = nil, lookml_dashboard_id: String? = nil, filters_string: String? = nil, dashboard_filters: String? = nil, require_results: Bool? = nil, require_no_results: Bool? = nil, require_change: Bool? = nil, send_all_results: Bool? = nil, crontab: String? = nil, datagroup: String? = nil, timezone: String? = nil, scheduled_plan_destination: [ScheduledPlanDestination]? = nil, run_once: Bool? = nil, include_links: Bool? = nil, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, pdf_paper_size: String? = nil, pdf_landscape: Bool? = nil, embed: Bool? = nil, color_theme: String? = nil, long_tables: Bool? = nil, pdf_page_breaks: Bool? = nil, tab_ids: [String]? = nil, inline_table_width: Int64? = nil, query_id: String? = nil) { + public init(name: String? = nil, user_id: String? = nil, run_as_recipient: Bool? = nil, enabled: Bool? = nil, look_id: String? = nil, dashboard_id: String? = nil, lookml_dashboard_id: String? = nil, filters_string: String? = nil, dashboard_filters: String? = nil, require_results: Bool? = nil, require_no_results: Bool? = nil, require_change: Bool? = nil, send_all_results: Bool? = nil, crontab: String? = nil, datagroup: String? = nil, timezone: String? = nil, scheduled_plan_destination: [ScheduledPlanDestination]? = nil, run_once: Bool? = nil, include_links: Bool? = nil, include_dashboard_summary: Bool? = nil, custom_url_base: String? = nil, custom_url_params: String? = nil, custom_url_label: String? = nil, show_custom_url: Bool? = nil, pdf_paper_size: String? = nil, pdf_landscape: Bool? = nil, embed: Bool? = nil, color_theme: String? = nil, long_tables: Bool? = nil, pdf_page_breaks: Bool? = nil, tab_ids: [String]? = nil, inline_table_width: Int64? = nil, query_id: String? = nil) { self._name = name.map(AnyString.init) self._user_id = user_id.map(AnyString.init) self.run_as_recipient = run_as_recipient @@ -36622,6 +36967,7 @@ public struct WriteScheduledPlan: SDKModel { self.scheduled_plan_destination = scheduled_plan_destination self.run_once = run_once self.include_links = include_links + self.include_dashboard_summary = include_dashboard_summary self._custom_url_base = custom_url_base.map(AnyString.init) self._custom_url_params = custom_url_params.map(AnyString.init) self._custom_url_label = custom_url_label.map(AnyString.init) @@ -36751,6 +37097,7 @@ public struct WriteSetting: SDKModel { case _managed_certificate_uri = "managed_certificate_uri" case _content_certification_documentation_link = "content_certification_documentation_link" case revoke_certification_on_edits + case automated_mfa_enabled case is_content_certification_enabled case auto_certify_lookml_content case ca_agent_observability @@ -36886,6 +37233,11 @@ public struct WriteSetting: SDKModel { */ public var revoke_certification_on_edits: Bool? + /** + * Automatically enable Multi-Factor Authentication for users. + */ + public var automated_mfa_enabled: Bool? + /** * Allow content certification. */ @@ -36897,7 +37249,7 @@ public struct WriteSetting: SDKModel { public var auto_certify_lookml_content: Bool? /** - * Toggle CA agent observability + * Toggle Conversational Analytics Agent Token usage */ public var ca_agent_observability: Bool? @@ -36906,7 +37258,7 @@ public struct WriteSetting: SDKModel { */ public var mcp_tools: WriteMcpTools? - public init(extension_framework_enabled: Bool? = nil, extension_load_url_enabled: Bool? = nil, marketplace_auto_install_enabled: Bool? = nil, marketplace_automation: MarketplaceAutomation? = nil, marketplace_enabled: Bool? = nil, marketplace_terms_accepted: Bool? = nil, privatelabel_configuration: WritePrivatelabelConfiguration? = nil, custom_welcome_email: CustomWelcomeEmail? = nil, onboarding_enabled: Bool? = nil, timezone: String? = nil, allow_user_timezones: Bool? = nil, data_connector_default_enabled: Bool? = nil, host_url: String? = nil, override_warnings: Bool? = nil, email_domain_allowlist: [String]? = nil, embed_cookieless_v2: Bool? = nil, embed_config: WriteEmbedConfig? = nil, dashboard_auto_refresh_restriction: Bool? = nil, dashboard_auto_refresh_minimum_interval: String? = nil, managed_certificate_uri: [String]? = nil, content_certification_documentation_link: String? = nil, revoke_certification_on_edits: Bool? = nil, is_content_certification_enabled: Bool? = nil, auto_certify_lookml_content: Bool? = nil, ca_agent_observability: Bool? = nil, mcp_tools: WriteMcpTools? = nil) { + public init(extension_framework_enabled: Bool? = nil, extension_load_url_enabled: Bool? = nil, marketplace_auto_install_enabled: Bool? = nil, marketplace_automation: MarketplaceAutomation? = nil, marketplace_enabled: Bool? = nil, marketplace_terms_accepted: Bool? = nil, privatelabel_configuration: WritePrivatelabelConfiguration? = nil, custom_welcome_email: CustomWelcomeEmail? = nil, onboarding_enabled: Bool? = nil, timezone: String? = nil, allow_user_timezones: Bool? = nil, data_connector_default_enabled: Bool? = nil, host_url: String? = nil, override_warnings: Bool? = nil, email_domain_allowlist: [String]? = nil, embed_cookieless_v2: Bool? = nil, embed_config: WriteEmbedConfig? = nil, dashboard_auto_refresh_restriction: Bool? = nil, dashboard_auto_refresh_minimum_interval: String? = nil, managed_certificate_uri: [String]? = nil, content_certification_documentation_link: String? = nil, revoke_certification_on_edits: Bool? = nil, automated_mfa_enabled: Bool? = nil, is_content_certification_enabled: Bool? = nil, auto_certify_lookml_content: Bool? = nil, ca_agent_observability: Bool? = nil, mcp_tools: WriteMcpTools? = nil) { self.extension_framework_enabled = extension_framework_enabled self.extension_load_url_enabled = extension_load_url_enabled self.marketplace_auto_install_enabled = marketplace_auto_install_enabled @@ -36929,6 +37281,7 @@ public struct WriteSetting: SDKModel { if let v = managed_certificate_uri { _managed_certificate_uri = v.map { AnyString.init($0) } } else { _managed_certificate_uri = nil } self._content_certification_documentation_link = content_certification_documentation_link.map(AnyString.init) self.revoke_certification_on_edits = revoke_certification_on_edits + self.automated_mfa_enabled = automated_mfa_enabled self.is_content_certification_enabled = is_content_certification_enabled self.auto_certify_lookml_content = auto_certify_lookml_content self.ca_agent_observability = ca_agent_observability diff --git a/swift/looker/sdk/streams.swift b/swift/looker/sdk/streams.swift index 0e260052d..6b10e7313 100644 --- a/swift/looker/sdk/streams.swift +++ b/swift/looker/sdk/streams.swift @@ -25,7 +25,7 @@ */ /** - * 512 API methods + * 518 API methods */ @@ -2866,6 +2866,7 @@ open class LookerSDKStream: APIMethods { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -2912,6 +2913,7 @@ open class LookerSDKStream: APIMethods { * - onboarding_enabled * - privatelabel_configuration * - revoke_certification_on_edits + * - automated_mfa_enabled * - timezone * - host_url * - email_domain_allowlist @@ -9029,6 +9031,75 @@ open class LookerSDKStream: APIMethods { return result } + /** + * ### Initiate Git Diagnosis Suite + * + * POST /projects/{project_id}/git_diagnostic_report -> GitDiagnosticReport + */ + public func create_git_diagnostic_report( + /** + * @param {String} project_id Looker Project ID + */ + _ project_id: String, + /** + * @param {WriteGitDiagnosticReport} body + */ + _ body: WriteGitDiagnosticReport, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/git_diagnostic_report", nil, try! self.encode(body), options) + return result + } + + /** + * ### Retrieve Live Git Diagnostic Suite Execution Status + * + * GET /projects/{project_id}/git_diagnostic_report/{report_id} -> GitDiagnosticReport + */ + public func get_git_diagnostic_report( + /** + * @param {String} project_id Looker Project ID + */ + _ project_id: String, + /** + * @param {String} report_id Report ID + */ + _ report_id: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let path_report_id = encodeParam(report_id) + let result: SDKResponse = self.get("/projects/\(path_project_id)/git_diagnostic_report/\(path_report_id)", nil, nil, options) + return result + } + + /** + * ### Repair Git Configuration Issues + * + * POST /projects/{project_id}/git_diagnostic_report/{report_id}/repair -> GitDiagnosticReport + */ + public func repair_git_diagnostic_report( + /** + * @param {String} project_id Looker Project ID + */ + _ project_id: String, + /** + * @param {String} report_id Report ID + */ + _ report_id: String, + /** + * @param {WriteGitDiagnosticReport} body + */ + _ body: WriteGitDiagnosticReport, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_project_id = encodeParam(project_id) + let path_report_id = encodeParam(report_id) + let result: SDKResponse = self.post("/projects/\(path_project_id)/git_diagnostic_report/\(path_report_id)/repair", nil, try! self.encode(body), options) + return result + } + /** * ### Configure Repository Credential for a remote dependency * @@ -11415,6 +11486,23 @@ open class LookerSDKStream: APIMethods { return result } + /** + * ### Get Generated LookML for a Self Service Model + * + * GET /self_service_models/{model_name}/lookml -> String + */ + public func get_self_service_model_lookml( + /** + * @param {String} model_name Name of self service model + */ + _ model_name: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let path_model_name = encodeParam(model_name) + let result: SDKResponse = self.get("/self_service_models/\(path_model_name)/lookml", nil, nil, options) + return result + } + /** * ### Update certification for a Self Service Explore * @@ -11715,6 +11803,8 @@ open class LookerSDKStream: APIMethods { /** * ### Get the default theme * + * This endpoint is deprecated. [Get Default Theme (with type)](#!/Theme/default_theme_by_type) should be used instead. + * * Returns the active theme object set as the default. * * The **default** theme name can be set in the UI on the Admin|Theme UI page @@ -11723,6 +11813,7 @@ open class LookerSDKStream: APIMethods { * * GET /themes/default -> Theme */ + @available(*, deprecated) public func default_theme( /** * @param {Date} ts Timestamp representing the target datetime for the active period. Defaults to 'now' @@ -11738,6 +11829,8 @@ open class LookerSDKStream: APIMethods { /** * ### Set the global default theme by theme name * + * This endpoint is deprecated. [Set Default Theme (with type)](#!/Theme/set_default_theme_by_type) should be used instead. + * * Only Admin users can call this function. * * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. @@ -11750,6 +11843,7 @@ open class LookerSDKStream: APIMethods { * * PUT /themes/default -> Theme */ + @available(*, deprecated) public func set_default_theme( /** * @param {String} name Name of theme to set as default @@ -11762,6 +11856,66 @@ open class LookerSDKStream: APIMethods { return result } + /** + * ### Get the default theme + * + * Returns the active theme object set as the default. + * + * The **default** theme name can be set in the UI on the Admin|Theme UI page + * + * The optional `ts` parameter can specify a different timestamp than "now." If specified, it returns the default theme at the time indicated. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * GET /themes/default_theme -> Theme + */ + public func default_theme_by_type( + /** + * @param {String} theme_type Theme type. + */ + _ theme_type: String, + /** + * @param {Date} ts Timestamp representing the target datetime for the active period. Defaults to 'now' + */ + ts: Date? = nil, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.get("/themes/default_theme", + ["ts": ts as Any?, "theme_type": theme_type], nil, options) + return result + } + + /** + * ### Set the global default theme by theme name + * + * Only Admin users can call this function. + * + * Only an active theme with no expiration (`end_at` not set) can be assigned as the default theme. As long as a theme has an active record with no expiration, it can be set as the default. + * + * [Create Theme](#!/Theme/create) has detailed information on rules for default and active themes + * + * Returns the new specified default theme object. + * + * The optional `theme_type` parameter can specify the theme type to select for. + * + * PUT /themes/default_theme -> Theme + */ + public func set_default_theme_by_type( + /** + * @param {String} name Name of theme to set as default + */ + _ name: String, + /** + * @param {String} theme_type Theme type. + */ + _ theme_type: String, + options: ITransportSettings? = nil + ) -> SDKResponse { + let result: SDKResponse = self.put("/themes/default_theme", + ["name": name, "theme_type": theme_type], nil, options) + return result + } + /** * ### Get active themes * @@ -11784,6 +11938,10 @@ open class LookerSDKStream: APIMethods { * @param {Date} ts Timestamp representing the target datetime for the active period. Defaults to 'now' */ ts: Date? = nil, + /** + * @param {String} theme_type Theme type. + */ + theme_type: String? = nil, /** * @param {String} fields Requested fields. */ @@ -11791,7 +11949,7 @@ open class LookerSDKStream: APIMethods { options: ITransportSettings? = nil ) -> SDKResponse { let result: SDKResponse = self.get("/themes/active", - ["name": name, "ts": ts as Any?, "fields": fields], nil, options) + ["name": name, "ts": ts as Any?, "theme_type": theme_type, "fields": fields], nil, options) return result }